为什么最后计算出来的两组MSE,PSNR值是一样的?没可能啊,求大神修改,程序如下:
I=imread('boat.bmp');
J=imnoise(I,'gaussian',0,0.01);
Jg=double(J);
%均值滤波
k1=filter2(fspecial('average',3),Jg);
k2=filter2(fspecial('average',5),Jg);
figure,subplot(221),imshow(I);title('原图');
subplot(222),imshow(J);title('加入高斯白噪声以后的图像');
subplot(223),imshow(uint8(k1));title('3*3模板均值滤波');
subplot(224),imshow(uint8(k2));title('5*5模板均值滤波');
%中值滤波
k3=medfilt2(Jg,[3 3]);
k4=medfilt2(Jg,[5 5]);
figure,subplot(221),imshow(I);title('原图');
subplot(222),imshow(J);title('加入高斯白噪声以后的图像');
subplot(223),imshow(uint8(k3));title('3*3模板中值滤波');
subplot(224),imshow(uint8(k4));title('5*5模板中值滤波');
%计算均值滤波后图像的PMSE与PSNR
[X]=I; %装载原始图像
[Y]=k1; %装载处理后的图像
mse=0;
%这里假定所处理图像为8比特的灰度图像,L = 512
for i=1:512
for j=1:512
mse=mse+(X(i,j)-Y(i,j))*(X(i,j)-Y(i,j));
end
end
mse=double(mse)/(512*512)
psnr=double(10*log(512*512/mse)/log(10));
%下面计算原始图像文件的熵
t(1)=0; %保存各个灰度值出现概率
for i=1:512
t(i)=0;
end
%给每个灰度值计数
for i=1:512
for j=1:512
t(X(i,j)+1)=t(X(i,j)+1)+1;
end
end
%计算各个灰度值出现的概率
for i=1:512
t(i)=t(i)/(512*512);
end
entropy =0; %计算图像熵
for i=1:512
if t(i)>0
entropy = entropy -t(i)*log(t(i))/log(2)
end
end
pmse_avg=mse;
psnr_avg=psnr;
entropy_avg=entropy;
%计算中值滤波后的各项指标
[Y]=k3; %装载处理后的图像
mse=0;
%这里假定所处理图像为8比特的灰度图像,L = 255
for i=1:512
for j=1:512
mse=mse+(X(i,j)-Y(i,j))*(X(i,j)-Y(i,j));
end
end
mse=double(mse)/(512*512)
psnr=10*log(512*512/mse)/log(10);
%下面计算原始图像文件的熵
t(1)=0; %保存各个灰度值出现概率
for i=1:512
t(i)=0;
end
%给每个灰度值计数
for i=1:512
for j=1:512
t(X(i,j)+1)=t(X(i,j)+1)+1;
end
end
%计算各个灰度值出现的概率
for i=1:512
t(i)=t(i)/(512*512);
end
entropy =0; %计算图像熵
for i=1:512
if t(i)>0
entropy = entropy -t(i)*log(t(i))/log(2)
end
end
pmse_mid=mse;
psnr_mid=psnr;
entropy_mid=entropy;
求均值滤波和中值滤波算法的MATLAB代码
5*5的均值滤波代码 w2=fspecial('average',[5 5]); %% 先定义一个滤波器 h=imfilter(a,w2,'replicate'); %%让图像通过滤波器 imshow(h);imwrite(h,'8.jpg');中值的暂时还不会
怎样用matlab进行图像滤波处理
1、打开软件,读入图片。2、分别建立3*3高斯滤波模板和平均滤波模板,并对加噪的图片进行滤波处理。显示原图、加噪后的图片和分别用高斯、平均模板滤波后的图片。3、图片结果如图,可以看出平均模板滤波后噪声十分明显,高斯模板滤波后噪声影响相对较小,但也很容易看出。4、使用中值滤波对图片进行处理,并...
matlab图像平滑处理,用邻域平均法和中值滤波法实现图像平滑处理。求源...
subplot(2,2,2),imshow(J2); %显示有高斯噪声图像 I1= medfilt2(J1,[5,5]); %对有椒盐噪声图像进行5×5方形窗口中值滤波 I2= medfilt2(J2,[5,5]); %对有高斯噪声图像进行5×5方形窗口中值滤波 subplot(2,2,3),imshow(I1); %显示有椒盐噪声图像的滤波结果 subplot(2,...
matlab图像去噪算法里 均值滤波跟中值滤波降噪为什么必须转换成灰度图像...
其实都可以对彩色图像处理的,只是matlab里面的实现不一致。均值滤波和中值滤波matlab函数只考虑了单通道当然就必须转换成灰度图像;小波降噪的matlab函数不知道你是用的那个,肯定也需要把三通道的彩色图像先转换成单通道,分别去噪以后再整合成彩色图像。总的来说一般图像去噪都是对单通道来处理的,因为大部...
matlab图像处理教程
2.图像的常用处理语句:(1) X=rgb2gray(I) ; imshow(X) %彩色图像转灰度图像 (2)X2=grayslice(I,64) ; imshow(X2,hot(64)) %将灰度图像转为索引色图像 (3) X3=im2bw(X1) ; imshow(X3) %将图像转二值图像 3.图像滤波:clear all g0=imread('lena.tif')g0 = g0(:,:,...
在matlab中,中值滤波函数怎么编,求代码???
中值滤波,以某点前n个点的中值作为该点的估计值function y = zhongzhi(x,n) %x为列向量m = length(x);y = zeros(m,1);for i = 1:n y(i,1) = median(x(1:i,1:1));endfor i = n+1:m y(i,1) = median(x(i-n:i-1,1:1));endplot((1:m),x,'-b');hold...
用MATLAB进行中值滤波
b=medfilt2(a,[m,n]);b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版大小,默认3×3。
MatLab 图像处理
图像由像素构成,黑白图像的每个像素由0或1表示,灰度图像每个像素由1字节(8-bit)表示,而彩色图像则包含RGB三通道的数值。在MatLab中,可以使用imread()读取图像,imshow()显示图像,imageinfo()获取图像信息,imtool()则是一个图像查看器。图像处理是信号处理的一种应用,常见操作如降噪、滤波(如...
MATLAB--数字图像处理 频域图像分析
频域图像分析 1.熟悉MATLAB软件的使用。 2.掌握频域图像分析的原理及数学运算。 1.自选一幅图像,并对其分别添加一定强度的周期噪声和高斯噪声,然后分别采用高斯模板、中值滤波的时域方法以及傅里叶变换和小波变换的频率滤波方法对该含噪图像进行去噪处理,并基于PSNR值和视觉效果这两个指标来比较这四种滤波方法对两种不...
MATLAB 进行彩色图像处理
中值滤波:通过medfilt2(inputImg, [m n])对图像进行中值滤波,有效去除噪声。边缘检测:使用edge(img, method)实现边缘检测,方法包括Sobel、Prewitt、Canny算子等。图像分割:图像分割技术广泛应用于医学、机器视觉等领域,MATLAB提供多种图像分割函数,如阈值分割、区域分割、边缘分割等。上述MATLAB图像处...