2.1.1 灰度变换增强
灰度变换可使图像对比度扩展,图像清晰,特征明显。它是图像增强的重要手段。灰度变换是一种点处理方法,它将输入图像中每个像素(x,y)的灰度值f(x,y),通过映射函数T(·),变换成输出图像中的灰度g(x,y),即:
g(x,y)=T[f(x,y)]
灰度变换可以选择不同的灰度变换函数,如正比函数和指数函数等。根据函数的性质,常见的灰度变换主要有:
(1)图像反转。将原始图像的灰度值进行翻转,使输出图像的灰度值随输入图像的灰度值增加而减少,如黑图像变成白图像,白图像变成黑图像。对增强嵌入在黑暗背景中的白色或灰色细节特别有效,尤其当图像中黑色为主要部分时效果明显。程序代码如下:
f=imread('camera.jpg');%读入原始图像
imshow(f);%显示灰度原始图像
g=double(f);%将图像转换为double类型
g=-g+(256-1);%图像反转变换
h=uint8(g);%double类型转化为uint8类型
figure,imshow(h);%在另一窗口显示灰度反转变换图像
图2-1是变换前的原始图像,图2-2是变换后的效果图。
图2-1
图2-2
(2)线性灰度变换。对单波段逐个像素进行处理,将原图像灰度值按线性关系式扩展到指定范围或整个动态范围。在实际运算中给定的是两个灰度区间,即要把输入图像的某个灰度值区间[a,b]扩展为输出图像的灰度值区间[c,d]。同样,对于灰度局限在某一个很小范围内的数字图像,采用线性函数对图像的每一个像素灰度作线性拉伸,将有效地改善图像视觉效果。关于a和b的取值有以下两种情况:原图像的最小和最大亮度值,即对原图像的灰度范围不加区别地扩展;人为规定的最小值和最大值(即阈值),把图像的低灰度值和高灰度值像素的灰度级进行了适当的归并。
线性拉伸采用的变换公式一般为:
g(x,y)=f(x,y)·C+R
C、R的值由输出图像的灰度值动态范围决定。
假定原始输入图像的灰度取值范围为[fmin,fmax],输出图像的灰度取值范围[gmin,gmax],其变换公式为:
一般要求gmin<fmin,gmax>fmax。
MATLAB图像处理工具箱提供了灰度调整函数imadjust(),可以将图像的灰度值调整到一个指定的范围。图2-3是一幅数字乳房X射线原始图像,它显示出了一处疾患,图2-4是经过明暗反转后的图像,就可非常容易地分析乳房组织,图2-5是亮度范围扩展为[0.5,0.75]后,更明显地看到疾患处,图2-6是压缩灰度值的低端并扩展灰度值的高端增强图像后的结果。程序代码如下:
f=imread('breast.jpg');
g1=imadjust(f,[0 1],[1 0]);
g2=imadjust(f,[0.5 0.75],[0 1]);
g3=imadjust(f,[],[],2);
imshow(f);
figure,imshow(g1);
figure,imshow(g2);
figure,imshow(g3)。
图2-3
图2-4
图2-5
图2-6
(3)非线性灰度变换。对于要进行扩展的亮度值范围是有选择的,扩展的程度是随灰度值的变化而连续变化的,常用的有对数变换和Gamma校正两种非线性灰度变换方法。
非线性灰度变换和线性灰度变换都可用同一个函数imadjust()实现,图2-7是月球北极的原图像,可以看出,原图像模糊不清,视觉效果很差,图2-8是经过全局拉伸变换后的图像,图像清晰了许多,图2-9是分段拉伸后的图像。程序代码如下:
f=imread('moon.jpg');
g1=imadjust(f);
g2=imadjust(f,[0.2 0.8],[]);
imshow(f);
figure,imshow(g1);
figure,imshow(g2)。
图2-7
图2-8
图2-9
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。