PhotoShop算法实现--色彩均衡化(十一)
来源:互联网 发布:则知明而行无过矣的知 编辑:程序博客网 时间:2024/05/16 17:34
PhotoShop算法实现--色彩均衡化(十一)
kezunhai@gmail.com
http://blog.csdn.net/kezunhai
彩色均衡化(Equalizer)就是要增大亮度间隔,使其呈均匀化分布,减少反差,从而修正图像中的某些不足的地方,使图像细节变得清晰。
实现原理:图像均衡化的基本思想就是将出现频率较小的亮度级并入到邻近的亮度级中,从而拉开亮度间隔,较少亮度等级,使其呈均匀分布,弱化其反差。实现方法:对图像进行直方图信息统计,再根据均衡化的基本思想对个亮度级的分布概率做均衡化处理,产生一个256级亮度的映射表,最后对图像进行亮度映射处理。
实现代码:
void PhotoShop::Equalizer(Mat& img, Mat& gImg){if ( gImg.empty())gImg.create(img.rows, img.cols, CV_8UC1);int i, j;Size size = img.size();float total = size.width* size.height;int Count[256] = {0}; //统计float Probability[256]={0}; // 概率float fSum[256] ={0}; // 概率累加uchar level[256]={0}; // 重新分布灰度if (img.isContinuous() && gImg.isContinuous()){size.width *= size.height; size.height = 1;}for ( i= 0; i<size.height; ++i){const unsigned char* src = (const unsigned char*)img.data+ img.step*i;for ( j=0; j<size.width; ++j){Count[src[j]]++;}}for ( i=0; i<256; i++){Probability[i] = Count[i]/total;if ( i ==0)fSum[0] = Probability[0];elsefSum[i] = fSum[i-1]+Probability[i];level[i] = saturate_cast<uchar>(255*fSum[i]+0.5);}for ( i= 0; i<size.height; ++i){const unsigned char* src = (const unsigned char*)img.data+ img.step*i;unsigned char* dst = (unsigned char*)gImg.data +gImg.step*i;for ( j=0; j<size.width; ++j){dst[j] = level[src[j]];}}实现效果:
经过直方图处理的图像不一定效果比原图好,进行直方图均衡存在如下两个缺点:
(1)变换后图像的亮度级减少,某些细节信息丢失。
(2)某些图像经过处理后对比度过分被增强。
为此,M.Kamel等人从图像相邻像素相关这一事实出发,将亮度概率分布和空间分布联系在一起,提出了用二维条件概率密度函数取代一维概率密度函数作为均衡化的条件,很好地解决了这个问题,感兴趣的朋友可以查阅相关资料。
作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。
0 0
- PhotoShop算法实现--色彩均衡化(十一)
- PhotoShop算法实现--色彩通道(九)
- PhotoShop算法实现高级篇--色彩特效(三十五)
- 自动色彩均衡算法(ACE)原理及实现
- PhotoShop算法实现进阶-模糊滤镜-平滑(二十一)
- PhotoShop算法实现--色彩平衡(偏色校正)(一)
- 自动色彩均衡(ACE)快速算法
- photoshop中常见色彩模式(一)
- PhotoShop算法实现--图像灰度化处理(六)
- PhotoShop算法实现--直方图(十)
- PhotoShop算法实现-- 图像平移(十五)
- PhotoShop算法实现--图像缩放(十八)
- PhotoShop算法实现--图像旋转(十九)
- photoshop的色彩模式
- Photoshop调整图像色彩
- photoshop--色彩管理
- Photoshop学习(三)色彩与图像偏色处理
- 限制对比度自适应直方图均衡化算法(CLAHE)实现
- HDU1812 Count the Tetris
- OC里面的集中数组遍历方法
- 北京人文之旅
- leetcode: Binary Tree Inorder Traversal
- nyoj195 飞翔
- PhotoShop算法实现--色彩均衡化(十一)
- python中闭包的实现
- cocos2dx lua中继承与覆盖C++方法
- 【管理心得之四十五】你呀,没心
- centos6.5配置FTP站点vsftpd的问题
- Leetcode_66_Plus One
- ffmpeg_doc(二)decoding_encodeing.c
- lucene自定义过滤器Filter
- uva-122 树的层次遍历