点都被污染,无法找到足够多的为被噪声干扰的点来消除中心点噪声
2、(选做题,20分)设计KNN(K=5, 滤波器大小3*3)均值滤波器对上面两副图进行滤波处理,并简述实验结果不同与一般均值滤波器器的处理结果的原因。
_计算机__学院 网络工程 专业_3___班 学号 3116005027
姓名 杨铠光 教师评定__________________ 实验题目___________数字信号处理实验_____________ 实验五、二维信号高通滤波、三维图像处理 一、实验目的
1、熟悉二维高通滤波器的设计过程。
8
2、能够边缘需求不同,设计不同的高通滤波器器进行滤波处理。 3、熟悉Matlab图像处理工具的一般操作。
二、实验环境
Matlab图像处理工具箱。
三、实验内容
1、设计水平和垂直方向及Sobel高通滤波器对Building.tif与Cups.tif进行处理,并简述实验结果不同的原因。(自己编写卷积过程的加10分)
图1 Building.tif 图2 Cups.tif
1) 实现函数(sharpen_filter.m) %3*3 锐化实现函数
function result = sharpen_filter( picture ,type) switch type case 'hori'
dx=[1 2 1;0 0 0;-1 -2 -1] d=0 case 'vert'
dx=[1 0 -1;2 0 -2;1 0 -1] d=0; case 'sobel'
dx=[-1 0 1;-2 0 2;-1 0 1] dy=[-1 -2 -1;0 0 0 ;1 2 1] end
[height, width]=size(picture); %输入图像是hight x width x1=double(picture); x2=x1;
for i=1:height-2%最后一列不用计算 for j=1:width-2%最后一行不用计算
c=x1(i:i+2,j:j+2).*dx;%取出x1中从(i,j)开始的n行n列元素与模板相乘 c=sum(sum(c)); %求c矩阵中各元素之和 if c>255 c=255; end
9
if strcmp(type,'sobel')
d=x1(i:i+2,j:j+2).*dy;%取出x1中从(i,j)开始的n行n列元素与模板相乘 d=sum(sum(d)); %求d矩阵中各元素之和 if d>255 d=255; end end
x2(i+1,j+1)=round((c^2+d^2)^(1/2)); %将与两模板运算后值赋给模板中心位置的元素 end end
%为被赋值的元素取原值 result=uint8(x2); end
2) 测试
image=imread(' C:\\Users\\yangk\\Desktop\\666\\Building.tif');%读取图片 imshow(image)%显示原图 title('原图') figure
k=sharpen_filter(image,'hori');%水平锐化 imshow(k),title('水平锐化处理图') figure
k=sharpen_filter(image,'vert');%水平锐化 imshow(k),title('垂直锐化处理图') figure
k=sharpen_filter(image,'sobel'); imshow(k),title('Sobel锐化处理图') 3) 结果
10
4) 实验结果不同的原因:由名字可知,水平锐化和垂直锐化各自锐化注重的方向不一样,水平锐化注重水平方向,所以水平方向锐化效果好,垂直锐化注重垂直方向,所以垂直方向锐化效果好,而Sobel锐化水平垂直方向都进行了锐化,故两个方向都锐化效果明显
11
2、设计非线性扩散滤波器对CT图像进行处理,使得低质量图像尽量逼近高质量图像。
12