数字图像处理实验报告(全答案).. 下载本文

四、实验总结

1、比较不同平滑滤波器的处理效果,分析其优缺点

2、比较不同锐化滤波器的处理效果,分析其优缺点

实验五 图像恢复和图像分割

一、实验目的

1、熟悉并掌握MATLAB图像处理工具箱的使用; 2、理解并掌握常用的图像的恢复和分割技术。 二、实验环境

MATLAB 6.5以上版本、WIN XP或WIN2000计算机 三、相关知识

1 deconvwnr 维纳滤波,

用法:J = deconvwnr(I,PSF,NSR)

用维纳滤波算法对图片I进行图像恢复后返回图像J。 I是一个N维数组。PSF是点扩展函数的卷积。NSP是加性噪声的噪声对信号的功率比。

如:

I = im2double(imread('cameraman.tif')); imshow(I);

title('Original Image '); %模拟运动模糊 Matlab中文论坛 LEN = 21; THETA = 11;

PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'conv', 'circular'); figure, imshow(blurred) %恢复图像www.iLoveMatlab.cn

wnr2 = deconvwnr(blurred_noisy, PSF); figure, imshow(wnr2) title('Restoration of Blurred')

2 edge

检测灰度或者二值图像的边缘,返回一个二值图像,1像素是检测到的边缘,0像素是非边缘。

用法:BW = edge(I,'sobel',thresh,direction),

I为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;

thresh指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;direction方向,在所指定的方向direction上,用 算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。

如:I = imread('circuit.tif');

BW1 = edge(I,'prewitt'); imshow(BW1); 3 strel

创建形态学结构元素。 用法:

SE = STREL('arbitrary',NHOOD,HEIGHT) 创建一个指定领域的非平面结构化元素。HEIGHT是一个矩阵,大小和NHOOD相同,他指定了NHOOD中任何非零元素的高度值。

SE = STREL('ball',R,H,N) 创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。R必须为非负整数,H是一个实数。N必须为一个非负偶数。当N>0时此球形结构元素由一系列空间线段结构元素来近似。 SE = STREL('diamond',R) 创建一个指定大小R平面钻石形状的结构化元素。R是从结构化元素原点到其点的距离,必须为非负整数。

SE = STREL('disk',R,N) 创建一个指定半径R的平面圆盘形的结构元素。这里R必须是非负整数. N须是0, 4, 6, 8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。N可以被忽略,此时缺省值是4。注: 形态学操作在N>0情况下要快于N=0的情形。

如:

se1 = strel('square',11) % 11乘以11的正方形 4 imerode 腐蚀图像

用法:IM2 = imerode(IM,SE)

腐蚀灰度、二进制或压缩二进制图像 IM ,返回腐蚀图像 IM2 。参数 SE 是函数 strel 返回的一个结构元素体或是结构元素体阵列。

如:使用一个盘状结构元素腐蚀一幅二进制图像。 originalBW = imread('circles.png'); se = strel('disk',11);

erodedBW = imerode(originalBW,se);

imshow(originalBW), figure, imshow(erodedBW)

5 imdilate 膨胀图像

用法:IM2 = imdilate(IM, SE)

膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。

如:利用一个运行结构元素膨胀灰度图像。 I = imread('cameraman.tif'); se = strel('ball',5,5); I2 = imdilate(I,se);

imshow(I), title('Original')

figure, imshow(I2), title('Dilated')

三、实验步骤

1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。 i=imread('f:\\1.jpg') I=rgb2gray(s)

I = im2double(I); %模拟运动模糊 LEN = 21; THETA = 11;

PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'conv', 'circular'); %恢复图像

wnr2 = deconvwnr(blurred, PSF);

subplot(1,2,1);imshow(blurred);title('运动模糊图像') subplot(1,2,2);imshow(wnr2);title('恢复图像')

2、采用三种不同算子检测图像边缘,显示结果。 i=imread('f:\\1.jpg')

BW1 = edge(I,'prewitt'); BW2 = edge(I,'zerocross'); BW3 = edge(I,'canny');

subplot(2,2,1);imshow(i);title('原图像')

subplot(2,2,2);imshow(BW1);title('prewitt边缘图') subplot(2,2,3);imshow(BW2);title('zerocross边缘图') subplot(2,2,4);imshow(BW3);title('canny边缘图')

3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。

a=imread('f:\\1.jpg') i = rgb2gray(a) I = im2bw(a,0.5)

se3 = strel('disk',3);

erodedBW1 = imerode(I,se3); se4 = strel('disk',5);

erodedBW2 = imerode(I,se4); se1 = strel('ball',3,3); I1 = imdilate(a,se1); se2 = strel('ball',5,5); I2 = imdilate(a,se2);

subplot(2,2,1);imshow(I1);title('3*3膨胀图像') subplot(2,2,2);imshow(I2);title('5*5膨胀图像')

subplot(2,2,3);imshow(erodedBW1);title('3*3腐蚀图像') subplot(2,2,4);imshow(erodedBW2);title('5*5腐蚀图像')