直方图均衡化
2016-06-28 10:14
309 查看
直方图均衡化:
增强图像的对比度,增强图像的视觉效果,提高图像成分的清晰度;便于计算机处理: 原因 :
颜色直方图包含了图像中的颜色信息,反应了颜色的数量特征,它描述的是不同色彩在整幅图相中所占的比例,并不关心每种色彩所处的控件位置,即无法描述图像中的对象或物体。
其主要步骤为:
(1)求出原图像直方图;
(2)根据原直方图求出灰度值的变换表
(3)X=H(x),这里H(x)是对1、2、中的灰度值变换进行查表变换操作,得出对应的像素点新的灰度值;(模糊的短图像用到此方法进行预处理);
其基本原理:
![](https://images2015.cnblogs.com/blog/732403/201606/732403-20160627093806031-624690551.jpg)
反映数字图像的概貌性描述,例如图像的灰度范围,灰度的分布,整幅图像的平均亮度和阴暗对比度等,并可由此得出进一步处理的重要依据。直方图均衡化也叫直方图均匀化,就是把给定图像的直方图分布改变成均匀分布的直方图,它是一种常用的灰度增强算法。
代码示例如下:
![](https://images2015.cnblogs.com/blog/732403/201606/732403-20160627140912484-1965710511.png)
核心代码如下:
增强图像的对比度,增强图像的视觉效果,提高图像成分的清晰度;便于计算机处理: 原因 :
颜色直方图包含了图像中的颜色信息,反应了颜色的数量特征,它描述的是不同色彩在整幅图相中所占的比例,并不关心每种色彩所处的控件位置,即无法描述图像中的对象或物体。
其主要步骤为:
(1)求出原图像直方图;
(2)根据原直方图求出灰度值的变换表
(3)X=H(x),这里H(x)是对1、2、中的灰度值变换进行查表变换操作,得出对应的像素点新的灰度值;(模糊的短图像用到此方法进行预处理);
其基本原理:
![](https://images2015.cnblogs.com/blog/732403/201606/732403-20160627093806031-624690551.jpg)
反映数字图像的概貌性描述,例如图像的灰度范围,灰度的分布,整幅图像的平均亮度和阴暗对比度等,并可由此得出进一步处理的重要依据。直方图均衡化也叫直方图均匀化,就是把给定图像的直方图分布改变成均匀分布的直方图,它是一种常用的灰度增强算法。
代码示例如下:
![](https://images2015.cnblogs.com/blog/732403/201606/732403-20160627140912484-1965710511.png)
核心代码如下:
public void PicAverage(string path, int hight, int length, string resultPath) { byte[,] pic = this.GetPic(path, hight, length); int size = hight * length; int[] graydenss = new int[256]; for (int i = 0; i < hight; i++) { for (int j = 0; j < length; j++) { graydenss[Convert.ToInt16(pic[i, j])] += 1;//直方图均值化 } } for (int i = 1; i < 256; i++)//计算分布率 { graydenss[i] += graydenss[i - 1]; } float fNormalizeConstant = (float)255 / size; for (int i = 0; i < 255; i++) { graydenss[i] = Convert.ToInt16(graydenss[i] * fNormalizeConstant); } byte[,] picResult = new byte[hight, length]; for (int i = 0; i < hight; i++) { for (int j = 0; j < length; j++) { float color = Convert.ToSingle(pic[i, j]); float colorResult = 0; if (color == 0) { colorResult = 0; } else { colorResult = Convert.ToSingle(graydenss[Convert.ToInt16(pic[i, j])]); } picResult[i, j] = Convert.ToByte(colorResult); } } this.SaveAveragePic(resultPath, hight, length, picResult);//保存处理好的图片 }
相关文章推荐
- UITouch 触摸事件处理(实例)
- SQL Server批量数据导出导入BCP&Bulk使用
- UESTC 86 Divide (二进制贪心)
- 【论文笔记】Text-Recognition_简略版_201606
- RO、RW、ZI和.text .bss .data
- Junittest
- Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mou
- 专题四1008
- 开源GIS浅谈
- unix时间戳与时间
- react 的 bind this 几种方法
- django 模板语法
- 利用xml获取土豆网的[无广告]的视频地址
- 飞速流量压缩仪app v2.2.0官方iphone版
- 分享.NET基于Live555开发的视频直播流媒体项目
- django 实例演示
- Apple 官方文档翻译:NSURLSession
- thinkphp 3.2加载类
- 函数指针基础的学习记录
- Android使用vcard文件的方法简单实例