图像处理,图像滤波,边缘处理

  • 格式:doc
  • 大小:895.00 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

姓名:

学号:

学院:

专业:

课目:数字图像处理

图像处理实验部分

此次实验在MATLAB中实现:打开MATLAB,“file”—“new”—“script”,则创建新文件即完成,在新建的“Editor-Untitled”即可编程。下面简单介绍此次实验中主要应用到的函数:

1、imread

该函数用于读入各种图像文件。如:a=imread(‘rice.tif’),其中图像rice.tif在MATLAB安装目录“matlab”-“toolbox”-“images”-“imdemos”下,若图片不在该目录下,则读入图像格式如下:

a=imread(‘D:\Demo4.bmp’)。

2、imshow

该函数用于图像文件得显示。如a=imshow(‘rice.tif’)。

3、rgb2gray

该函数用于将彩色转为黑白图像。如:I=rgb2gray[I]。

4、subplot

该函数一般格式为:subplot(m,n,p),用于在同一窗口中绘制多

个子图,把图形窗口分割为m*n个子图,然后再第P个小窗口中

创建坐标轴。

5、fspecial

利用该函数可生成滤波时所用的模板。其调用格式如下:

(1)h=fspecial(type)

(2)h=fspecial(type,parameters)

参数type指定滤波器的类型,parameters是与滤波器类型有关的具体参数。

6、medfilt2

该函数用于实现中值滤波。其调用格式如下:

B= medfilt2(A,[m,n]):对图像A执行二维中值滤波。每个输出像素为m*n领域的中值。在图像边界用0填充,所以边缘的中值为[m,n]/2,区域的中值,可能失真。

7、imfilter

该函数对任意类型数组或多维图像进行滤波。调用方法如下:

B=imfilter(A,H)

B=imfilter(A,H,option1,option2,…)

或g=imfilter(f,w,filtering_mode,boundary_options,size_options) 其中,f为输入图像,w为滤波掩膜,g为滤波后图像。filtering_mode 用于指定在滤波过程中使用“相关”还是“卷积”。boundary_options用于处理的边界充零问题,边界的大小由滤波器的大小确定。

一、图像滤波:

1、均值滤波

基本原理是用均值代替原图像中的各个像素值,即对待处理的

当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度值g(x,y)。

3*3,5*5,7*7窗口下均值滤波实验程序如下:

clear all

I=imread('D:\A.jpg');

J=imnoise(I,'gaussian',0,0.02); %加入均值为0,方差为0.01的高斯噪声

w1=fspecial('average',[3 3]); %% 先定义3*3窗口的滤波器

w2=fspecial('average',[5 5]); %% 先定义5*5窗口的滤波器

w3=fspecial('average',[7 7]); %% 先定义7*7窗口的滤波器

a=imfilter(J,w1,'replicate'); %%让图像通过滤波器

b=imfilter(J,w2,'replicate');

c=imfilter(J,w3,'replicate');

subplot(2,3,1);

imshow(I);

title('原始图像');

subplot(2,3,2);

imshow(J);

title('加入高斯噪声后图像');

subplot(2,3,3);

imshow(a);

title('3*3均值滤波图像');

subplot(2,3,4);

imshow(b);

title('5*5均值滤波图像');

subplot(2,3,5);

imshow(c);

title('7*7均值滤波图像');

运行结果:

MATLAB中实现的均值滤波结果(包括3*3,5*5,7*7窗口)

2、中值滤波

中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升的二维数据序列,并取出序列中位于中间位置的灰度作为中心像素的灰度。

对一个滑动窗口内的诸像素灰度值排序,用中值代替窗口中心像素的原来灰度值(非线性)。中值滤波法能有效削弱椒盐噪声,且比

邻域、超限像素平均法更有效

3*3,5*5,7*7中值滤波实验程序:

clear all

I=imread('D:\shu.bmp');

I=rgb2gray(I);

J=imnoise(I,'salt& pepper',0.02);

subplot(2,3,1);

imshow(I);title('原图像');

subplot(2,3,2);

imshow(J);title('添加椒盐噪声图像');

k1=medfilt2(J); %进行3*3模板中值滤波k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波subplot(2,3,3);

imshow(k1);title('3*3模板中值滤波');

subplot(2,3,4);

imshow(k2);title('5*5模板中值滤波');

subplot(2,3,5);

imshow(k3);title('7*7模板中值滤波');

结果: