第四讲 灰度直方图变换
- 格式:ppt
- 大小:2.99 MB
- 文档页数:43
1.灰度直方图灰度直方图(histogram)是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。
如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图象的最基本的统计特征。
从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分,如下图所示:若直接从代表每种灰度的象素数目的直方图来观察,常用如下的表示:drr dP r p dr r p r P r)()(,)()(0==⎰∑⎰⎰⎰===≈======ki ik k k k k rrnnr P n n r p n r n A dAr p dr drr H A r P A drr dA A r H r p drr H A dr r H r A 00000025500)()()(1)(1)(,/)()()()()(,)()(,而概率分布函数,则概率密度的象素数为,灰度为若记象素总数为,时,在离散情况下,取概率密度象素总数一幅图象的总面积,或灰度直方图的计算是很简单的,依据定义,若图象具有L(通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得:1. 1.初始化 hist[k]=0 ; k=0,…,L-12. 2.统计 hist[f(x,y)]++ ; x, y =0,…,M-1, 0,…,N-13. 3.标准化 hist[f(x,y)]/=M*N2.直方图均衡化直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象A(x,y)转换为输出图象B(x,y),输入图象的直方图为HA (r),输出图象的直方图为HB(s),则它们的关系可由如下过程导出:例如,下图是直方图均衡化后的飞机图片及其直方图,可见其直方图与原图的直方图相比是很均衡的,但必须说明的是,离散情况下不可能作到绝对的一致。
第三章灰度直方图目录1.灰度直方图2.直方图均衡化3.直方图规范化4.色彩直方图作业1.灰度直方图灰度直方图(histogram)是灰度级的函数,是图象的最基本的统计特征。
它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。
如下图所示,横坐标:灰度-r纵坐标:为某一灰度值ri的像素个数ni,或是灰度出现的概率P(r)从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分,如下图所示:灰度直方图的计算是很简单的,依据定义,若图象具有L (通常L=256,即8位灰度级)级灰度,则大小为MxN的灰度图象f(x,y)的灰度直方图hist[0…L-1]可用如下计算获得:1.初始化hist[k]=0 ; k=0,…,L-12.统计hist[k] ; x, y =0,…,M-1, 0,…,N-13.如果需要标准化,则hist[k]/=M*N例:直方图算法实现例: 通过直方图求图像中的灰度的最大、最小和中值。
例:通过直方图求图像的亮度和对比度。
注2:图像的亮度和对比度图像的亮度(brightness ):即图像矩阵的平均值,其值越小越暗。
Brightness=图像的对比度(contrast ):即图像矩阵的均方差(标准差),对比度越大,图像中黑白反差越明显。
Contrast=1100(,)MN y x g x y M N −−==×∑∑11200((,))M N y x M Ng x y brightness −−==×−∑∑1)unsigned long hist[256]; unsigned char *pCur;for(int i=0;i<256;i++)hist[i]=0;int ImgSize=width*height;for(i=0,pCur=pImg;i<ImgSize;i++) hist[*(pCur++)]++;2)for (g=255;g>=0;g--)if (hist[g])break;maxGray=g;for (g=0;g<256;g++)I f (hist[g])break;minGray=g;for(g=sum=0;g<256;g++) {sum+=hist[g];if (sum>=ImgSize/2)break;}medGray=g;3)for(g=sum=0;g<256;g++)sum+=g*hist[g];brightness=1.0*sum/ImgSize;for(g=sum=0;g<256;g++)sum+= (g-brightness)* (g-brightness)*hist[g]; contrast=sqrt(sum/ImgSize);直方图具有很多的优点,直方图能反映图象的概貌,比如图像中有几类目标,目标和背景的分布如何;通过直方图可以直接计算图像中的最大亮度、最小亮度、平均亮度、对比度以及中间亮度等。
图像增强—灰度变换及直方图均衡化一、实验目的1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。
2、掌握直接灰度变换的图像增强方法。
3、掌握灰度直方图的概念及其计算方法;4、掌握直方图均衡化的计算过程;二、实验原理及知识点1、图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。
其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。
图像增强可以在空间域中执行,也可以在变换域中执行。
2、空间域指的是图像平面本身,在空间域内处理图像是直接对图像的像素进行处理。
空间域处理方法分为两种:灰度级变换、空间滤波。
空间域技术直接对像素进行操作,其表达式为g(x,y)=T[f(x,y)]其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定邻域内。
定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域。
此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的邻域。
T应用于每个位置(x,y),以便在该位置得到输出图像g。
在计算(x,y)处的g值时,只使用该领域的像素。
2、灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f在该点处的亮度决定,T也变为一个灰度变换函数。
由于灰度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式:s=T(r)其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。
灰度拉伸又叫对比度拉伸是最基本的一种灰度变换,使用简单的分段线性变换函数,可以提高灰度的动态范围,适用于低对比度图像的处理,增强对比度。
3、直方图是多种空间城处理技术的基础。
直方图操作能有效地用于图像增强。
除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。
图像灰度变换、⼆值化、直⽅图1、灰度变换1)灰度图的线性变换Gnew = Fa * Gold + Fb。
Fa为斜线的斜率,Fb为y轴上的截距。
Fa>1 输出图像的对⽐度变⼤,否则变⼩。
Fa=1 Fb≠0时,图像的灰度上移或下移,效果为图像变亮或变暗。
Fa=-1,Fb=255时,发⽣图像反转。
注意:线性变换会出现亮度饱和⽽丢失细节。
2)对数变换t=c * log(1+s)c为变换尺度,s为源灰度,t为变换后的灰度。
对数变换⾃变量低时曲线斜率⾼,⾃变量⼤时斜率⼩。
所以会放⼤图像较暗的部分,压缩较亮的部分。
3)伽马变换y=(x+esp)γ,x与y的范围是[0,1], esp为补偿系数,γ为伽马系数。
当伽马系数⼤于1时,图像⾼灰度区域得到增强。
当伽马系数⼩于1时,图像低灰度区域得到增强。
当伽马系数等于1时,图像线性变换。
4)图像取反⽅法1:直接取反imgPath = 'E:\opencv_pic\src_pic\pic2.bmp';img1 = imread(imgPath); % 前景图img0 = 255-img1; % 取反景图subplot(1,2,1),imshow(img1),title('原始图像');subplot(1,2,2),imshow(img0),title('取反图像');⽅法2:伽马变换Matlab:imadjust(f, [low_in, high_in], [low_out, high_out], gamma)[low_in, high_in]范围内的数据映射到 [low_out, high_out],低于low的映射到low_out, ⾼于high的映射到high_out. imgPath = 'E:\opencv_pic\src_pic\pic2.bmp';img1 = imread(imgPath); % 前景图img0 = imadjust(img1, [0,1], [1,0]);subplot(1,2,1),imshow(img1),title('原始图像');subplot(1,2,2),imshow(img0),title('取反图像');2、⼆值化1)rgb2gray⼀般保存的灰度图是24位的灰度,如果改为8bit灰度图。
3.1灰度直方图均衡灰度级变换的定义灰度级变换(点运算)的定义★对于输入图象f(x,y),灰度级变换T将产生一个输出图像g(x,y),且g(x,y)的每一个像素值都是由f(x,y)的对应输入像素点的值决定的,g(x,y)=T(f(x,y))。
★对于原图象f(x,y)和灰度值变换函数T(f(x,y)),由于灰度值总是有限个(如:O~2 5 5),非几何变换可定义为:R=T(r),其LlJ R、r(O.255)。
灰度级变换的实现灰度级变换(点运算)的实现R=T(r)定义了输入像素值与输出像素之间的映射关系,通常通过查表来实现。
灰度级变换实例1、图象求反2、对比度拉伸3、动态范围压缩4、灰度级切片编辑本段图像的灰度直方图总述灰度直方图(histogram)统计了图象中各个灰度级的象素的个数。
灰度直方图的计算若图象具有L级灰度(通常L=256,即8位灰度级),则大小为m(n的灰度图象f(x,Y)的灰度直方图H[k],k=0…L-1,可按如下步骤计算获得:1)初始化:for(k=O;k<L;k++)H[k]=O;2)统计:for(x=O;x<m;x++)for(y=O;y<n;y++)H[f(x,y)]++;3)规格化:flOr(x=O;x<m;x++)for(y=O;y<n;y++)H[f(x,y)]/=float(m(n);直方图均衡化直方图均衡化是通过灰度变换将一幅图象转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
直方图均衡化变换:设灰度变换s=f(r)为斜率有限的非减连续可微函数,它将输入图象Ii(x,y)转换为输出图象Io(x,y),输入图象的直方图为Hi(r),输出图象的直方图为Ho(s),则根据直方图的含义,经过灰度变换后对应的小面积元相等:Ho(s)ds=Hi(r)dr 变换函数f(r)必须满足下列2个条件:★(1)f(r) (O(r(1)是单值函数、且单调增加;★(2)O(f(r) (1,(O(r(1)。
实验一:图像灰度变换及直方图均衡化实验一、实验目的:1. 掌握灰度直方图的概念及其计算方法;2. 掌握利用图像灰度变换实现对图像的增强处理;3. 掌握利用直方图直方图均衡化和直方图规定化实现对图像的增强处理;4. 熟悉MA TLAB中图像增强的相关函数。
二、实验设备:1. 硬件设备:计算机;2. 软件环境:Windows+Matlab编程与仿真环境;3. 其他设备:记录用的纸、笔,以及U盘等存储设备。
三、实验原理:灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的像素的个数,反映图像中每种灰度出现的频率。
一般来说,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的概率,是图像的最基本的统计特性。
从概率论的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数PDF(Probability Density Function),而概率分布函数就是直方图的累积和,即概率密度函数的积分。
1. 直方图均衡化直方图均衡化是通过灰度变换将一幅图像转换另一幅具有均衡直方图,即在每个灰度级上都具有相同的像素点数的过程。
设灰度变换s=T(r)为斜率有限的非减连续可微函数,它将输入图像A(x,y)转换为输出图像B(x,y),输入图像的直方图为H a(r),输出图像的直方图为H b(s),它们的关系如下:图1.1 输入图像和输出图像直方图之间的关系图直方图均衡化的基本思想是把原始图像的直方图变换成均匀分布的形式图像灰度值的动态范围,从而达到了增强图像整体对比度的效果。
具体方法为:①列出原始图像的灰度级Sk, k=0,1…L-1,其中L是灰度级的个数;②统计原始图像各灰度级的像素数目nk;③计算原始图像直方图各灰度级的频率数;④计算原始图像的累计直方图;⑤取整计算;⑥确定映射关系;⑦统计新直方图各个灰度级的像素数目nk;⑧计算新的直方图。
2. 灰度变换灰度变换是图像增强的另一种重要手段,它可使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
【数字图像处理】灰度直⽅图、直⽅图均衡化、直⽅图规定化灰度直⽅图 ⼀幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的⼀个重要特征。
图像的灰度直⽅图就描述了图像中灰度分布情况,能够很直观的展⽰出图像中各个灰度级所占的多少。
图像的灰度直⽅图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。
灰度直⽅图的计算公式如下:p(rk)=nk/MN其中,rk是像素的灰度级,nk是具有灰度rk的像素的个数,MN是图像中总的像素个数。
直⽅图均衡化 Histogram Equalization假如图像的灰度分布不均匀,其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对⽐度较低。
通常采⽤直⽅图均衡化及直⽅图规定化两种变换,使图像的灰度范围拉开或使灰度均匀分布,从⽽增⼤反差,使图像细节清晰,以达到增强的⽬的。
直⽅图均衡化,对图像进⾏⾮线性拉伸,重新分配图像的灰度值,使⼀定范围内图像的灰度值⼤致相等。
这样,原来直⽅图中间的峰值部分对⽐度得到增强,⽽两侧的⾕底部分对⽐度降低,输出图像的直⽅图是⼀个较为平坦的直⽅图。
均衡化算法直⽅图的均衡化实际也是⼀种灰度的变换过程,将当前的灰度分布通过⼀个变换函数,变换为范围更宽、灰度分布更均匀的图像。
也就是将原图像的直⽅图修改为在整个灰度区间内⼤致均匀分布,因此扩⼤了图像的动态范围,增强图像的对⽐度。
通常均衡化选择的变换函数是灰度的累积概率,直⽅图均衡化算法的步骤:计算原图像的灰度直⽅图 P(Sk)=nknP(Sk)=nkn,其中nn为像素总数,nknk为灰度级SkSk的像素个数计算原始图像的累积直⽅图 CDF(Sk)=∑i=0knin=∑i=0kPs(Si)CDF(Sk)=∑i=0knin=∑i=0kPs(Si)Dj=L⋅CDF(Si)Dj=L⋅CDF(Si),其中 DjDj是⽬的图像的像素,CDF(Si)CDF(Si)是源图像灰度为i的累积分布,L是图像中最⼤灰度级(灰度图为255)灰度直⽅图均衡化实现的步骤1.统计灰度级中每个像素在整幅图像中的个数2.计算每个灰度级占图像中的概率分布3.计算累计分布概率4.计算均衡化之后的灰度值5.映射回原来像素的坐标的像素值⽰例说明来看看通过上述步骤怎样实现的拉伸。
图像的直方图均衡与分段灰度变换F1003025 5100309018 董威一、基本原理与主要用途;1.直方图均衡与分段灰度变换的基本原理;直方图均衡化的目的是将原始图像的直方图变为均衡分布的形式,即将一已知灰度概率密度分布的图像,经过某种变换变成一幅具有均匀灰度概率密度分布的新图像,从而改善图像的灰度层次。
它的基本思想是把原始图像的直方图变换成均匀分布的形式,这样就增加了像素灰度值的动态范围,从而达到了增强图像整体对比度的效果。
MATLAB图像处理工具箱中提供的histeq函数,可以实现直方图的均衡化。
线性变换是指在图像灰度范围内分段对逐个像元进行处理,是将原图像亮度值动态范围按线性关系(线性函数)变换到指定范围或整个动态范围。
在实际运算中给定的是2个亮度区间,即要把输入图像的某个亮度值区间[a,b]映射为输出图像的亮度值区间[c,d]。
即按线性比例对图像每一个象素灰度作灰度线性变换,改善图像视觉效果。
在实际图像处理中,为了突出感兴趣的目标或灰度区域,相对抑制不感兴趣的灰度区域,常常采用分段线性变换来进行图像灰度的处理。
MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换。
2.主要用途;在获取图像的过程中,由于噪声,光照等外界环境或设备本身的原因,原始数字图像质量会退化。
例如一般成像系统只具有一定的响应亮度,常出现对比度不足的弊病,影响视觉效果,在这些情况下需要对图像做增强处理。
图像增强可以提高清晰度,改善图像的视觉效果,突出图像中的有用信息,削弱或消除不需要的信息。
二、实现方案与源码;1.直方图均衡化;MATLAB图像处理工具箱的histep函数可以很方便的实现直方图均衡化。
由于原图片是彩色,因而在转换前需要用rgb2gray函数将图片转化为灰度图。
源程序如下:a=imread('e:\b.bmp');%读取图像b=rgb2gray(a); %转化为灰度图像subplot(121),imshow(a);subplot(122),imhist (b);实现结果如下:原图转化为的灰度图像subplot(121),imshow(b);subplot(122),imhist(b); %显示灰度图像与其直方图实现结果如下:c=histeq(b); %直方图均衡化subplot(121),imshow(b);subplot(122),imhist (b); %显示处理后的图像与其直方图实现结果如下:不调用histeq函数,利用matlab语言也可直接编程实现图像的直方图均衡化处理。
灰度图像直方图均衡化变换函数算法方案一:1) 灰度图像直方图均衡化算法步骤:1、列出原始图像和变换后图像的灰度级I:j=0,1,…L-1,其中L是灰度级的个数;2、统计原始图像个灰度级的像素个数Ni;3、计算原始图像直方图:p(i)=Ni/N,N为原始图像像素总数;4、计算累计直方图Pj=∑p(k),k=0,1…j;5、利用灰度变换函数计算变换后的灰度值,并四舍五入:j=INT[(L-1)Pj+];6、肯定灰度变换关系i—>j,据此将原图像的灰度值f(m,n)=i修正为g(m,n)=j;7、统计变换后各灰度级的像素个数Nj;8、计算变换后图像的直方图p(j)=Nj/N;2) m文件I=imread('');I=I(:,:,1);[m,n]=size(I);num=m*n;pre_mat=zeros(1,256);aft_mat=zeros(1,256);for i=1:mfor j=1:npre_mat(I(i,j)+1)= pre_mat(I(i,j)+1)+1;endendaft_mat(I)=aft_mat(I)/num;for k=2:256s(k)=pre_mat(k)/num;aft_mat(k)=aft_mat(k-1)+s(k);endM=zeros(m,n);aft_mat=aft_mat*255;for i=1:mfor j=1:nM(i,j)=aft_mat(I(i,j)+1);endendJ=uint8(M)subplot(3,2,1)imshow(I);title('1.原始图像');subplot(3,2,2)imhist(I);title('2.原始图像直方图 ');subplot(3,2,3)imshow(J);title('3.均衡化图像');subplot(3,2,4)imhist(J);title('4.均衡化图像直方图');A=histeq(I);subplot(3,2,5)imshow(A);title('5.系统均衡化图像');subplot(3,2,6)imhist(A);title('6.系统均衡化图像直方图')图1 均衡化处置对比经实际验证:该方案对黑白图片均衡化处置有较好的效果。
【OpenCV】图像增强---灰度变换、直⽅图均衡化图像增强的⽬的:改善图像的视觉效果或使图像更适合于⼈或机器的分析处理。
通过图像增强,可以减少图像噪声,提⾼⽬标与背景的对⽐度,也可以增强或抑制图像中的某些细节。
---------------------------------------------------------------------------------------------------灰度变换:把原图像的像素灰度经过某个函数变换成新图像的灰度。
可分为直线灰度变换法和直⽅图修正法。
直线灰度变换法:线性、分段线性、⾮线性变换。
直⽅图修正法:直⽅图均衡化、直⽅图规定化。
---------------------------------------------------------------------------------------------------图像直⽅图:是对像素的某种属性(如灰度、颜⾊、梯度等)分布进⾏统计分析的重要⼿段。
灰度直⽅图:是灰度级的函数,它反映了图像中每⼀灰度级出现的次数或频率。
直⽅图均衡化:把原始图像的直⽅图变换为均匀分布的形式,从⽽增加图像灰度的动态范围,以达到增强图像对⽐度的效果。
经过均衡化处理的图像,其灰度级出现的概率相同,此时图像的熵最⼤,图像所包含的信息量最⼤。
【注意,离散后是每块区域的概率相等,均衡化后并不是条直线哦。
】 细节概念等省略......---------------------------------------------------------------------------------------------------线性灰度增强、对数变换、指数变换、直⽅图均衡化。
代码见下(代码略粗糙...)【ImageEnhance.cpp部分代码】1//线性灰度增强2bool CImageEnhance::GrayLinearTransform(Mat &src, Mat &dst, uchar c, uchar d)3 {4int b=0,a=255;5 dst = src.clone();6int row = dst.rows, col = dst.cols * dst.channels();7 uchar *cc = dst.data;8for(int i = 0; i < row; ++i) {9for(int j = 0; j < col; ++j) {10int val = *cc;11if(a > val) a = val;12if(b < val) b = val;13 cc++;14 }15 }16 cc = dst.data;17float k = float(d - c)/(b-a);18//CString c1; c1.Format(_T("a=%d,b=%d,c=%d,d=%d,k=%.2f\n"), a,b,c,d,k);MessageBox(c1);19for(int i = 0; i < row; ++i) {20for(int j = 0; j < col; ++j) {21int val = *cc;22int s = (int)(k*(val - a) + c);23 *cc = s;24 cc++;25 }26 }27return true;28 }29//对数变换30bool CImageEnhance::GraynoLinearlog(Mat &src, Mat &dst) {31 dst = src.clone();32int row = dst.rows, col = dst.cols * dst.channels();33 uchar *cc = dst.data;34double k = 255 / log10(256.0);35for(int i = 0; i < row; ++i) {36for(int j = 0; j < col; ++j) {37int val = *cc;38 *cc = k * log10(1.0*(val + 1));39 cc++;40 }41 }42return true;43 }44//指数变换45bool CImageEnhance::GraynoLinearindex(Mat &src, Mat &dst) {46 dst = src.clone();47int row = dst.rows, col = dst.cols * dst.channels();48 uchar *cc = dst.data;49double k = 1.0 / 255;50for(int i = 0; i < row; ++i) {51for(int j = 0; j < col; ++j) {52int val = *cc;53 *cc = k * val * val;54 cc++;55 }56 }57return true;58 }5960 MatND CImageEnhance::getHist1(Mat& image)61 {62 MatND hist;63int channels[] = {0};64int dims = 1;65int histSize[] = {256}; //直⽅图箱⼦的个数66float granges[] = {0, 255};67const float *ranges[] = {granges}; //像素值范围68//计算直⽅图69 calcHist(&image, 1, channels, Mat()/*不使⽤掩码*/, hist, dims/*这是⼀维的直⽅图*/, histSize, ranges);70return hist; //这⾥得到的hiat是256⾏⼀列的Mat71 }7273//直⽅图均衡化74bool CImageEnhance::Equalize_hist(cv::Mat& src,cv::Mat& dst)75 {76//CMFC_Test_lyyDlg pic;77 MatND hist;78int channels[] = {0};79int dims = 1;80int histSize[] = {256}; //直⽅图箱⼦的个数81float granges[] = {0, 255};82const float *ranges[] = {granges}; //像素值范围83//计算直⽅图84 Mat image = src.clone();85 calcHist(&image, 1, channels, Mat()/*不使⽤掩码*/, hist, dims/*这是⼀维的直⽅图*/, histSize, ranges);8687//MatND hist = getHist1(src);//pic.getHist(dst);88float s[256];89float p[256];9091 cv::Mat lookup(cv::Size(1, 256), CV_8U);92int pixNum = src.cols * src.rows;//总像素个数93for (int i =0; i <256; i++) {94 s[i] = hist.at<float>(i) / pixNum;95if (i ==0) {96 p[i] = s[i];97 }98else {99 p[i] = p[i -1] + s[i];100 }101 }102for (int i =0; i <256; i++) {103 lookup.at <uchar>(i) = static_cast<uchar>(p[i]*255.0);104 }105106 cv::LUT(src, lookup, dst);//创建矩阵,把⼀个像素值映射到另⼀个像素值107return true;108 }ImageEnhance.cpp效果如下:原图像:线性灰度增强:我这⾥默认a和b表⽰原图像灰度值的最⼩与最⼤值。