Refer from http://blog.csdn.net/xiaojidan2011/article/details/8027670

伽马校正,最好的,最高效的方法是通过table来访问:

核心函数LUT(The Core Function)¶

这是最被推荐的用于实现批量图像元素查找和更该操作图像方法。在图像处理中,对于一个给定的值,将其替换成其他的值是一个很常见的操作,OpenCV 提供里一个函数直接实现该操作,并不需要你自己扫描图像,就是:operationsOnArrays:LUT() <lut> ,一个包含于core module的函数. 首先我们建立一个mat型用于查表:

    Mat lookUpTable(1, 256, CV_8U);uchar* p = lookUpTable.data; for( int i = 0; i < 256; ++i)p[i] = table[i];

然后我们调用函数 (I 是输入 J 是输出):

        LUT(I, lookUpTable, J);

好了该我上代码了:

[cpp] view plaincopy
  1. int main()
  2. {
  3. IplImage* src = cvLoadImage("e:\\kankan\\fish.jpg", 0 );
  4. IplImage* dst = cvCreateImage(cvGetSize(src), 8, 1);
  5. uchar table[256];
  6. CreatTable_Gamma( table, 0.5 );
  7. LUT_Adj(src,dst,table);
  8. }
[cpp] view plaincopy
  1. void CreatTable_Gamma(uchar table[], float nPercent )
  2. {
  3. float val;
  4. for(int i=0;i<256;i++)
  5. {
  6. val= pow( (float)i/255.0f , nPercent)*255.0f;
  7. if(val>255)
  8. val=255;
  9. if(val<0)
  10. val=0;
  11. table[i]=(uchar)val;
  12. }
  13. }

创建table:

[cpp] view plaincopy
  1. void CreatTable_Gamma(uchar table[], float nPercent )
  2. {
  3. float val;
  4. for(int i=0;i<256;i++)
  5. {
  6. val= pow( (float)i/255.0f , nPercent)*255.0f;
  7. table[i]=(uchar)val;
  8. }
  9. }

读table :

[cpp] view plaincopy
  1. void LUT_Adj(const IplImage* src,IplImage* dst, uchar table[])
  2. {
  3. dptr[x] = table[sptr[x]];
  4. }

但是现在c++版的table 方法更高效的。我这个有点旧啦。。。

附上效果图:

Refer from http://blog.csdn.net/mjlsuccess/article/details/24544225

来自维基百科:伽马校正Gamma correction) 又叫伽马非线性化gamma nonlinearity)、伽马编码gamma encoding) 或是就只单纯叫伽马(gamma)。是用来针对影片或是影像系统里对于光线的辉度(luminance)或是三色刺激值(tristimulus values)所进行非线性的运算或反运算。最简单的例子里伽马校正是由下列幂定律公式所定义的。

其中A是一个常量,输入和输出的值都为非负实数值。一般地来说在A=1的通常情况下,输入输出的值的范围都是在0到1之间。伽马值γ < 1的情况有时被称作编码伽马值(encoding gamma),而执行这个编码运算所使用上述幂定律的过程也叫做伽马压缩(gamma compression);相对地,伽马值γ > 1的情况有时也被称作解码伽马值(decoding gamma),而执行这个解码运算所使用上述幂定律的过程也叫做“伽马展开(gamma expansion)”。

转自:http://blog.csdn.net/love_xunmeng/article/details/8274400

在计算机系统中,由于显卡或者显示器的原因会出现实际输出的图像在亮度上有偏差,而Gamma曲线矫正就是通过一定的方法来矫正图像的这种偏差的方法。一般情况下,当用于Gamma矫正的值大于1时,图像的高光部分被压缩而暗调部分被扩展,当Gamma矫正的值小于1时,图像的高光部分被扩展而暗调部分被压缩,Gamma矫正一般用于平滑的扩展暗调的细节。

公式如下:

I' = I^gamma:表示对图像I取指数值gamma,即I'(x,y)=I(x,y)^gamma。

在matlab代码如下:

结果如下:

Gamma校正源自显示器的校正,一些论文中引用“研究表示,Gamma值取0.4或0.45是最接近人类视觉系统的”,这个待考究,Gamma校正能否提高识别结果,也需要看官自己尝试。

