首页 百科知识 灰度变换增强

灰度变换增强

时间:2024-10-09 百科知识 版权反馈
【摘要】:将原始图像的灰度值进行翻转,使输出图像的灰度值随输入图像的灰度值增加而减少,如黑图像变成白图像,白图像变成黑图像。对单波段逐个像素进行处理,将原图像灰度值按线性关系式扩展到指定范围或整个动态范围。

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是变换后的效果图。

img5

图2-1

img6

图2-2

(2)线性灰度变换。对单波段逐个像素进行处理,将原图像灰度值按线性关系式扩展到指定范围或整个动态范围。在实际运算中给定的是两个灰度区间,即要把输入图像的某个灰度值区间[a,b]扩展为输出图像的灰度值区间[c,d]。同样,对于灰度局限在某一个很小范围内的数字图像,采用线性函数对图像的每一个像素灰度作线性拉伸,将有效地改善图像视觉效果。关于a和b的取值有以下两种情况:原图像的最小和最大亮度值,即对原图像的灰度范围不加区别地扩展;人为规定的最小值和最大值(即阈值),把图像的低灰度值和高灰度值像素的灰度级进行了适当的归并。

线性拉伸采用的变换公式一般为:

g(x,y)=f(x,y)·C+R

C、R的值由输出图像的灰度值动态范围决定。

假定原始输入图像的灰度取值范围为[fmin,fmax],输出图像的灰度取值范围[gmin,gmax],其变换公式为:

img7

一般要求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)。

img8

图2-3

img9

图2-4

img10

图2-5

img11

图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)。

img12

图2-7

img13

图2-8

img14

图2-9

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