图像处理-Gamma变换

来源:互联网 发布:淘宝客服主管好做吗 编辑:程序博客网 时间:2024/04/28 21:30

Gamma变换: y=x^gamma;
gamma>1, 较亮的区域灰度被拉伸,较暗的区域灰度被压缩的更暗,图像整体变暗;
gamma<1, 较亮的区域灰度被压缩,较暗的区域灰度被拉伸的较亮,图像整体变亮;
参考:
http://blog.csdn.net/lxy201700/article/details/24929013

#include<iostream>#include<highgui\highgui.hpp>#include<core/core.hpp>  #include<math.h>using namespace cv;  using namespace std;  // get Gamma transformation look up tablevoid GetGammaTransLUT(uchar *pLUT, float Gamma, int iLUTLen){    for(int i=0;i<iLUTLen;i++)    {        pLUT[i]=(uchar)(pow((float)i/255.0,Gamma)*255);    }}void GammaTrans(uchar *pSrc, uchar *pDst, const int iHeight,                const int iWidth, float Gamma){    uchar *pLUT=new uchar[256];    GetGammaTransLUT(pLUT,Gamma,256);    for(int i=0;i<iHeight*iWidth;i++)    {        pDst[i]=(uchar)pLUT[pSrc[i]];    }    delete []pLUT;}int main(){    Mat image=imread("C:\\迅雷下载\\图像处理\\Projects\\MyOpenCV\\MyOpenCV\\DIP3ECH06\\Fig0638(a)(lenna_RGB).tif",0);     Mat image_Dst=imread("C:\\迅雷下载\\图像处理\\Projects\\MyOpenCV\\MyOpenCV\\DIP3ECH06\\Fig0648(b)(lenna-noise-G-gauss-mean0-var800).tif",0);     const int iHeight=image.rows;    const int iWidth=image.cols;    uchar* pSrc=image.data;//new uchar[iHeight*iWidth];    uchar* pDst=image_Dst.data;//new uchar[iHeight*iWidth];    GammaTrans(pSrc,pDst,iHeight,iWidth,2);    //namedWindow("Origin",1);    imshow("Origin",image);    //创建一个名字为“Lena”的图像显示窗口,(不提前声明也可以)      //namedWindow("Gamma Trans",1);      //显示图像      imshow("Gamma Trans",image_Dst);      //等待按键      waitKey();      return 0;  }

这里写图片描述

0 0
原创粉丝点击