【vc++精品源码栏目提醒】:网学会员,鉴于大家对vc++精品源码十分关注,论文会员在此为大家搜集整理了“如何提取像素 - 产品手册”一文,供大家参考学习!
IplImage pImgpImgcvLoadImagequotxxxx.jpgquot1//xxxx 就是图像名称你就可以用 cvGet2D
访问像素点的值了。
希望能帮助你!亮度变换是指图像在空域上的点运算,通常包括图像增强、亮度/对比度、GAMMA 值调节、直方图调整等等。
下面给出两个例子说明如何改变图像的亮度、对比度以及如何进行图像的 GAMMA 值
调节。
亮度变换
的原理可以参考 MATLAB 中的函数 imadjust.m,下面给出一个例子说明如何进行亮度变换的。
在
MATLAB 窗口中键入:gtgt imadjdemo进行亮度变换演示。
调整“
Intensity Transform”窗口中的曲线,可以对图像
进行亮度变换,这里
调整的参数是 gamma 1 X-方向是 00.5,Y-方向是0.51,得到的结果如下:中的亮度变换
演示 Imadjdemo.m在 M
ATLAB 中也可以用 imadjust 来得到同样结果,我们先看看函数 imadjust 的
说明,给出的英文已经翻译过来:gtgthelp imadjustgtgt IMADJUST 调整图像的亮度值. J IMADJUSTILOW_IN HIGH_INLOW_OUT HIGH_OUTGAMMA 将图像 I 的亮度值映射到新的图像 J 中,使得在 LOW_IN 和 HIGH_IN 之间(即 X-方向)的值映射到 LOW_OUT 和 HIGH_OUT (即Y-方向)之间。
小于 LOW_IN 以及大于 HIGH_IN 的值被裁剪调。
GAMMA 表示曲线的形状,该曲线描述 I 和 J 之
间的关系。
如果 GAMMA 小于 1 则映射的权重趋向更亮的输出,如果 GAMMA 大于1,则映射趋向更暗的输出。
如果省略 GAMMA,则默认值为 1。
注意:如果 HIGH_OUT lt LOW_OUT,则图像输出反转,即通常所说的负片。
但是 LOW_IN 必须小于HIGH_IN。
实际上图像的亮度和对比度调节就是一种亮度变换,可以
直接调整 LOW_IN HIGH_IN 和 LOW_OUTHIGH_OUT 的数值来
改变亮度
以及对比度。
这里不再叙述了,读者可以自行测试。
上用 imadjust 实现图 5 14 的输出结果:gtgtI imread‘rice.tif’gtgtJ imadjustI0 0.50.5 1 X
方向是在00.5之间,Y 方向在0.51
之间gtgt imshowIgtgt figure imshowJ运行后得到如下结果:下面我们编制在 OpenCV 下面的程序,以实现图像的亮度变换::imadjust.c 图像的亮度变换gtgtgtgtgtgtgtgtgtgtgtgtgtgtgtinclude quotcv.hquotinclude quothighgui.hquot/src and dst are grayscale 8-bit imagesDefault input value: low high 01 X-Direction bottom top 01 Y-
Direction gamma if adjust successfully return 0 otherwise return non-zero./int ImageAdjustIplImage src IplImage dst double low double high // X 方向:low and high are the intensities of src double bottom double top // Y 方向:mapped to bottom and top of dst double gamma if lowlt0 ampamp lowgt1 ampamp high lt0 ampamp highgt1ampam
pbottomlt0 ampamp bottomgt1 ampamp toplt0 ampamp topgt1 ampamp lowgthigh return -1 double low2 low255 double high2 high255 double bottom2 bottom255 double top2 top255 double err_in high2 - low2 double err_out top2 - bottom2 int xy double val // intensity transform for y 0 y lt src-gtheight y for x 0 x lt src-gtwidth x val ucharsrc-gtimageData src-gtwidthStepyx val powval - low2/err_in gamma err_out bottom2 ifvalgt255 val255 ifvallt0 val0 // Make sure src is in the range lowhigh uchardst-gtimageData dst-gtwidthStepyx uchar val return 0int main int argc char argv IplImage src 0 dst 0 if argc 2 srccvLoadImageargv1 0 NULL // force to gray image return -1 cvNamedWindow quotsrcquot 1 cvNamedWindow quotresultquot 1 // Image adjust dst cvCloneImagesrc // 输入参数 00.5 和 0.51 gamma1if ImageAdjust src dst 0 0.5 0.5 1 10 return -1 cvShowImage quotsrcquot src cvShowImage quotresultquot dst cvWaitKey0 cvDestroy
Windowquotsrcquot cvDestroyWindowquotr