帮忙看下图像平滑的Matlab程序

来源:百度知道 编辑:UC知道 时间:2024/07/08 02:24:22
局部几何矩实现图像平滑
基本思想:一般情况下,图像在传送和转换的过程中,会不可避免地受到噪声的污染,对加噪图像求它的零阶局部几何矩W00 ,然后除以窗口的尺寸(L*L),这样就可以实现图像的平滑,达到较好的去噪声效果。
这里呢W00=[1 1 1;1 1 1;1 1 1]、
事实上,就是用3*3的模板w00去处理一个个像素和领域
这里Lena是256*256的
到底该怎么做呢
是不是知道W00后,除以9,取平均,在来卷积。但是出来没图像,也就是没有去噪后的图像
望大人指教

clear all;
image=imread('lena.bmp');
[m,n]=size(image);
subplot(2,2,1),imagesc(image),colormap(gray) %显示原图像
image1=imnoise(image,'gaussian',0,0.002); %加高斯噪声
subplot(2,2,2),imagesc(image1),colormap(gray) %显示滤波前的图像
%局部几何矩滤波
image2=image1;
temp1=ones(3,3);
for i=2:m-1
for j=2:n-1
temp=image1(i-1:i+1,j-1:j+1);
image2(i,j)=filter2(temp1,temp); %做3*3的模板,平滑去噪
end
end %做3*3的模板,平滑去噪
subplot(2,2,3),imagesc(image2),colormap(gray) %显示滤波后的图像
不知道哪里错了
-------------------------------------------
我改成这样
clear all;
image=imread('lena.bmp');
subplot(2,2,1),imagesc(image),colormap(gray)

首先,我觉得你这个模板就选择有问题,图像一般都是4的倍数,你选择1个3维的滤波器,会造成边缘处理不了。
你改的2,看出你已经发现问题,滤波后的image2是矩阵,不是一个值。我不是做滤波的,所以对滤波器的选择不太清楚。
不过,你的image2的数据类型,已经不是0-255的灰度图像级。你最好在把他们映射回来。
对于判定,你可以做下PSNR,来看下。