opencv 图像伽马校正

opencv 图像伽马校正Referfromhttp://blog.csdn.net/xiaojidan2011/article/details/8027670伽马校正,最好的,最高效的方法是通过table来访问:核心函数LUT(TheCoreFunction)¶这是最被推荐的用于实现批量图像元素查找和更该操作图像方法。在图像处理中,对于一个给定的值,将其替换成其他的值是一个很常见的操作,Ope

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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);

好了该我上代码了:

  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.   
  7.     CreatTable_Gamma( table, 0.5 );  
  8.     LUT_Adj(src,dst,table);  
  9.   
  10.              }  

  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:

  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 :

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

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

附上效果图:

opencv 图像伽马校正

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

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

V_{\text{out}} = A {V_{\text{in}}}^{\gamma}

其中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代码如下:

opencv 图像伽马校正


结果如下:

opencv 图像伽马校正


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189802.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月8日 下午1:43
下一篇 2026年3月8日 下午2:15


相关推荐

  • Docker总结(配合阿里云容器镜像服务)「建议收藏」

    Docker总结(配合阿里云容器镜像服务)「建议收藏」Docker是个很好的工具,刚开始用觉得还没虚拟环境好用,随着深入了解,越发觉得Docker好用,今天就来总结一下使用心得。一、Docker基础1、背景知识1)docker是什么?Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的Linux容器解决方案。Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个…

    2022年5月24日
    66
  • jps命令显示jvm进程

    jps命令显示jvm进程用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号做为参数。Jps也可以显示远程系统上的JAVA进程,这需要远程服务上开启了jstat服务,以及RMI注及服务,不过常用都是对本对的JAVA进程的查看。

    2026年1月31日
    5
  • F1 score,micro F1score,macro F1score 的定义

    F1 score,micro F1score,macro F1score 的定义本篇博客可能会继续更新最近在文献中经常看到precesion,recall,常常忘记了他们的定义,在加上今天又看到评价多标签分类任务性能的度量方法microF1score和macroF2score。决定再把F1score一并加进来把定义写清楚,忘记了再来看看。F1scoreF1score(以下简称F1)是用来评价二元分类器的度量,它的计算方法如下:F1&amp;ThickSpace;…

    2022年10月14日
    5
  • android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]

    android跳转到相册需要权限,Android打开相册获取图片路径[通俗易懂]一.获得图片路径当我们通过Intent打开相册,获取图片后,在onActivityResult回调中会得到图片的Uri。但是Uri无法直接获得图片的路径。如果你曾经直接操作过android里的数据库的话,应该明白,Uri可以通过ContentResolver获得数据库表里的数据。例如:content://com.android.providers.media.documents/document/…

    2026年2月15日
    10
  • 群 环 域_群环域属于什么学科

    群 环 域_群环域属于什么学科群(Group)两个元素二元运算得到一个新元素环(Ring)上tian’jia在阿贝尔群(交换群)

    2025年5月23日
    3
  • nvidia显示设置不可用_纯干货!手把手教你为FreeSync显示器开启G-Sync教程

    nvidia显示设置不可用_纯干货!手把手教你为FreeSync显示器开启G-Sync教程就在刚刚过去的CES2019年上,英伟达为我们带来了G-SyncCompatible,兼容VESAAdaptive-Sync和AMDFreesync显示器,不久前最新的驱动也已经发布,现在就可以为你的显示器开启G-SyncCompatible了。众所周知,NVIDIA的游戏显卡备受玩家推崇,在此之前,G-SYNC技术只能针对G-SYNC显示器进行搭配。兼容技术的到来,意味着使用NVIDI…

    2022年5月2日
    139

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号