opencv 图像伽马校正相关推荐

  1. 利用OpenCV进行图像伽马校正

    伽马校正,最好的,最高效的方法是通过查找表Table来访问. 核心函数LUT(Look UP Table): 这是最被推荐的用于实现批量图像元素查找和更该操作图像方法.在图像处理中,对于一个给定的值, ...

  2. OpenCV论道:为什么我的伽马校正函数只有一行?

    最近在用 OpenCV 识别棋盘棋子,基本的思路是这样的:先转灰度,再做高斯模糊和二值化,此时棋盘格上有的有棋子,有的无棋子:通过迭代腐蚀,消去棋子,再迭代膨胀回来,就得到了一个纯净的棋盘:识别棋盘, ...

  3. matlab批量读取图像图片并批量处理图像(以伽马校正为例)以及批量保存图像

    文章目录 处理1张图片,获取4幅不同伽马校正图像 批量读取图片模板 批量处理多张图片,分别获取4幅伽马校正图像 参考 处理1张图片,获取4幅不同伽马校正图像 实验结果 实验代码 get_4_pictu ...

  4. 图像亮度、对比度调节(伽马校正)

    [OpenCV学习]图像亮度.对比度调节(伽马校正) 作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/ #include "cv.h" #i ...

  5. 有生之年转ta系列 2.6 伽马校正

    本文内容来自 [技术美术百人计划]图形 2.6 伽马校正 观后记录 美术岗位代码或者算法一类的问题可能不太懂 本文仅用来记录学习,如果有不对的请指出谢谢 图形部分 第二章 伽马校正 颜色空间 色度图 ...

  6. 色彩校正(CCM)和伽马校正(Gamma)

    目录 1.色彩矫正(CCM) 2.伽马校正(Gamma) 1.色彩矫正(CCM)         色彩校正(Color Correction)是指用相同的方法改变图像中的所有像素的颜色值,以得到不同得 ...

  7. Gamma Correction(伽马校正)

    定义 Gamma correction, gamma nonlinearity, gamma encoding, or often simply gamma, is the name of a non ...

  8. 伽马校正(gamma correction)学习笔记

    学习HDR和Bloom特效的过程中,接触到了伽马矫正的问题.查阅了不少资料,这一篇讲的最清楚,下面的图片也是来自该文章. 这应该说是一个历史遗留问题,以前的CRT显示器是使用电子显像管,通过控制电流大 ...

  9. 我理解的伽马校正(Gamma Correction)

    [图形学]我理解的伽马校正(Gamma Correction) 2015年05月30日 18:22:52 妈妈说女孩子要自立自强 阅读数:69844 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  10. 伽马校正笔记(Gamma Correction)

    在数字图像系统中,伽马(Gamma)是一个重要的但很少被正确理解的特性.它定义了一个像素的数值和对应的实际亮度之间的关系. 人眼感知的亮度和相机"看到"的亮度区别 对于数码相机来说 ...

最新文章

  1. 【PCL】的五大依赖库及作用
  2. 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...
  3. mysql 入门命令
  4. JS中代表结束的三个关键字 break,continue,return
  5. SAP应用followup transaction的错误讨论
  6. 将背景色添加到Word 2007文档中
  7. lab 2 EIGRP Default Route
  8. Effective_STL 学习笔记(二)小心对 “容器无关代码” 的幻想
  9. opencv 图像对比度、亮度值调整 和滑动条
  10. java 软考_关于软考
  11. InstallShield 软件打包完整教程
  12. 手机管家中的黑名单功能
  13. u盘插入计算机显示被写保护,u盘被写保护了怎么去掉保护,教您解除u盘被写保护...
  14. CP的mgmt_cli tool与SMC CLI用法
  15. matlab处理矩阵的一些简易操作和画图的一些小技巧
  16. 家乡旅游风景区介绍——茂名风景区网页设计HTML+CSS+JavaScript
  17. el-checkbox点击没反应
  18. 计算机微程序控制器实验报告,计算机组成原理微程序控制器实验报告
  19. BC20/BC26-opencpu移植cjson,mqtt等注意事项
  20. 勒让德符号判断二次剩余-C语言

热门文章

  1. 基于Matlab与Logistic Regression(逻辑回归)的瓶子密封性检测
  2. 计算机辅助设计技术领域的应用,计算机辅助设计技术在机械设计中的应用探讨...
  3. 计算机打印病历格式要求,计算机打印病历书写要求
  4. 线性代数高斯课堂笔记2
  5. STM32H7定时器输入捕获实现电容触摸按键
  6. sparksql 与flinksql 建表 与 连表记录
  7. RGB888颜色码与十六位(RGB565)颜色码的转换
  8. 【Word】论文公式居中,编号右对齐
  9. 新版抖音二维码生成工具源码+实测可用
  10. 开源微信小程序源码新版及教程