您的位置:首页 > 编程语言 > C语言/C++

图像灰度值调整(C/C++源代码)

2008-04-11 19:11 387 查看
2004年09月23日 16:00:00

图像的象素值变换,包括亮度、对比度和GAMMA校正算法,环境是OPENCV4.0,VC6.0。算法参考了MATLAB函数imadjust


//

// perform histgram equalization for single channel image

//

#include "cv.h"

#include "highgui.h"

int ImageAdjust(IplImage* src, IplImage* dst,

double
low, double high, // lowand
high are the intensities of src

double
bottom, double top, // mapped to bottom and top of dst

double
gamma )

{

double low2=
low*255;

double
high2= high*255;

doublebottom2 = bottom*255;

double top2=
top*255;

doubleerr_in
= high2 - low2;

doubleerr_out = top2 - bottom2;

intx,y;

doubleval;

if(low<0 && low>1 &&
high <0 &&high>1 &&
bottom<0 && bottom>1
&&top<0 &&
top>1)

return
1;

//
intensitytransform

for( y = 0;y
< src->height; y++)

{

for
(x = 0; x < src->width; x++)

{

val
= ((uchar*)(src->imageData +
src->widthStep*y))[x];

val
= pow((val - low2)/err_in, gamma) * err_out + bottom2;

if(val>255)
val=255; if(val<0) val=0; // Make sure src is inthe
range [low,high]

((uchar*)(dst->imageData
+ dst->widthStep*y))[x] = (uchar)val;

}

}

return0;

}

Trackback:http://tb.blog.csdn.net/TrackBack.aspx?PostId=114398

分享到新浪微博
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: