关于图像直方图均衡化的原理和步骤先不作讨论,我就看看代码吧。

  private Bitmap picequalization(Bitmap basemap, int width, int height)
{
Bitmap retmap = new Bitmap(basemap, width, height);
int size = width * height;
int[] gray = new int[];
double[] graydense = new double[];
for(int i=;i<width;++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i,j);
gray[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
graydense[i] = (gray[i]*1.0) / size;
} for (int i = ; i < ; i++)
{
graydense[i] += graydense[i-];
} for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i, j);
int gg = Convert.ToInt16(pixel.R);
int g = ;
if(gg==)
g=;
else
g =Convert.ToInt16( graydense[Convert.ToInt16(pixel.R)] * Convert.ToInt16(pixel.R)); pixel = Color.FromArgb(g,g,g);
retmap.SetPixel(i, j, pixel);
//gray[Convert.ToInt16(pixel.R)] += 1;
}
return retmap;
}
 private Bitmap rgb2gray(Bitmap basemap,int width,int height)
{
Bitmap retmap = new Bitmap(basemap, width, height);
for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = basemap.GetPixel(i, j);
pixel = getgray(Convert.ToByte(pixel.R), Convert.ToByte(pixel.G), Convert.ToByte(pixel.B));
retmap.SetPixel(i, j, pixel);
}
return retmap;
} private Color getgray(int r, int g, int b)
{
int gray = ;
gray = (r * + g * + b * + ) / ; Color retcolor = Color.FromArgb(gray,gray,gray);
return retcolor;
}
/// <summary>
/// 获取直方图数据
/// </summary>
/// <param name="rule"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
private double[] getsquare(Bitmap rule, int width, int height)
{
//double[] rule = new double[256];
int sizerule = width * height;
int[] grayrule = new int[];
double[] grayruledense = new double[];
for (int i = ; i < width; ++i)
for (int j = ; j < height; ++j)
{
Color pixel = rule.GetPixel(i, j);
grayrule[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
grayruledense[i] = (grayrule[i] * 1.0) / sizerule;
}
return grayruledense;
} private double[] getrule(Bitmap rule, int rulewidth, int heightrule)
{
//double[] rule = new double[256];
int sizerule = rulewidth * heightrule;
int[] grayrule = new int[];
double[] grayruledense = new double[];
for (int i = ; i < rulewidth; ++i)
for (int j = ; j < heightrule; ++j)
{
Color pixel = rule.GetPixel(i, j);
grayrule[Convert.ToInt16(pixel.R)] += ;
}
for (int i = ; i < ; i++)
{
grayruledense[i] = (grayrule[i] * 1.0) / sizerule;
}
return grayruledense;
}
private double[] getdense(double[] zhifang)
{
for (int i = ; i < ; i++)
{
zhifang[i] += zhifang[i - ];
}
return zhifang;
}

图像直方图均衡化(C#)的更多相关文章

  1. Python实现图像直方图均衡化算法

    title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

  2. opencv图像直方图均衡化及其原理

    直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...

  3. opencv:图像直方图均衡化

    // 直方图均衡化 Mat gray, dst; cvtColor(src, gray, COLOR_BGR2GRAY); equalizeHist(gray, dst); imshow(" ...

  4. OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...

  5. Win8Metro(C#)数字图像处理--2.30直方图均衡化

    原文:Win8Metro(C#)数字图像处理--2.30直方图均衡化 [函数名称] 直方图均衡化函数HistogramEqualProcess(WriteableBitmap src) [算法说明] ...

  6. python实现直方图均衡化,理想高通滤波与高斯低通滤波

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验二,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验二. 由于时间紧张,代码没有进行任何优化, ...

  7. 机器学习进阶-直方图与傅里叶变化-直方图均衡化 1.cv2.equalizeHist(进行直方图均衡化) 2. cv2.createCLAHA(用于生成自适应均衡化图像)

    1. cv2.equalizeHist(img)  # 表示进行直方图均衡化 参数说明:img表示输入的图片 2.cv2.createCLAHA(clipLimit=8.0, titleGridSiz ...

  8. opencv 5 图像转换(3 重映射 仿射变换 直方图均衡化)

    重映射 实现重映射(remap函数) 基础示例程序:基本重映射 //---------------------------------[头文件.命名空间包含部分]------------------- ...

  9. 图解直方图均衡化及其Python实现

    在理解直方图均衡化的过程中,参考了一些书籍和博客,让人困惑的是,笔者对于直方图的理解还是停留在表面,并没有深入理解其内涵.因此,本文拟结合图片对直方图的概念进行阐述,并给出其Python实现,最后对她 ...

随机推荐

  1. mongo索引(转)

    转自  :https://www.cnblogs.com/efforts-will-be-lucky/p/7324789.html 默认索引 对于每一个集合(除了capped集合),默认会在_id字段 ...

  2. RQNOJ PID4 数列

    题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是 ...

  3. shell 检查文件夹是否包含文件,或者只是空文件

    empty_dir_check(){ check_dir=$ if [ -d $check_dir ];then file_list=` -maxdepth -type f` if [ $file_l ...

  4. exe自启动的几种方式

    1 注册表启动项目RUN (注册路径 HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\Windows\CurrentVersion\Run) 2 计划任务 比较少见这种方式 ...

  5. nfs下的exportfs命令和nfs客户端重新挂载

    工作中,如果使用了nfs服务器,会遇到修改nfs服务器配置的情况,如果想重新让客户端加载上修改后的配置,但是又不能重启rpcbind服务,我们需要使用export命令了 exportfs命令 常用选项 ...

  6. MS Sql添加描述信息 及其他信息

    --查询某个表的描述 SELECT * FROM fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '(表名)',NULL, NULL) - ...

  7. POJ 2135 /// 最小费用流最大流 非负花费 BellmanFord模板

    题目大意: 给定一个n个点m条边的无向图 求从点1去点n再从点n回点1的不重叠(同一条边不能走两次)的最短路 挑战P239 求去和回的两条最短路很难保证不重叠 直接当做是由1去n的两条不重叠的最短路 ...

  8. usb-host与外设通信(三)

    4.与设备之间的通信 和USB设备通信可以是同步的或者是异步的,无论是哪一种情况,你都应该创建一个新的线程来处理数据传输,这样才不会使UI线程出现阻塞.与设备建立适宜的通信,你需要获得该设备一个合适的 ...

  9. CSS兼容问题资料汇集

    CSS兼容问题一直困扰着CSSer,面对各浏览器,往往感觉束手无策,愁眉不展.CSS Hack是在标准CSS没办法兼容各浏览器显示效果时才会用上的补救方法,在各浏览器厂商解析CSS没有达成一致前,我们 ...

  10. 关于EntityFramework 更新数据记录时字段全部更新问题和不从数据库中获取直接更新记录

    一.一直对这个比较疑惑感觉只修改一条数据记录的一个字段结果更新Savechages后跟踪生成sql竟然是全部被修改,感觉微软怎么这么傻,总觉得会有其它方式可以只更新部分字段,但一直没有找到相关设置,最 ...