opencv 图像伽马校正
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);
好了该我上代码了:
- int main()
- {
- IplImage* src = cvLoadImage("e:\\kankan\\fish.jpg", 0 );
- IplImage* dst = cvCreateImage(cvGetSize(src), 8, 1);
- uchar table[256];
- CreatTable_Gamma( table, 0.5 );
- LUT_Adj(src,dst,table);
- }
- void CreatTable_Gamma(uchar table[], float nPercent )
- {
- float val;
- for(int i=0;i<256;i++)
- {
- val= pow( (float)i/255.0f , nPercent)*255.0f;
- if(val>255)
- val=255;
- if(val<0)
- val=0;
- table[i]=(uchar)val;
- }
- }
创建table:
- void CreatTable_Gamma(uchar table[], float nPercent )
- {
- float val;
- for(int i=0;i<256;i++)
- {
- val= pow( (float)i/255.0f , nPercent)*255.0f;
- table[i]=(uchar)val;
- }
- }
读table :
- void LUT_Adj(const IplImage* src,IplImage* dst, uchar table[])
- {
- dptr[x] = table[sptr[x]];
- }
但是现在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 图像伽马校正相关推荐
- 利用OpenCV进行图像伽马校正
伽马校正,最好的,最高效的方法是通过查找表Table来访问. 核心函数LUT(Look UP Table): 这是最被推荐的用于实现批量图像元素查找和更该操作图像方法.在图像处理中,对于一个给定的值, ...
- OpenCV论道:为什么我的伽马校正函数只有一行?
最近在用 OpenCV 识别棋盘棋子,基本的思路是这样的:先转灰度,再做高斯模糊和二值化,此时棋盘格上有的有棋子,有的无棋子:通过迭代腐蚀,消去棋子,再迭代膨胀回来,就得到了一个纯净的棋盘:识别棋盘, ...
- matlab批量读取图像图片并批量处理图像(以伽马校正为例)以及批量保存图像
文章目录 处理1张图片,获取4幅不同伽马校正图像 批量读取图片模板 批量处理多张图片,分别获取4幅伽马校正图像 参考 处理1张图片,获取4幅不同伽马校正图像 实验结果 实验代码 get_4_pictu ...
- 图像亮度、对比度调节(伽马校正)
[OpenCV学习]图像亮度.对比度调节(伽马校正) 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ #include "cv.h" #i ...
- 有生之年转ta系列 2.6 伽马校正
本文内容来自 [技术美术百人计划]图形 2.6 伽马校正 观后记录 美术岗位代码或者算法一类的问题可能不太懂 本文仅用来记录学习,如果有不对的请指出谢谢 图形部分 第二章 伽马校正 颜色空间 色度图 ...
- 色彩校正(CCM)和伽马校正(Gamma)
目录 1.色彩矫正(CCM) 2.伽马校正(Gamma) 1.色彩矫正(CCM) 色彩校正(Color Correction)是指用相同的方法改变图像中的所有像素的颜色值,以得到不同得 ...
- Gamma Correction(伽马校正)
定义 Gamma correction, gamma nonlinearity, gamma encoding, or often simply gamma, is the name of a non ...
- 伽马校正(gamma correction)学习笔记
学习HDR和Bloom特效的过程中,接触到了伽马矫正的问题.查阅了不少资料,这一篇讲的最清楚,下面的图片也是来自该文章. 这应该说是一个历史遗留问题,以前的CRT显示器是使用电子显像管,通过控制电流大 ...
- 我理解的伽马校正(Gamma Correction)
[图形学]我理解的伽马校正(Gamma Correction) 2015年05月30日 18:22:52 妈妈说女孩子要自立自强 阅读数:69844 版权声明:本文为博主原创文章,未经博主允许不得转载 ...
- 伽马校正笔记(Gamma Correction)
在数字图像系统中,伽马(Gamma)是一个重要的但很少被正确理解的特性.它定义了一个像素的数值和对应的实际亮度之间的关系. 人眼感知的亮度和相机"看到"的亮度区别 对于数码相机来说 ...
最新文章
- 【PCL】的五大依赖库及作用
- 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!...
- mysql 入门命令
- JS中代表结束的三个关键字 break,continue,return
- SAP应用followup transaction的错误讨论
- 将背景色添加到Word 2007文档中
- lab 2 EIGRP Default Route
- Effective_STL 学习笔记(二)小心对 “容器无关代码” 的幻想
- opencv 图像对比度、亮度值调整 和滑动条
- java 软考_关于软考
- InstallShield 软件打包完整教程
- 手机管家中的黑名单功能
- u盘插入计算机显示被写保护,u盘被写保护了怎么去掉保护,教您解除u盘被写保护...
- CP的mgmt_cli tool与SMC CLI用法
- matlab处理矩阵的一些简易操作和画图的一些小技巧
- 家乡旅游风景区介绍——茂名风景区网页设计HTML+CSS+JavaScript
- el-checkbox点击没反应
- 计算机微程序控制器实验报告,计算机组成原理微程序控制器实验报告
- BC20/BC26-opencpu移植cjson,mqtt等注意事项
- 勒让德符号判断二次剩余-C语言