图像增强的点运算(一)
% 图像增强算法并不能增加原始图像的信息,而是通过某种技术手段有选择地突出对某一具体应用价值的信息 %灰度线性变换 %1:全域线性变换,假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至 % [c,d],则线性变换表达式为: g(x,y)=[(d-c)/(b-a)]*(f(x,y)-a)+c %采用线性变换对图像每一个像素灰度作线性拉伸呢,可有效改善图像视觉效果 %可以改变真个图像的整体的灰度效果 mimg=imread("pout.tif");%这个是程序自带的图片 subplot(221);imshow(mimg); subplot(223);imhist(mimg);%imhist展示直方图 mimg=double(mimg); va=min(min(mimg));%因为是二维所以需要两个min,求出二维数组中的最小值, % 单独一个min求出的是一个数组,数组元素是原先二维数组每一列的最小值 vb=max(max(mimg)); vc=0.0; vd=255.0; mimg1=(vd-vc)/(vb-va)*(mimg-va)+vc; mimg1=uint8(mimg1); subplot(222);imshow(mimg1); subplot(224);imhist(mimg1); %反相变换。也就是将白的变成黑的,将黑的变成白的 a=imread('pout.tif'); b=255-a; figure; subplot(121),imshow(a); subplot(122),imshow(b); %2:分段线性变换。为了突出感兴趣的目标或灰度空间,相对抑制那些不感兴趣的灰度区间 %3段公式: %g(x,y)= c/af(x,y) 0<=f(x,y)<a % [(d-c)/(b-a)][(f(x,y))-a]+c a<=f(x,y)<b % [(Mg-d)/(Mf-b)][f(x,y)-b]+d b<=f(x,y)<=Mf % 削波,可以看作是上述的一个特例。例如,就是将其中第1段置为0,第三段置为255,只有中间一段有一个变换的范围 % 阈值化,可以看做是削波的一个特例,就是其中只有两部分,一个全为0,另一个全为255 % 3:对数变换,一般表达式 g(i,j)=a+ln[f(i,j)+1]/(blnc) %可以使用更简化的形式 F=log(1+F) % matlab中,自然对数 log(x) 以10为底 log10(x) 以N为底longN(x) % 应用:将变化范围较大的灰度级压缩到较小的范围内。增强较暗区的对比,减弱较亮区的对比 % 这是因为,log之后再归一化,那么原先比较亮的地方可能就会变为比较暗的区域,这根log的图线形状有关 % 4:指数变换。可以对图像的高灰度区给予较大的拉伸。 % 一般表达式 g(i,j0=b^(c[f(i,j)-a])-1 %其中伽马变换:g(i,j)=cf(i,j)^r % r<1:将增强教案区域的对比,减弱较亮区域的对比。其实也就是让图像变亮 % r>1与上面相反 %5:直方图均衡 % 一幅图像的像素若占有全部的灰度级且分布均匀,就能够具有高对比度 % 灰度级变换,新图像中每个店的灰度s是改点原始灰度r的变换的结果。s=T(r) % 基本思想:把原始图的直方图变换为均匀分布的形式(对再图像中像素个数多的灰度级进行展宽, % 而对像素个数少的灰度级进行缩减),这样增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果 i=imread("pout.tif"); j=histeq(i);%这个函数就是直方图均衡化的函数 subplot(221),imshow(i); subplot(222),imshow(j); subplot(223),imhist(i); subplot(224),imhist(j);
作者:孙建钊
出处:http://www.cnblogs.com/sunjianzhao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。