图像增强——伽马变换
来源:互联网 发布:韩顺平js完整视频教程 编辑:程序博客网 时间:2024/06/07 20:33
伽马变换:在图像处理中,将漂白(相机过曝)的图片或者过暗(曝光不足)的图片,进行修正!
伽马变换的基本形式如下:
曲线图如下:
通过以上曲线图:
gamma值小于1时,会拉伸图像中灰度级较低的区域,同时会压缩灰度级较高的部分
gamma值大于1时,会拉伸图像中灰度级较高的区域,同时会压缩灰度级较低的部分
以下是我测试的效果图:
gamma值设置为2.7,提高了对比度
gamma值设置为0.7,效果如下:
gamma值设置为0.6,效果如下:
gamma值设置为0.4,效果如下:
以下是我测试的代码:
voidCreatTable_Gamma(uchartable[],floatnPercent)
{
floatval;
for(inti=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;
}
}
voidImageAdjust(IplImage*src,uchartable[])
{
intstep = src->widthStep;//相邻行的同列点之间的字节数
intchannels = src->nChannels;//颜色通道数目(1,2,3,4)
uchar*data = (uchar*)src->imageData;
//intensity transform
intx,y;
int val;
for(y = 0; y < src->height;y++)
{
for(x = 0; x < src->width;x++)
{
for(intk=0;k != channels; ++ k)
{
val= data[y*step+x*channels+k];
data[y*step+x*channels+k]=table[val];
}
}
}
}
intmain()
{
char*filename="D:\\gamma\\2.jpg";
IplImage*dst,*src = cvLoadImage(filename);
if(!src)
{
printf("Couldn'tseem to Open %s, sorry/n",filename);
return-1;
}
cvNamedWindow("src");
cvNamedWindow("result");
dst= cvCloneImage(src);
uchartable[256];
CreatTable_Gamma(table,2.7 );
ImageAdjust(src,table);
cvShowImage("src",dst);
cvShowImage("result",src);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("result");
cvReleaseImage(&src );
cvReleaseImage(&dst );
return0;
}
- 图像增强——伽马变换
- 图像增强—Gamma变换
- 《数字图像处理》——图像变换与增强
- 灰度图像--图像增强 灰度变换
- 图像的正交变换---沃尔什——哈达马变换
- 图像变换——对数变换
- 图像变换——仿射变换
- MATLAB图像操作(变换,读写,显示,增强)
- 图像增强之(二) --- sobel变换
- 图像增强—灰度拉伸
- 图像处理——图像增强
- 图像变换——图像反转
- 图像预处理——图像坐标变换
- 图像校正—透视变换
- openCV—图像几何变换
- opencv中的图像亮度变换(图像增强)
- opencv中的图像亮度变换(图像增强)
- 图像基础13 灰度变换与图像增强
- 数据结构与算法分析_数组的子序列问题
- 《 JavaScript&jQuery交互式Web前端开发》读书笔记二:各种页面加载事件的区别
- 网页设计中常用字体
- MAC ReactNative环境搭建
- crf++学习资料
- 图像增强——伽马变换
- 微信公众平台-微信发送朋友、分享到QQ、分享QQ空间、分享腾讯微博-JSSDk接口
- C++正则表达式使用
- 关于图像膨胀和腐蚀的介绍
- test
- idea 创建一个web项目
- 印度乘法口诀双位数乘法详解
- Cassandra集群配置
- Spring中资源的加载ResourceLoader