赞
踩
前面已经接触到图像的高低频的含义了,即图像中灰度变化缓慢的灰度区域属于低频分量,图像中像素灰度骤变,跳跃的部分属于高频分量。详细参见(图像的高/低频分量)。接下来,文内所叙述的部分都是对于图像高,低频分量采取不同方法处理而展开的。
假设原图像为f(x,y),经傅里叶变换得到的F(u,v)。图像频域增强就是对选择合适的滤波器H(u,v)对F(u,v)的频谱成分进行处理,然后经过傅里叶逆变换得到增强的图像g(x,y)。
图像频域增强的一般流程如下:
因此,图像增强的关键就是选择合适的滤波器。
(1)低通滤波器
一幅图像的边缘,跳跃部分以及颗粒噪声代表图像信号中的高频分量,而大面积的背景区域代表了图像信号的低频分量。
低通滤波器的作用就是滤除高频分量,保留低频分量,使图像平滑。
常见低通滤波器:理想低通滤波器,Butterworth低通滤波器,指数低通滤波器,梯形低通滤波器等。
(2)高通滤波器
高通滤波器的作用和低通滤波器相反,它使得高频分量得以通过,而抑制低频分量,使图像锐化。
(3)同态滤波器
同态滤波是一种将频率过滤和灰度变换结合在一起得一种处理方法。它将图像的照明反射模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善的一种处理技术。
图像的平滑除了在空间域中进行外,也可以在频域中进行。由于噪声主要集中在高频部分,为去除噪声改善图像质量,滤波器采用低通滤波器H(u,v)来抑制高频成分,通过低频成分,然后再进行傅立叶逆变换获得滤波图像,就可达到平滑图像的目的。
a.一般表达式
一个二维的理想低通滤波器(ILPF)的传递函数如下
其中,D0为截止频率;D(u,v)为距离函数D(u,v)=(u2+v2)1/2
b.图示表示
c.应用举例
代码:
%(1)理想低通滤波器 fxy = imread('Pepper.bmp'); fxy = rgb2gray(fxy); fxy = imnoise(fxy, 'salt & pepper',0.01); subplot(321),imshow(fxy),title('f(x,y)'); Fuv = fftshift(fft2(fxy));%傅里叶变换,平移,将变换后频率成分按从大到小在频谱上由中心向外扩展 subplot(322),imshow(mat2gray(log(1+abs(Fuv)))),title('F(u,v)');%显示傅里叶变换频谱,其中对傅里叶变换频谱做 %的对数变换是为了压缩频谱灰度级范围,突出显示频谱中细节部分,没有对数变换,傅里叶变换频谱中的细节成分无法显示 [M,N] = size(fxy); %求原图像的尺寸 u=-M/2:(M/2-1); v=-N/2:(N/2-1); [U,V]=meshgrid(u,v);%meshgrid函数用于根据给定的横纵坐标点生成坐标网格,以便计算二元函数的取值。 D=sqrt(U.^2+V.^2);%这就是计算距离G(u,v) D0=50; %设定截止频率D0 Huv=double(D<=D0); subplot(323),imshow(Huv),title('H(u,v)'); Guv = Fuv .* Huv; subplot(324),imshow(mat2gray(log(1+abs(Guv)))),title('G(u,v)'); gxy = mat2gray(ifft2(fftshift(Guv))); subplot(325),imshow(gxy),title('g(x,y)');
运行结果:
d.理想低通滤波器处理效果
振铃效果—图像处理中,对一幅图像进行滤波处理,若选用的频域滤波器具有陡峭的变化,则会使滤波图像产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。
a.一般表达式
一个截止频率在与原点距离为D0的n阶Butterworth低通滤波器(BLPF)的传递函数如下:
b.图示表示
c.应用举例
代码:
%(2)Butterworth低通滤波器 fxy = imread('lady.png'); fxy = rgb2gray(fxy); fxy = imnoise(fxy, 'salt & pepper',0.01); subplot(321),imshow(fxy),title('f(x,y)'); Fuv = fftshift(fft2(fxy)); subplot(322),imshow(mat2gray(log(1+abs(Fuv)))),title('F(u,v)'); [M,N] = size(fxy); %求原图像的尺寸 u=-M/2:(M/2-1); v=-N/2:(N/2-1); [U,V]=meshgrid(u,v);%meshgrid函数用于根据给定的横纵坐标点生成坐标网格,以便计算二元函数的取值。 D=sqrt(U.^2+V.^2);%这就是计算距离G(u,v) D0=50; %设定截止频率D0 n = 4;%巴特沃斯滤波器的阶数 Huv=double(1./(1 + (D./D0).^(2 * n))); subplot(323),imshow(Huv),title('H(u,v)'); Guv = Fuv .* Huv; subplot(324),imshow(mat2gray(log(1+abs(Guv)))),title('G(u,v)'); gxy = mat2gray(ifft2(fftshift(Guv))); subplot(325),imshow(gxy),title('g(x,y)');
运行结果:
(1)指数低通滤波器
a.一般表达式
指数低通滤波器是图像处理中常用的一种平滑滤波器。它的传递函数为:
b.特性
该滤波器滤波在抑制噪声的同时,图像边缘的模糊程度较用Butterworth滤波产生的大些,无明显的振铃效应。
(2)梯形低通滤波器
a.一般表达式
梯形低通滤波器是理想低通滤波器和完全平滑滤波器的折中。它的传递函数为:
b.图示表示
c.特性
该滤波器的性能介于理想低通滤波器和指数滤波器之间,滤波的图像有一定的模糊和振铃效应。
图像的边缘、细节主要位于高频部分,而图像的模糊是由于高频成分比较弱产生的。频域锐化就是为了消除模糊,突出边缘。因此采用高通滤波器让高频成分通过,使低频成分削弱,再经逆傅立叶变换得到边缘锐化的图像。
a.一般表达式
一个二维的理想高通滤波器(IHPF)的传递函数:
b.图示表示
c.应用举例
代码:
%(3)理想高通滤波器 fxy = imread('Pepper.bmp'); fxy = rgb2gray(fxy); fxy = imnoise(fxy, 'salt & pepper',0.03); subplot(321),imshow(fxy),title('f(x,y)'); Fuv = fftshift(fft2(fxy)); subplot(322),imshow(mat2gray(log(1+abs(Fuv)))),title('F(u,v)'); [M,N] = size(fxy); %求原图像的尺寸 u=-M/2:(M/2-1); v=-N/2:(N/2-1); [U,V]=meshgrid(u,v);%meshgrid函数用于根据给定的横纵坐标点生成坐标网格,以便计算二元函数的取值。 D=sqrt(U.^2+V.^2);%这就是计算距离G(u,v) D0=50; %设定截止频率D0 Huv=double(D > D0); %这里区别于低通滤波器 subplot(323),imshow(Huv),title('H(u,v)'); Guv = Fuv .* Huv; subplot(324),imshow(mat2gray(log(1+abs(Guv)))),title('G(u,v)'); gxy = mat2gray(ifft2(fftshift(Guv))); subplot(325),imshow(gxy),title('g(x,y)');
运行结果:
a.一般表达式
一个截止频率在与原点距离为D0的n阶Butterworth高通过滤器(BHPF)的传递函数如下:
b.图示展示
c.应用举例
代码:
%(4)Butterworth高通滤波器 fxy = imread('lady.png'); fxy = rgb2gray(fxy); fxy = imnoise(fxy, 'salt & pepper',0.03); subplot(321),imshow(fxy),title('f(x,y)'); Fuv = fftshift(fft2(fxy)); subplot(322),imshow(mat2gray(log(1+abs(Fuv)))),title('F(u,v)'); [M,N] = size(fxy); %求原图像的尺寸 u=-M/2:(M/2-1); v=-N/2:(N/2-1); [U,V]=meshgrid(u,v);%meshgrid函数用于根据给定的横纵坐标点生成坐标网格,以便计算二元函数的取值。 D=sqrt(U.^2+V.^2);%这就是计算距离G(u,v) D0=50; %设定截止频率D0 n = 2; Huv=double(1./(1 + (D0./D).^(2 * n))); %这里区别于低通滤波器 subplot(323),imshow(Huv),title('H(u,v)'); Guv = Fuv .* Huv; subplot(324),imshow(mat2gray(log(1+abs(Guv)))),title('G(u,v)'); gxy = mat2gray(ifft2(fftshift(Guv))); subplot(325),imshow(gxy),title('g(x,y)');
运行结果:
(1)指数高通滤波器
a.一般表达式
b.图示展示
(2)梯形高通滤波器
a.一般表达式
b.图示展示
其中,a图为原图像,b,c,d,e分别是四种不同低通滤波器处理后的图像。
比较结果:
(1)理想滤波器有明显的振铃效应,即图像边缘有抖动现象;
(2)Butterworth低通滤波效果较好,但计算复杂,优点是有少量高频通过,H(u,v)是渐变的,振铃现象不明显;
(3)指数低通滤波效果比Butterworth差些,振铃现象不明显;
(4)梯形低通滤波虽然产生的振铃效应没有理想低通滤波强,但使的图像最模糊。
在生活中会得到这样的图像,它的动态范围很大,而感兴趣的部分的灰度有很暗,图像的细节没有办法辨认,采用一般的线性灰度变换法是不行的。图像的同态滤波属于图像频率域处理范畴,其作用就是对图像灰度范围进行调整,通过消除图像上照明不均的问题,增强暗区图像的细节,同时又不损失亮区的图像细节。由于同态滤波涉及面较广,这里就先不做讨论。若您感兴趣,参见图像的同态滤波及实现。
彩色增强技术是利用人眼的视觉特性,将灰度图像变成彩色图像或改变彩色图像已有彩色的分布,改善图像的可分辨性。
由于人眼只能区分由黑到白的十多种到二十多种不同的灰度级,而人眼对彩色的分辨可以达到几百种甚至几千种。所谓伪彩色增强,就是将图像中黑白灰度级按照线性或非线性的映射函数变换成不同的彩色,得到一幅彩色图像的技术。伪彩色图像处理技术使得源图像变得更清晰,细节更容易辨认,因而被广泛应用。
伪彩色增强技术发展至今产生了很多方法,在这里我主要介绍密度分割法,空间域灰度级—彩色变换法,频率域伪彩色增强及彩色图像的伪彩色处理。
密度分割法,就是将黑白图像的灰度级从0(黑)到M0(白)分成N个区间Ii(i=1,2,…,N),给每个区间Ii指定一种彩色Ci,这样,便可以把一幅灰度图像变成一幅伪彩色图像。
该方法比较简单、直观。缺点是变换出的彩色数目有限。
代码:
%(1)密度分割法 image = imread('beauty.jpg'); subplot(221),imshow(image),title('Original image'); image1 = rgb2gray(image); subplot(222),imshow(image1),title('Gray image'); R = zeros(size(image1)); R1 = zeros(size(image1)); R(image1 < 80) = 0; R1(image1 < 40) = 255; G = zeros(size(image1)); G1 = zeros(size(image1)); G(image1 <= 160&image1 >= 80) = 255; G1(image1 <= 100&image1 >= 40) = 0; B = zeros(size(image1)); B1 = zeros(size(image1)); B(image1 > 160) = 255; B1(image1 > 100) = 90; % image_rgb = zeros(size(image1)); image_rgb(:,:,1)= R; image_rgb(:,:,2)= G; image_rgb(:,:,3)= B; subplot(223),imshow(image_rgb),title('pseudo color image'); image_rgb1(:,:,1) = R1; image_rgb1(:,:,2)= G1; image_rgb1(:,:,3)= B1; subplot(224),imshow(image_rgb1),title('pseudo color image1');
运行结果:
观察运行结果可知,当修改黑白灰度级的划分区间与彩色分量的映射关系时,相应的彩色图像输出也会呈现不同的彩色。
将原图像f(x,y)的灰度范围分段,经过红、绿、蓝三种不同变换TR(•)、TG(•)和TB(•),变成三基色分量r(x,y)、g(x,y)、b(x,y),然后合成一幅彩色图像。关于彩色空间,参见常见彩色空间
典型映射曲线一:
处理效果举例:
典型映射曲线二:
处理效果举例:
a.映射曲线图
b.代码
%(3)空间域灰度级--彩色变换 mlmg = imread('lady.png'); mlmg = rgb2gray(mlmg); [m,n] = size(mlmg); mlmgR = zeros(m,n); for i = 1:m for j = 1:n if mlmg(i,j) < 100 mlmgR(i,j) = 0; elseif mlmg(i,j) > 180 mlmgR(i,j) = 255; else mlmgR(i,j) = 2 * mlmg(i,j); end end end mlmgG = zeros(m,n); for i = 1:m for j = 1:n if mlmg(i,j)< 60 mlmgG(i,j) = 3 * mlmg(i,j); elseif mlmg(i,j) > 180 mlmgG(i,j) = 3 * (255 - mlmg(i,j)); else mlmgG(i,j) = 255; end end end mlmgB = zeros(m,n); for i = 1:m for j = 1:n if mlmg(i,j) < 150 mlmgB(i,j) = 255; else mlmgB(i,j) = 2 * (255 -mlmg(i,j)); end end end mlmgRGB = uint8(zeros(m,n,3)); mlmgRGB(:,:,1) = mlmgR; mlmgRGB(:,:,2) = mlmgG; mlmgRGB(:,:,3) = mlmgB; subplot(221),imshow(mlmgRGB(:,:,1)),title('R') subplot(222),imshow(mlmgRGB(:,:,2)),title('G') subplot(223),imshow(mlmgRGB(:,:,3)),title('B') subplot(224),imshow(mlmgRGB),title('RGB');
c.运行结果
学到这里,我们应该能够很清晰的看到,空间域灰度级—伪彩色变换的实质就是利用彩色图像的R,G,B分量图(灰度图),分别对它们作相应的线性灰度变换,最后将其合成到一幅彩色图像中。
频率域伪彩色增强的方法是:
(1)把黑白图像经傅立叶变换到频率域,在频率域内用三个不同传递特性的滤波器分离成三个独立分量;
(2)然后对它们进行逆傅立叶变换,便得到三幅代表不同频率分量的单色图像,接着对这三幅图像作进一步的处理(如直方图均衡化)
(3)最后将它们作为三基色分量分别加到彩色显示器的红、绿、蓝显示通道,得到一幅彩色图像。
类似于彩色图像空域增强,彩色图像的频域增强的本质也就是对彩色图像的R,G,B分量图(灰度图)先分别进行频域处理,在转换为灰度图后有进行相关的灰度变换,最后合成为一幅彩色图像。在这里就不赘述举例了,感兴趣的可以类似上面的方法进行处理。
假彩色增强是对一幅自然彩色图像或同一景物的多光谱图像,通过映射函数变换成新的三基色分量,彩色合成使感兴趣目标呈现出与原图像中不同的、奇异的彩色。
假彩色增强目的:一是使感兴趣的目标呈现奇异的彩色或置于奇特的彩色环境中,从而更引人注目;二是使景物呈现出与人眼色觉相匹配的颜色,以提高对目标的分辨力。
多光谱图像的假彩色增强可表示为:
将可见光与非可见光波段结合起来,通过假彩色处理,就能获得更丰富的信息,便于对地物识别。
对于自然景色图像,通用的线性假彩色映射可表示为
例如采用下面的映射关系:
原图像中绿色物体会呈蓝色,蓝色物体会呈红色,红色物体则呈绿色。
代码:
%(4)假彩色增强
img = imread('Pepper.bmp');
subplot(121),imshow(img),title('Original image');
trans = [0 1 0; 0 0 1;1 0 0];
m = size(img, 1);
n = size(img, 2);
for i=1:m
for j=1:n
a(:) = img(i,j,:);
img(i,j,:) = double(a) * trans;
end
end
subplot(122), imshow(img),title('Transform image');
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。