数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)

空域滤波

空间滤波根据其功能划分为平滑滤波和锐化滤波。首先介绍平滑滤波。

平滑滤波

平滑算法有很多种,这里进行两种平滑滤波算法——均值滤波和中值滤波的比较,滤波器模板均为 3*3;在滤波器都需要延拓两行两列,使用镜像的延拓方式。下面是各自算法的描述。

实验思路

均值滤波首先取出计算的像素点 33 范围内的所有的点,之后利用其灰度值求均值,计算结果为滤波后的当前像素点的灰度值。
中值滤波首先取出计算的像素点 3
3 范围内的所有的点,之后进行按像素的灰度值的大小排序,取中位数作为当前像素点的值。

代码

主函数:

%%
clc; 
clear;
close all;

%% 读取图像
filename = 'circuit'; % 受到椒盐噪声污染的电路板X射线图像
im = imread([filename, '.jpg']);

%% 图像的滤波次数
times = 1000; 
im_a = im;
im_m = im;

for i = 1:times
%% 将图像进行均值滤波
   % im_a = myAverage(im_a);

%% 将图像进行中值滤波
    im_m = myMedian(im_m);
end
    
%% 将结果保存到当前目录下的result文件夹下
imwrite(im_a, sprintf('result/_%s_a.jpg', filename));
imwrite(im_m, sprintf('result/_%s_m.jpg', filename));

%% 显示结果
figure(1); 
subplot(131); imshow(im); title('原图'); axis on
subplot(132); imshow(im_a); title('5次均值滤波'); axis on
subplot(133); imshow(im_m); title('5次中值滤波'); axis on

功能函数:

function [img_2] = myAverage(img_1)

size_1 = size(img_1);
h = size_1(1);
w = size_1(2);
img_2 = zeros(h, w);

%%边缘延拓两行两列
a = img_1(1,:);
b = img_1(h,:);
img_1 = [a;img_1;b];
c = img_1(:,1);
d = img_1(:,w);
img_1 = double([c,img_1,d]);

%3X3均值模板
L = 1/9*[1 1 1;1 1 1;1 1 1];

for i= 1:h
    for j = 1:w
        im = [img_1(i,j) img_1(i,j+1) img_1(i,j+2);...
            img_1(i+1,j) img_1(i+1,j+1) img_1(i+1,j+2);...
            img_1(i+2,j) img_1(i+2,j+1) img_1(i+2,j+2)];
        img_2(i,j) = round(sum(sum(L.*im)));
    end
end
img_2 = uint8(img_2);
end
function [img_2] = myMedian(img_1)

size_1 = size(img_1);
h = size_1(1);
w = size_1(2);
img_2 = zeros(h, w);

temp = zeros(9,1);

%%边缘延拓两行两列
a = img_1(1,:);
b = img_1(h,:);
img_1 = [a;img_1;b];
c = img_1(:,1);
d = img_1(:,w);
img_1 = [c,img_1,d];

for i= 1:h
    for j = 1:w
        %获得模板区的值
        %对模板区的值进行排序
        %选取中值
        img_2(i,j) = median([img_1(i,j) img_1(i,j+1) img_1(i,j+2)...
            img_1(i+1,j) img_1(i+1,j+1) img_1(i+1,j+2)...
            img_1(i+2,j) img_1(i+2,j+1) img_1(i+2,j+2)]);
    end
end
img_2 = uint8(img_2);
end

实验结果

数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)_第1张图片
数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)_第2张图片
数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)_第3张图片

实验分析

平滑滤波:能减弱或者消除图像中高频率分量,但不影响低频率分量,在实际应用中可用来消除噪声。均值滤波和和中值滤波都可以起到平滑图像,虑去噪声的功能。

均值滤波采用线性的方法,平均整个窗口范围内的像素值,均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。均值滤波对高斯噪声表现较好,对椒盐噪声表现较差。

中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效, 同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪 声表现较差。

