实验二:图像的增强

数字图像处理完整MATLAB代码在我的资源可以看到,为方便下载,下面是百度网盘资源:

链接:https://pan.baidu.com/s/17S7PZJwwvb3PFMFVxqEY5w 
提取码:HUAT

目录

一、实验目的与要求

二、实验预习部分

三、实验内容及步骤


完整代码:

链接:https://pan.baidu.com/s/1TK6kVMd5_IaAyIcXyaci1g 
提取码:HUAT

一、实验目的与要求

1.了解常见图像噪声及其对图像的影响。

2.掌握常用图像去噪及增强的基本原理和方法。

二、实验预习部分

1. 学习常见图像噪声类型;

2. 学习图像灰度变换、直方图均衡化、邻域平均法、中值滤波这些空间域图像增强原理及方法,以及频域低通滤波方法;

3.学习《Matlab图像处理教程简易教程》中“图像点运算”中的灰度变换和直方图增强部分;“空间域图像增强”中内容和“频率域图像增强”中的傅里叶变换下的理想低通的内容;

4.学习并记录在matlab中实现以下功能需要的函数及其用法。

1)添加图像噪声的函数imnoise()及其用法:

J= imnoise(I,'gaussian')将方差为 0.01 的零均值高斯白噪声添加到灰度图像I。

2)通过学习,试编写灰度变换的程序;

灰度的Gamma变换

I=imread('nir.bmp');

figure;imshow(imadjust(I,[],[],0.5)); %gamma=0.5

title('Gamma 0.5');

3)图像均衡化的实现函数histeq()的用法;

J = histeq(I,n) 变换灰度图像 I,以使输出灰度图像 J 具有 n 个 bin 的直方图大致平坦。当 n 远小于 I 中的离散灰度级数时,J 的直方图更平坦。

4)均值滤波所用的函数fspecial()和imfilter()的用法;

B=imfilter(f,w,option1,option2,…);

f 为要进行滤波操作的图像。

w为滤波操作使用的模板,为一个二维数组,可自己定义。

option1……是可选项,包括:

1、边界选项(’symmetric’、’replicate’、’circular’)

2、尺寸选项(’same’、’full’)

3、模式选项(’corr’、’conv’)

h=fspecial(type,parameters)

parameters为可选项,是和所选定的滤波器类型type相关的

配置参数,如尺寸和标准差等。

5)实现中值滤波的函数medfilt2()用法;

h=medfilt2(I1,[m,n]);

m和n为中值滤波处理的模板大小,默认3*3

6)学习频域中低通滤波器的构建及对图像的滤波处理的方法。

理想低通滤波器的构建:

%imidealflpf函数    构造高斯频域低通滤波器

[M,N] = size(I);

out = ones(M,N);

for i=1:M

    for j=1:N

    if (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)

    out(i,j)=0;

        end

    end

end

图像滤波处理的方法:

Imread函数读取图像

调用fft2函数对图像进行DFT处理

调用abs函数取得频谱采用log处理,进行灰度压缩

调用fftshift函数中心化处理

利用理想低通滤波器imidealflpf对图像频谱进行滤波,滤除高频成分

调用ifftshift函数去中心化处理

对输出结果ifft2反变化得到滤波后的图像

三、实验内容及步骤

1.在实验一的基础上,在GUI界面增加图像增强处理功能菜单或者控件,显示新增功能如下:

2.分析对比图像去噪算法

2.1. 高斯噪声的图像处理

1)打开一幅图像,显示结果:

2)添加高斯噪声,显示结果:

3)用尺寸大小为3×3的模板进行均值滤波,显示结果:

4)用尺寸大小为5×5的模板进行均值滤波,显示结果:

5)对噪声图像进行高斯滤波,显示结果:

6)对噪声图像进行中值滤波,显示结果:

7)根据上面结果分析均值滤波、高斯滤波和中值滤波对高斯噪声的图像去噪效果,分析去除高斯噪声用哪种方法更合适。

高斯滤波>中值滤波>均值滤波

高斯滤波更适合去除高斯噪声

8)记录上述方法的函数执行语句,写入实验报告中每步执行效果之前。

2.2椒盐噪声的图像去噪

1)打开一幅图像,显示结果:

2)添加椒盐噪声,显示结果:

3)用尺寸大小为3×3的模板进行均值滤波,显示结果:

4)用尺寸大小为5×5的模板进行均值滤波,显示结果:

5)对噪声图像进行中值滤波,显示结果:

6)编写程序实现图像的频域滤波处理

采用傅立叶变换将图像转化到频域中,设计一个低通滤波器,对含椒盐噪声的图像进行频率域滤波,滤波后结果逆变换回来。

程序:

global My_GUI_handles;

fre=get(hObject,'Value');

set(handles.text_l_f1,'String',num2str(fre));





axes(My_GUI_handles.axes_dst);

img_src=getimage(My_GUI_handles.axes_src);

img_src=rgb2gray(img_src);

img_src1=double(img_src);

img_src2=abs(fftshift(fft2(img_src1)));

imshow(log(img_src2),[]);

title('图像傅里叶变换取对数所得频谱');



axes(My_GUI_handles.axes_src1);

[a,b] = size(img_src1);

s_max = min(a/2,b/2);

s_max = s_max^2;

set(handles.slider_l_f1,'Max',double(s_max));





img_src5= low_filter(fftshift(fft2(img_src1)),fre);

imshow(log(abs(img_src5)),[]);

title('低通滤波频谱');



axes(My_GUI_handles.axes_dst1);

new_img = uint8(real(ifft2(ifftshift(img_src5))));

imshow(new_img,[]);

title('低通滤波后的图像');

低通滤波器:

function l_f = low_filter(img,fre)

%此函数用于对图像进行滤波

%主要原理为在图像平移后频谱图进行圈定范围(面积)操作,面积外的设为0(滤除高频成分)

%img为图像平移后频谱图,fre为圈定的频谱范围

[a,b] = size(img);

a0 = round(a/2);

b0 = round(b/2);

for i=1:a

    for j=1:b

        distance = (i-a0)^2+(j-b0)^2;

        if distance<fre

            h = 1;

        else

            h = 0;

        end

        l_f(i,j) = h*img(i,j);

    end

end



end

傅立叶变换后的结果显示:

频率域滤波的结果:

滤波结果逆变换到空间域的结果:

7) 根据上面结果分析均值滤波和中值滤波对椒盐噪声的去噪效果,分析哪种方法更适合椒盐噪声的去除?

中值滤波更适合椒盐噪声的去除,因为椒盐噪声在图像频谱中处于高频部分,相较于均值滤波,中值滤波对高频噪声的处理会更好。

8)记录上述每一步的函数执行语句,写入实验报告。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值