基于Matlab的图像增强(二)

在图像的空域处理方法中,主要分为两大类,一种就是基于图像像素的点运算,它是对图像的每一像素进行处理,另外一种就是基于模板(子图模块)的空域滤波,这种处理在每次处理过程中都基于图像中某个小的区域。其中,基于模板的图像增强,亦称邻域增强,根据处理效果不同,又可分为图像平滑图像锐化
空域滤波中,模板又称为滤波器,分为线性滤波器和非线性滤波器。空域滤波的机理就是在待处理的图像中逐点地移动模板,滤波器在该点的响应通过事先定义好的滤波器系数与滤波模板扫过区域的相应像素值的关系来计算

1.2图像的空间域平滑

图像平滑,平滑的目的在于消除混杂在图像中干扰因素,比如噪声噪声),改善图像质量,强化图像表现特征。平滑滤波器对像素及其邻域进行了平均化,使图像看起来比较平滑。
空间域图像平滑的表示:
其中,f(x,y):原图像,g(x,y):平滑后图像,h(x,y)低通滤波器函数,A是其作用域。

1.2.1掩模消噪法

(1)消除噪声原理


由于一幅图像的大部分像素的灰度与临近像素的灰度差别不大,存在着很大的像素相关性,这就导致图像的能量主要集中在低频区域,只有图像的细节部分的能量处在高频区域内。由于噪声的随机性,它对某一像素点的影响将其灰度和邻点灰度差别较大,所以图像噪声就往往分布在高频区域中。(图像中的高频分量和低频分量)如此,就分析出了去掉噪声的有效途径,即衰减高频分量,增强低频分量(低通滤波)。

(2)掩模

a.掩模–模板操作

在这里插入图片描述
b.掩模–模板操作举例

c.常见掩模

掩模不同,中心点或邻域的重要程度也不相同,因此,应根据问题的需要选取合适的掩模。但不管什么样的掩模,必须保证全部权系数之和为单位值,这样可保证输出图像灰度值在许可范围内,不会产生“溢出”现象。

(3)掩模消噪举例

代码:

%2.图像的空间域增强
%1)图像的空间域平滑--局部平滑法
mImg = imread('Pepper.bmp');
mImg = rgb2gray(mImg);
 
%mNoise = 0.1*rand(size(mImg));
% mImgNoise=imadd(mImg,im2uint8(mNoise));
mImgNoise = imnoise(mImg,'salt & pepper');
 
mBlock = [1 1 1; 1 1 1; 1 1 1]/9;
mImgFilter = filter2(mBlock,mImgNoise);%filter2,二维数字滤波
mImgFilter = mat2gray(mImgFilter);
 
mBlock1 = fspecial('average');%创建一个之前定义好了的卷积模板
mImgConv = conv2(mImgNoise, mBlock1, 'same');%conv2,二维卷积函数
mImgConv = mat2gray(mImgConv);
 
figure;
subplot(221), imshow(mImg),title('Original image');
subplot(222), imshow(mImgNoise),title('Image after adding noise');
subplot(223), imshow(mImgFilter);
subplot(224), imshow(mImgConv);

运行结果:

总结:
观察运行结果可知,经过滤波,降低了椒盐噪声的强度,但同时也使得图像变得模糊。这表明掩模法只能降低噪声的强度,并不能使图像噪声消去。

1.2.2中值滤波法

中值滤波是对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值。
例如:采用1 x 3窗口进行中值滤波
原图像为: 2 2 6 2 1 2 4 4 4 2 4
处理后为: 2 2 2 2 2 2 4 4 4 4 4
中值滤波对于椒盐噪声有很好的抑制效果,在抑制随机噪声同时能够很好的保护边缘少受模糊。但其对点,线等细节较多的图像处理不太合适。

(1)一维中值滤波

一维中值滤波的若干例子:

(2)二维中值滤波

现实中的图像大多都是二维的,所以一维中值滤波很容易就推广到二维中值滤波,二维中值滤波的形式很多,比如线形,菱形,圆形,方形等,不同的形式处理效果自然相差很多,在图像处理过程中要注意选择。

二维中值滤波举例:
代码:

%2)二维中值滤波
image = imread('Pepper.bmp');
image = rgb2gray(image);
subplot(221),imshow(image),title('Original image');
image1 = imnoise(image,'salt & pepper',0.02);
subplot(222),imshow(image1),title('Salt & pepper image');
image2 = medfilt2(image,[5 5]);%matlab中二维中值滤波函数
subplot(223),imshow(image2),title('Medfilt2 image');

运行结果:

1.2.3掩模消噪VS中值滤波

经过之前的了解,已经知道掩模消噪法只能够削弱图像中噪声的强度,且使得图像模糊化,中值滤波法则能够很好的消除图像中的噪声,且对边缘起到一定保护作用。
接下来,通过一个实例直观感受一下二者的区别:
代码:

%(3)掩模消噪VS中值滤波
mImg = imread('Pepper.bmp');
mImg = rgb2gray(mImg);
 