滤波次数的影响,随着滤波的次数逐渐增加,均值滤波计算的结果越来越模糊,这是因为 均值滤波的本质是低通滤波器,多次迭代之后,图像保留的部分的频率越来越低,最后不难猜测图像的结果是各个像素点的灰度值相同。这是中值滤波不会发生和上面相似的情况,但是图像的部分高频的细节被当做噪声消除,图像变得过于平滑。理论上说无限次的中值的最终结果是使图像的高频成分彻底丧失,比如图像的细节或者纹理成分,但是会保留一些低频的图像细节。

锐化滤波

图像锐化是针对常见的图像模糊、边缘不清晰所采用的的处理方法,与平滑滤波相反,它 能够减弱或者消除图像中低频率分量,但不影响高频率分量,可使图像反差增加,加强图像的轮廓,是图像变得比较清晰。主要的目的:突出灰度的过度部分。

实验思路

利用二阶微分算子拉普拉斯算子进行图像的锐化,常见的拉普拉斯算子有
[0 -1 0;-1 4 -1;0 -1 0] 和 [-1 -1 -1;-1 8 -1;-1 -1 -1],本次使用的 3X3 模板是 [-1 -1 -1;-1 8 -1;-1 -1 -1]。首先取出计算的像素点 3X3 范围内的所有的点,之后进行按模板的参数加权求和,最后再加上原图像的灰度值,可以得到锐化后的像素点灰度值。

代码

主函数:

%%
clc; 
clear;
close all;

%% 读取图片
filename = 'moon'; %测试图像1
im = imread([filename, '.jpg']);

%% 将图像进行锐化
im_s = mySharpen(im);

%% 将结果保存到当前目录下的result文件夹下
imwrite(im_s, sprintf('result/_%s_s.jpg', filename));

%% 显示结果
figure(1); 
subplot(121); imshow(im); title('原图'); axis on
subplot(122); imshow(im_s); title('图像锐化'); axis on

功能函数:

function [img_2] = mySharpen(img_1)

size_1 = size(img_1);
h = size_1(1);
w = size_1(2);
img_2 = zeros(h, w);

%%边缘延拓两行两列
a = img_1(1,:);
b = img_1(h,:);
img_1 = [a;img_1;b];
c = img_1(:,1);
d = img_1(:,w);
img_1 = double([c,img_1,d]);

%拉普拉斯算子
L = [-1 -1 -1;-1 8 -1;-1 -1 -1];

for i= 1:h
    for j = 1:w
        im = [img_1(i,j) img_1(i,j+1) img_1(i,j+2);...
            img_1(i+1,j) img_1(i+1,j+1) img_1(i+1,j+2);...
            img_1(i+2,j) img_1(i+2,j+1) img_1(i+2,j+2)];
        img_2(i,j) = round(sum(sum(L.*im)));
        img_2(i,j) = img_2(i,j) + img_1(i+1,j+1);
    end
end
img_2 = im2uint8(img_2/255);
end



实验结果

原图:
数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)_第4张图片
结果图:数字图像处理3:空域滤波(图像平滑:均值,中值。图像锐化)_第5张图片

实验分析

通过对数字图像进行锐化处理,可以增强图像的边缘,使模糊的图像变得清晰起来,用
Laplacian 算子可以达到细节增强的目的。

实验小结

本次实验,研究了灰度变换中的直方图均衡,通过直方图均衡来改变像素分布位置,从而提高图像的对比度,对于图像来说,处理结果比较理想。但是如果变换后图像的灰度级减少,也会导致图像某些细节的消失。

之后研究空域滤波中的两种平滑滤波算法和一种锐化滤波算法。在实验中分析研究了平滑滤波的本质是低通滤波,对于均值滤波,它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,但是通过分析可以知道对于高斯噪声它有很好的消除效果。对于中值滤波,它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,对椒盐噪声表现较好,但是对高斯噪声表现较差。对于锐化滤波,可以突出图像的边缘细节,让模糊的图片变得清晰,增强细节。

你可能感兴趣的:(数字图像处理,算法,计算机视觉,matlab)