一般地,图像对比度都是在灰度图上进行增强,这在我的一篇文章中已经给出了实现方法(http://blog.csdn.net/abcjennifer/article/details/7401921),最通常的办法就是直方图均衡化,而彩色图像的对比度增强其实道理相同。这里给出我的实现方法:

首先将RGB图像转到YCbCr分量,然后对Y分量上的图像进行直方图均衡化,最后进行图像合成。详见代码~(*^__^*)

/*
*@Function: Color image contrast enhancement
*@Date: 2012-4-5
*@Author: 张睿卿
*/int ImageStretchByHistogram(IplImage *src1,IplImage *dst1)
/*************************************************
Function:      通过直方图变换进行图像增强,将图像灰度的域值拉伸到0-255
src1:               单通道灰度图像
dst1:              同样大小的单通道灰度图像
*************************************************/
{assert(src1->width==dst1->width);double p[256],p1[256],num[256];memset(p,0,sizeof(p));memset(p1,0,sizeof(p1));memset(num,0,sizeof(num));int height=src1->height;int width=src1->width;long wMulh = height * width;//statisticsfor(int x=0;x<src1->width;x++){for(int y=0;y<src1-> height;y++){uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];num[v]++;}}//calculate probabilityfor(int i=0;i<256;i++){p[i]=num[i]/wMulh;}//p1[i]=sum(p[j]);   j<=i;for(int i=0;i<256;i++){for(int k=0;k<=i;k++)p1[i]+=p[k];}// histogram transformationfor(int x=0;x<src1->width;x++){for(int y=0;y<src1-> height;y++){uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];((uchar*)(dst1->imageData + dst1->widthStep*y))[x]= p1[v]*255+0.5;            }}return 0;
}void CCVMFCView::OnYcbcrY()
{IplImage* Y = cvCreateImage(cvGetSize(workImg),IPL_DEPTH_8U,1);IplImage* Cb= cvCreateImage(cvGetSize(workImg),IPL_DEPTH_8U,1);IplImage* Cr = cvCreateImage(cvGetSize(workImg),IPL_DEPTH_8U,1);IplImage* Compile_YCbCr= cvCreateImage(cvGetSize(workImg),IPL_DEPTH_8U,3);IplImage* dst1=cvCreateImage(cvGetSize(workImg),IPL_DEPTH_8U,3);int i;cvCvtColor(workImg,dst1,CV_BGR2YCrCb);cvSplit(dst1,Y,Cb,Cr,0);ImageStretchByHistogram(Y,dst1);for(int x=0;x<workImg->height;x++){for(int y=0;y<workImg->width;y++){CvMat* cur=cvCreateMat(3,1,CV_32F);cvmSet(cur,0,0,((uchar*)(dst1->imageData+x*dst1->widthStep))[y]);cvmSet(cur,1,0,((uchar*)(Cb->imageData+x*Cb->widthStep))[y]);cvmSet(cur,2,0,((uchar*)(Cr->imageData+x*Cr->widthStep))[y]);for(i=0;i<3;i++){double xx=cvmGet(cur,i,0);((uchar*)Compile_YCbCr->imageData+x*Compile_YCbCr->widthStep)[y*3+i]=xx;}}}cvCvtColor(Compile_YCbCr,workImg,CV_YCrCb2BGR);m_ImageType=3;Invalidate();
}

opencv 彩色图像对比度增强相关推荐

  1. python opencv图像对比度增强_图像增强、锐化, Python-OpenCV 来实现 4 种方法!

    图像增强目的使得模糊图片变得更加清晰.图片模糊的原因是因为像素灰度差值变化不大,如片各区域产生视觉效果似乎都是一样的, 没有较为突出的地方,看起来不清晰的感觉 解决这个问题的最直接简单办法,放大像素灰 ...

  2. 【OpenCV】对比度增强之直方图正规化(归一化)

    原理详解: 假设输入图像为I,高为H.宽为W,I(r,c)代表I的第r行第c列的灰度值,将I中出现的最小灰度级记为Imin,最大灰度级记为Imax,即I(r,c)ϵ[Imin,Imax]\epsilo ...

  3. MATLAB实现彩色图像对比度增强

    对彩色图像进行增强.主要增强两方面,一方面是图像的亮度,另一方面就是图像的对比度. 参考链接:https://www.jianshu.com/p/5a8d12d6c649 基于修改直方图的方法: 将R ...

  4. 数字图像处理 图像对比度增强算法概览

    一.图像对比度增强 图像对比度增强又叫作图像对比度拉伸或者直接称为点运算.图像亮度和对比度调整的目的之一是在合适的亮度上提供最大的细节信息,细节纹理的沟纹越深,图像越清晰.在图像处理中,图像对比度增强 ...

  5. 【图像处理】彩色图像自适应对比度增强(OpenCV实现)

    [fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处]   提到图像增强,第一印象就是直方图均衡与直方图规定化,这是最常见的也是非常有效的全局图像 ...

  6. OpenCV——对比度增强

    尽管我们通过各种方法来采集高质量的图像,但是有的时候还是不够好,需要通过图像增强技术提高其质量. 图像增强技术:主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度值放大到 ...

  7. (4)图像增强- Part1. 对比度增强

    Image Enhancement 导读: 本章主要总结了图像增强技术中的点处理技术,包括灰度直方图的获取.直方图均衡化.直方图规范化和对比度调整等内容.C++和Python语言环境下,使用OpenC ...

  8. 图像对比度增强(Contrast Enhancement)详解

    Contrast Enhancement: 对比度增强一直是图像处理中的一个恒久话题,一般来说都是基于直方图的,比如直方图均衡化.冈萨雷斯的书里面对这个话题讲的比较透彻. 关于图像增强必须清楚的基本概 ...

  9. 基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)

    线性变换 假设输入图像为I,宽为W,高为H,输出图像为O,图像的线性变换可以用以下公式定义: O(r,c)=a×I(r,c)+b,0≤r<H,0≤c<WO(r, c) = a × I(r, ...

最新文章

  1. 视觉人工智能市场格局初成型,国内企业占半壁江山
  2. WinCvs里登录出现C:/cvs: no such repository解决方案
  3. iis配置js支持读取json文件配置
  4. 暮色森林模组_我的世界怎样进入暮色森林
  5. BZOJ2730 HNOI2012 矿井搭建 连通性
  6. spark sql 上个月_Spark学习之路 (十八)SparkSQL简单使用
  7. visual studio如何中止正在运行的程序
  8. Jieba词性对照表
  9. 中标2020中国联通数据设备集采项目,中兴通讯备受鼓舞
  10. Git——Gitlab服务单机构建
  11. Java版本微信授权登录(概览版)
  12. m基于BP神经网络的障碍物避障和路线规划matlab仿真
  13. 人工神经元再进一步,存储记忆已成现实
  14. 由于CredSSP加密数据库修正
  15. 如何理解 0.1+0.2
  16. 回答网友的几个跟帖和感想
  17. 【论文阅读|深读】 GraphSAGE:Inductive Representation Learning on Large Graphs
  18. 用Adobe Reader PDF阅读器来验证电子签名有效性
  19. 学习思维导图15条常识
  20. 数据清理之重复值、缺失值的基本处理方法

热门文章

  1. 彻底解决Vsart无法拖拽问题!!!Win10无法拖拽问题
  2. 计算机专业笔记本用i5还是i7,玩游戏笔记本i5和i7的区别_笔记本电脑游戏用i5还是i7...
  3. 美国顶级在线教育平台泄露22TB数据
  4. IT兄弟连 Java语法教程 Java平台的版本划分
  5. PAT乙级 | 1094 谷歌的招聘 (20分)
  6. 基于stm32的物联网、智能家居控制系统
  7. Git push错误,Unauthorized fatal: Could not read from remote repository.未验证不能提交
  8. 基于佟刚老师视频教程的Spring MVC数据类型转换学习总结
  9. dbo.GetJsonValue函数
  10. 微积分中,区间再现公式的证明