mImgNoise = imnoise(mImg,'salt & pepper',0.1);
 
mBlock = [1 1 1; 1 1 1; 1 1 1]/9;
mImgFilter = filter2(mBlock,mImgNoise);
% mBlock = fspecial('average');
% mImgConv = conv2(mImgNoise, mBlock, 'same');
mImgFilter = mat2gray(mImgFilter);
 
mImgFilter1 = medfilt2(mImgNoise,[5 5]);
mImgFilter1 = mat2gray(mImgFilter1);
 
subplot(221), imshow(mImg),title('Original image');
subplot(222), imshow(mImgNoise),title('Salt &pepper image');
subplot(223), imshow(mImgFilter),title('Mask noise image');
subplot(224), imshow(mImgFilter1),title('Medfilter image');
%观察结果:可以看到,中值滤波要比局部平滑对椒盐噪声的消除效果要好得多

运行结果:

1.2图像的空间域锐化

在图像的传输过程中,由于传递函数对高频部分有衰减作用,这就造成了图像变的模糊了,细节轮廓不清晰。图像锐化就是补偿图像的边缘轮廓信息,增强图像的边缘及灰度跳变的部分,使得图像变得清晰。图像锐化分为空域处理和频域处理,这里就先讲空域处理。
图像空域锐化有两种基本方法,一种是梯度法(微分法),另一种就是模板匹配法,这里仅介绍梯度法。

1.2.1梯度锐化法

梯度法利用的是相邻像素值的梯度,是一种常见的一次微分方法。在灰度骤变区域,梯度值大;在灰度相似区域,梯度值小;在灰度值为常数区域,梯度为零。反映在图像上就是,图像边缘轮廓处的灰度变化越大,对应的梯度值自然也就越大,从而能够检测出图像的边缘轮廓。

(1)图像的梯度

设有一幅图像f(x,y),其梯度数学描述:

性质
(1)图像的梯度是个矢量,梯度方向为f(x,y)变化率最大的方向;
(2)该梯度向量的模为:

|Grad[f(x,y)]|成为图像f(x,y)的梯度,实际上也是图像f(x,y)的梯度图像

(2)常见的梯度算子模板

根据梯度计算式就可以计算RobertsPrewittSobel梯度。一旦梯度算出后,就可根据不同的需要生成不同的梯度增强图像。

(3)梯度图像的输出形式

a.梯度图像直接输出
表达式

特点:原图像f(x,y)中灰度变化平缓的区域,在输出图像g(x,y)上均变为了暗区,只有图像的轮廓部分,在g(x,y)上才表现出亮区,输出图像g(x,y)整体较暗。

b.加阈值的梯度图像输出
表达式

特点:选择合适的阈值T,即可使图像轮廓清晰突出,又可在一定程度上保持原图像中灰度变化平缓的背景不被破坏。

c.轮廓灰度规定化输出
表达式

特点:在这种输出格式下,将轮廓设置成一个特殊的灰度值,非轮廓部分灰度值不变,轮廓有梯度与阈值T的关系来界定。

d.背景灰度规定化输出
表达式

特点:在这种输出形式下,将输出图像的背景设置成一个特殊的灰度值,图像的轮廓灰度值设成了其梯度值,便于突出图像轮廓。

e.二值图像输出
表达式

特点:这种方式输出的图像,结果是输出图像中所有像素只有两种可能取值,比如,黑白图像。

(4) 不同输出形式举例

代码:

%(5)梯度输出的不同形式
%接下来对图像的处理都是基于索引图像的基础上
[image,map] = imread('eight.tif');
%[A,MAP]=imread(_)将文件名中的索引图像读入A,并将其关联的色彩映射表读入MAP。图像文件中
subplot(321),imshow(image,map),title('Original image');
image = double(image);
[FX,FY] = gradient(image);
GM = sqrt(FX.*FX + FY.*FY);
OUT1 = GM;%梯度图像直接输出
subplot(322),imshow(OUT1,map),title('First form output');

OUT2 = image;%加阈值梯度图像输出
J = find(GM >= 15);
OUT2(J) = GM(J);
subplot(323),imshow(OUT2,map),title('Thresholded gradient');

OUT3 = image;%轮廓灰度规定化输出
K = find(GM >= 20);
OUT3(K) = 255;
subplot(324),imshow(OUT3,map),title('Profile normalization');

OUT4 = image;%背景灰度规定化输出
L = find(GM >= 20);
OUT4(L) = GM(L);
M = find(GM <20);
OUT4(M) = 255;
subplot(325),imshow(OUT4,map),title('Background normalization');

OUT5 = image;%二值灰度图像输出
N = find(GM >= 16);
OUT5(N) = 255;
T = find(GM < 16);
OUT5(T) = 0;
subplot(326),imshow(OUT5,map),title('Black and white');

运行结果:
由于篇幅限制,图像增强的频域处理请参见下一篇。

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值