报告标题:
报告编号:
课程编号:
学生姓名:
截止日期:
上交日期:
数字图像处理 01
摘要
(1)编写函数计算灰度图像的均方误差(MSE )、信噪比(SNR )、峰值信噪比(PSNR )、平均绝对误差(MAE );(2)编写函数对灰度图像经行降采样,直接消除像素以及消除像素前进行简单平滑滤波;(3)编写函数对图像进行放大,分别使用像素直接复制和双线性插值的方法:(4)编写函数用题目给出的量化步骤Q 去量化灰度图像,并给出相应的MSE 和直方图;(5)编写函数对灰度图像执行直方图均衡化,显示均衡前后的直方图。同时,熟悉使用MATLAB ,并且熟练操作对图像进行各种修改变换等。
KEY WORD :MATLAB MSE、PSNR 直方图量化
技术探讨
数字图像处理是基于Matlab 来实现的,由于Matlab 独特的功能和对矩阵,图像,函数灵活的处理,因而用于图像的处理相当的方便。
task1
均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ), 平均绝对误差(MAE )。可以使用使用for 循环语句,分别计算图像MSE/SNR/PSNR/MAE,具体的计算公式见附录代码,下面只附运算原理代码
均方误差(MSE ):
sum=sum+(a(i,j)-b(i,j))^2; MSE=sum/(M*N)
信噪比(SNR ):
sum2=sum2+a(i,j)^2; SNR=10*log10(sum2/MSE)
峰值信噪比(PSNR ):
sum=sum+(a(i,j)-b(i,j))^2; PSNR=10*log10(255^2/MSE)
平均绝对误差(MAE ):
sum=sum+a(i,j)+b(i,j); MAE=sum/(M*N)
在每次对同一个图像处理时它们的均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ), 平均绝对误差(MAE )都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
task3
按比例缩小灰度图像
(1)直接消除像素点:
I1=g(1:m:end,1:m:end);I1 为缩小后的图像,g 为原图。
(2)先平滑滤波再消除像素点:
滤波函数,g=imfilter(I,w,'corr','replicate');
task4
对图像的放大运用了pixel repetition法以及双线性插值法:
它有三种插值法:即最近邻插值(pixel repetition )、双线性插值、双三次插值(缩放倍数为0.5) ;缩放与放大由给定的参数来确定。
; 缩放与放大由给定的参数来确定。而缩小则同样适用I1=g(1:m:end,1:m:end);
而放大的代码为“J=imresize(I,m,'nearest');%使用pixel repetition 法” 和 “J=imresize(I,m,'bilinear');%使用双线性插值法 ”
放大倍数更改m 值即可
task4
对图像的量化,使用“J=histeq(I,x); ”,x 为可变的量化步长
task5
灰度图像的量化和直方图均衡化直接调用函数。“J=histeq(I)”“imhist(I,64)”
结果:图像的结果
Task1
mse =0.0426psnr =61.8377SNR =68.5982MAE =262.2853
mse =0.0443psnr =61.6711SNR =73.3907MAE =262.2102
处理给定的测试图像“Lena ”, 以其原始的形式和加过噪声之后的形式。(用其他图像代替)
Task2
编写MATLAB 函数通过两种不同的方法抽取一幅灰度图像从原来的大小到给定的输出尺寸: (用其他图像代替)
处理给定的测试图像“Living Room” ,按给定比例系数缩小:2:1, 4:1, 8:1,16:1
(a)直接消除像素
(b)消除像素前进行初步的图像滤波
)
Task3
编写MATLAB 函数通过两种不同的方法放大一幅灰度图像从原来的大小到给定的输出尺寸
(a)像素重复
(b)双线性插值[内插
]
用上述方法将Task 2放大回原尺寸
并对使用MATLAB 方法对原图像以及放大后的图像计算均方误差和峰值信噪比
(a)像素重复
2:1 时MSE = 2.6753e+003 PSNR = 13.8571
4:1 时MSE = 2.4600e+003 PSNR = 14.2214
8:1 时MSE = 2.4696e+003 PSNR = 14.2045
16:1 时MSE = 2.0887e+003 PSNR = 14.9321
(b)双线性插值[内插]
2:1 时MSE = 3.3733e+003 PSNR =12.8503
4:1 时MSE =2.6291e+003 PSNR =13.9327
8:1 时MSE =2.4658e+003 PSNR =14.2113
16:1 时MSE =2.4248e+003 PSNR =14.2840
在相同尺寸减少率下,确定哪些组合缩小/放大的方法能提供最小均方误差以及最大峰值信噪比
最小均方误差最大最大峰值信噪比
(a)像素重复
16:1 时MSE = 2.0887e+003 PSNR = 14.9321
(b)双线性插值[内插]
16:1 时MSE =2.4248e+003 PSNR =14.2840
Task4
编写MATLAB 函数以量化步长Q 来量化(数字转换) 灰度图像。以量化步长Q =2, 4, 8 16, 32, 64, 128 处理给定的测试图像“Lena ”(用其他图像代替)
不同量化步长Q 量化后的图像的对比
对每一个量化步长显示量化的图像以及它相应的直方图。显示测试图像及其直方图。
量化后的图像的直方图对比
对Task 1用MATLAB 编写的方法计算原始以及量化(数字转换)图像的均方误差
Q=2 时 MSE=8.6904e+003
Q=4时 MSE=6.7394e+003
Q=8时 MSE=5.3419e+003
Q=16时 MSE=4.8395e+003
Q=32时 MSE=4.7529e+003
Q=64时 MSE=4.7060e+003
Q=128时MSE=4.6526e+003
Task5
编写MATLAB 函数对图像“ Fig0316(1)(top_left)” 和图像“ Fig0316(4)(bottom_left) ”分别地进行直方图均衡,并在直方图均衡前后显示图像的直方图(用其他图像代替)
结果探讨
Task1
在每次对同一个图像处理时它们的均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ),
平均绝对误差(MAE )都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
给原图像加入高斯噪音,则可看出SNR 与PSNR 的变化,因为其实评价噪声的;MSE 可以评价数据的变化程度,MSE 的值越小,说明数据具有更好的精确度。MAE 是将各次测量的绝对误差取绝对值后再求平均值。 Task2
对原图像直接消除像素的降采样和经过平滑滤波后得到的降采样采样对比来看,经过平滑滤波后,图像模糊一些,但灰度值变化更加平滑,整体效果好于直接消除像素
Task3
pixel repetition(像素重复) 和双线性插值法对图像的缩放,其处理效果相近,但从MSE 和PSNR 值来看,双线性插值法更好。但运算时间较长 将缩小后的图像再放大,还原效果都较好
Task4
可以看出,对图像进行量化后,随着量化步长越大,图像越接近原图;当Q=2时,图像几乎全白,而直方图灰度值也极端的集中在0和250两个值上。 随着量化步长增加,图像细节几个方面均有明显转变,而直方图灰度值也逐渐向着整个灰度级数覆盖,最后集中于10到250之间
Task5
第一幅图,绘制其直方图可以看到直方图灰度值主要集中在100到150之间,均衡化后灰度值覆盖整个灰度级数。
第二幅图图相比相对亮一些,绘制其直方图可以看到直方图灰度值主要集中在60到120以及200到250之间,均衡化后灰度值覆盖整个灰度级数。
附录:程序列表
第一题:
均方误差(MSE ): sum=sum+(a(i,j)-b(i,j))^2; MSE=sum/(M*N) 峰值信噪比(PSNR ) sum=sum+(a(i,j)-b(i,j))^2; PSNR=10*log10(255^2/MSE) 计算MSE; PSNR;
clear all;
close all;
I=imread('C:\Users\Dark Selee\Desktop\bbpg'); %录入图像 figure(1),imshow(I);
X=rgb2gray(I); %将真彩色图像转换为灰度图像。
[height width]=size(X);
X=im2double(X);
A=imnoise(X,'gaussian',0,0.05); %加高斯噪声
figure(2),imshow(A);
%利用两组for 循环,即可实现计算
sigma1=0;
for i=1:height
for j=1:width
sigma1=sigma1+(X(i,j)-A(i,j))^2;
end
end
mse=(sigma1/(height*width)) %均方误差
psnr=10*log10((255^2)/mse) %峰值信噪比
信噪比(SNR )sum2=sum2+a(i,j)^2; SNR=10*log10(sum2/MSE) 计算SNR;
clear all;
close all;
J=imnoise(I,'gaussian'); %加噪声
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
%先计算出MSE
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
sum2=0;
%同上,利用两组for 循环,即可实现计算
for i=1:M;
for j=1:N;
sum2=sum2+a(i,j)^2;
end;
end;
SNR=10*log10(sum2/MSE)
平均绝对误差(MAE )sum=sum+a(i,j)+b(i,j); MAE=sum/(M*N) 计算MAE;
J=imnoise(I,'gaussian'); %加噪声
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+a(i,j)+b(i,j);
end;
end;
MAE=sum/(M*N)
处理给定的测试图像, 以其原始的形式和加过噪声之后的形式 clear all;
close all;
I=imread('C:\Users\Dark Selee\Desktop\aa.jpg'); %读入图像 figure(1),imshow(I);
X=rgb2gray(I); %将真彩色图像转换为灰度图像。
[height width]=size(X);
X=im2double(X);
A=imnoise(X,'gaussian',0,0.05); %加高斯噪声
figure(2),imshow(A); %显示图像
直接消除像素点
X=imread('C:\Users\Dark Selee\Desktop\bb.jpg'); %读图像
I=rgb2gray(X);
figure(2);
m=imfilter(I,w,'corr','replicate');
subplot(3,2,1); imshow(I); title('原图')
subplot(3,2,3); M=g(1:2:end,1:2:end); % 以2:1的比例缩小 M
imshow(I1); title('2:1 图')
subplot(3,2,4); M2=m(1:4:end,1:4:end); %以4:1的比例缩
imshow(I2); title('4:1 图')
subplot(3,2,5); M3=m(1:8:end,1:8:end); %以8:1的比例缩小
imshow(I3); title('8:1 图')
subplot(3,2,6); M4=m(1:16:end,1:16:end); %以16:1的比例缩小
imshow(I4); title('16:1图')
先滤波再消除像素点
X=imread('C:\Users\Dark Selee\Desktop\bb.jpg'); %读图像
I=rgb2gray(X);figure(2);
m=[1 1 1;1 1 1;1 1 1]/9; %为领域平均模板,为缩小做处理
g=imfilter(I,w,'corr','replicate'); %对原图像进行平滑滤波处理 subplot(3,2,1); imshow(I);
subplot(3,2,2); imshow(g); title('滤波后的图)
subplot(3,2,3); M1=m(1:2:end,1:2:end); % 以2:1的比例缩小
imshow(I1); title('2:1 图')
subplot(3,2,4); M2=m(1:4:end,1:4:end); %以4:1的比例缩小
imshow(I2); title('4:1 图')
subplot(3,2,5); M3=m(1:8:end,1:8:end); %以8:1的比例缩小
imshow(I3); title('8:1 图')
subplot(3,2,6); M4=m(1:16:end,1:16:end); %以16:1的比例缩小
imshow(I4); title('16:1 图')
pixel repetition法
2:1的图像处理
A=imread(' C:\Users\Dark Selee\Desktop\bb.jpg '); %读图像
I=rgb2gray(A);
figure(1);
IM=I(1:2:end, 1:2:end);
subplot(1,3,1); imshow(I); title('原图像');
subplot(1,3,2); imshow(IM); title('按2:1缩小的图像');
J=imresize(I,2,'nearest'); %使用pixel repetition法
subplot(1,3,3); imshow(J); title('按1:2放大的图像');
%负责运算MSE 与PSNR 的函数,与第一题代码一致
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
PSNR=10*log10(255^2/MSE)
双线性插值法
2:1的图像处理
A=imread(' C:\Users\Dark Selee\Desktop\bb.jpg '); %读图像
I=rgb2gray(A);
figure(1);
IM=I(1:2:end, 1:2:end);
subplot(1,3,1); imshow(I); title('原图像');
subplot(1,3,2); imshow(IM); title('按2:1缩小的图像');
J=imresize(I,2,'bilinear'); %使用双线性插值法
subplot(1,3,3); imshow(J); title('按1:2放大的图像');
%负责运算MSE 与PSNR 的函数,与第一题代码一致
a=double(IM);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
PSNR=10*log10(255^2/MSE)
两题的4:1 、8:1 、16:1的图像处理的代码
基本与2:1的一致,只是将
“1=I(1:2:end,1:2:end); J=imresize(I,2,'bilinear'); ”分别替换为
“IM= (1:4:end,1:4:end); J=imresize(I,4,'bilinear'); ”
“I M = (1:8:end,1:8:end); J=imresize(I,8,'bilinear'); ”
“1 M =I(1:16:end,1:16:end); J=imresize(I,16,'bilinear'); ”
即可
第四题
Q=2
clear all;
close all;
A=imread('C:\Users\Dark Selee\Desktop\dd.jpg'); %读图像
I=rgb2gray(A);
figure;
J=histeq(I,2);
subplot(2,2,1); imshow(I); title('原始图像')
subplot(2,2,2); imhist(I); title('原始图像直方图')
subplot(2,2,3); imshow(J); title('量化后图像')
subplot(2,2,4); imhist(J); title('量化后图像直方图')
%计算MSE 的代码,与第一题一致
[M,N]=size(I);
a=double(I);
b=double(J);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
Q=4 、Q=8 、Q=16、 Q=32 、Q=64 、Q=128的图像处理的代码
基本Q=2的一致,只是将“J=histeq(I,2);”分别替换为
“J=histeq(I,4);”
“J=histeq(I,8);”
“J=histeq(I,16);”
“J=histeq(I,32);”
“J=histeq(I,64);”
即可
(下代码仅用作方便显示对比
B=histeq(A,2); B1=imhist(B);
C=histeq(A,4); C1=imhist(C);
D=histeq(A,8); D1=imhist(D);
E=histeq(A,16); E1=imhist(E);
F=histeq(A,32); F1=imhist(F);
G=histeq(A,64); G1=imhist(G);
H=histeq(A,128);H1=imhist(H);
subplot(4,2,1);imshow(B1); title('Q=2')
subplot(4,2,2);imshow(C1); title('Q=4')
subplot(4,2,3);imshow(D1); title('Q=8')
subplot(4,2,4);imshow(E1); title('Q=16')
subplot(4,2,5);imshow(F1); title('Q=32')
subplot(4,2,6);imshow(G1); title('Q=64')
subplot(4,2,7);imshow(H1); title('Q=128')
)
第五题
clear all;
close all;
A=imread('C:\Users\Dark Selee\Desktop\cc.png'); %读图像Fig0316(4)(bottom_left) I=rgb2gray(A);
J=histeq(I); %用直方图均衡来增强对比度
figure;
subplot(2,2,1);imshow(I); title('原始图像')
subplot(2,2,2);imshow(J); title('增强对比度后的图像')
subplot(2,2,3);imhist(I,64); title('原始直方图')
subplot(2,2,4);imhist(J,64) ;title('增强对比度后的直方图')
报告标题:
报告编号:
课程编号:
学生姓名:
截止日期:
上交日期:
数字图像处理 01
摘要
(1)编写函数计算灰度图像的均方误差(MSE )、信噪比(SNR )、峰值信噪比(PSNR )、平均绝对误差(MAE );(2)编写函数对灰度图像经行降采样,直接消除像素以及消除像素前进行简单平滑滤波;(3)编写函数对图像进行放大,分别使用像素直接复制和双线性插值的方法:(4)编写函数用题目给出的量化步骤Q 去量化灰度图像,并给出相应的MSE 和直方图;(5)编写函数对灰度图像执行直方图均衡化,显示均衡前后的直方图。同时,熟悉使用MATLAB ,并且熟练操作对图像进行各种修改变换等。
KEY WORD :MATLAB MSE、PSNR 直方图量化
技术探讨
数字图像处理是基于Matlab 来实现的,由于Matlab 独特的功能和对矩阵,图像,函数灵活的处理,因而用于图像的处理相当的方便。
task1
均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ), 平均绝对误差(MAE )。可以使用使用for 循环语句,分别计算图像MSE/SNR/PSNR/MAE,具体的计算公式见附录代码,下面只附运算原理代码
均方误差(MSE ):
sum=sum+(a(i,j)-b(i,j))^2; MSE=sum/(M*N)
信噪比(SNR ):
sum2=sum2+a(i,j)^2; SNR=10*log10(sum2/MSE)
峰值信噪比(PSNR ):
sum=sum+(a(i,j)-b(i,j))^2; PSNR=10*log10(255^2/MSE)
平均绝对误差(MAE ):
sum=sum+a(i,j)+b(i,j); MAE=sum/(M*N)
在每次对同一个图像处理时它们的均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ), 平均绝对误差(MAE )都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
task3
按比例缩小灰度图像
(1)直接消除像素点:
I1=g(1:m:end,1:m:end);I1 为缩小后的图像,g 为原图。
(2)先平滑滤波再消除像素点:
滤波函数,g=imfilter(I,w,'corr','replicate');
task4
对图像的放大运用了pixel repetition法以及双线性插值法:
它有三种插值法:即最近邻插值(pixel repetition )、双线性插值、双三次插值(缩放倍数为0.5) ;缩放与放大由给定的参数来确定。
; 缩放与放大由给定的参数来确定。而缩小则同样适用I1=g(1:m:end,1:m:end);
而放大的代码为“J=imresize(I,m,'nearest');%使用pixel repetition 法” 和 “J=imresize(I,m,'bilinear');%使用双线性插值法 ”
放大倍数更改m 值即可
task4
对图像的量化,使用“J=histeq(I,x); ”,x 为可变的量化步长
task5
灰度图像的量化和直方图均衡化直接调用函数。“J=histeq(I)”“imhist(I,64)”
结果:图像的结果
Task1
mse =0.0426psnr =61.8377SNR =68.5982MAE =262.2853
mse =0.0443psnr =61.6711SNR =73.3907MAE =262.2102
处理给定的测试图像“Lena ”, 以其原始的形式和加过噪声之后的形式。(用其他图像代替)
Task2
编写MATLAB 函数通过两种不同的方法抽取一幅灰度图像从原来的大小到给定的输出尺寸: (用其他图像代替)
处理给定的测试图像“Living Room” ,按给定比例系数缩小:2:1, 4:1, 8:1,16:1
(a)直接消除像素
(b)消除像素前进行初步的图像滤波
)
Task3
编写MATLAB 函数通过两种不同的方法放大一幅灰度图像从原来的大小到给定的输出尺寸
(a)像素重复
(b)双线性插值[内插
]
用上述方法将Task 2放大回原尺寸
并对使用MATLAB 方法对原图像以及放大后的图像计算均方误差和峰值信噪比
(a)像素重复
2:1 时MSE = 2.6753e+003 PSNR = 13.8571
4:1 时MSE = 2.4600e+003 PSNR = 14.2214
8:1 时MSE = 2.4696e+003 PSNR = 14.2045
16:1 时MSE = 2.0887e+003 PSNR = 14.9321
(b)双线性插值[内插]
2:1 时MSE = 3.3733e+003 PSNR =12.8503
4:1 时MSE =2.6291e+003 PSNR =13.9327
8:1 时MSE =2.4658e+003 PSNR =14.2113
16:1 时MSE =2.4248e+003 PSNR =14.2840
在相同尺寸减少率下,确定哪些组合缩小/放大的方法能提供最小均方误差以及最大峰值信噪比
最小均方误差最大最大峰值信噪比
(a)像素重复
16:1 时MSE = 2.0887e+003 PSNR = 14.9321
(b)双线性插值[内插]
16:1 时MSE =2.4248e+003 PSNR =14.2840
Task4
编写MATLAB 函数以量化步长Q 来量化(数字转换) 灰度图像。以量化步长Q =2, 4, 8 16, 32, 64, 128 处理给定的测试图像“Lena ”(用其他图像代替)
不同量化步长Q 量化后的图像的对比
对每一个量化步长显示量化的图像以及它相应的直方图。显示测试图像及其直方图。
量化后的图像的直方图对比
对Task 1用MATLAB 编写的方法计算原始以及量化(数字转换)图像的均方误差
Q=2 时 MSE=8.6904e+003
Q=4时 MSE=6.7394e+003
Q=8时 MSE=5.3419e+003
Q=16时 MSE=4.8395e+003
Q=32时 MSE=4.7529e+003
Q=64时 MSE=4.7060e+003
Q=128时MSE=4.6526e+003
Task5
编写MATLAB 函数对图像“ Fig0316(1)(top_left)” 和图像“ Fig0316(4)(bottom_left) ”分别地进行直方图均衡,并在直方图均衡前后显示图像的直方图(用其他图像代替)
结果探讨
Task1
在每次对同一个图像处理时它们的均方误差(MSE ), 信噪比(SNR ), 峰值信噪比(PSNR ),
平均绝对误差(MAE )都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
给原图像加入高斯噪音,则可看出SNR 与PSNR 的变化,因为其实评价噪声的;MSE 可以评价数据的变化程度,MSE 的值越小,说明数据具有更好的精确度。MAE 是将各次测量的绝对误差取绝对值后再求平均值。 Task2
对原图像直接消除像素的降采样和经过平滑滤波后得到的降采样采样对比来看,经过平滑滤波后,图像模糊一些,但灰度值变化更加平滑,整体效果好于直接消除像素
Task3
pixel repetition(像素重复) 和双线性插值法对图像的缩放,其处理效果相近,但从MSE 和PSNR 值来看,双线性插值法更好。但运算时间较长 将缩小后的图像再放大,还原效果都较好
Task4
可以看出,对图像进行量化后,随着量化步长越大,图像越接近原图;当Q=2时,图像几乎全白,而直方图灰度值也极端的集中在0和250两个值上。 随着量化步长增加,图像细节几个方面均有明显转变,而直方图灰度值也逐渐向着整个灰度级数覆盖,最后集中于10到250之间
Task5
第一幅图,绘制其直方图可以看到直方图灰度值主要集中在100到150之间,均衡化后灰度值覆盖整个灰度级数。
第二幅图图相比相对亮一些,绘制其直方图可以看到直方图灰度值主要集中在60到120以及200到250之间,均衡化后灰度值覆盖整个灰度级数。
附录:程序列表
第一题:
均方误差(MSE ): sum=sum+(a(i,j)-b(i,j))^2; MSE=sum/(M*N) 峰值信噪比(PSNR ) sum=sum+(a(i,j)-b(i,j))^2; PSNR=10*log10(255^2/MSE) 计算MSE; PSNR;
clear all;
close all;
I=imread('C:\Users\Dark Selee\Desktop\bbpg'); %录入图像 figure(1),imshow(I);
X=rgb2gray(I); %将真彩色图像转换为灰度图像。
[height width]=size(X);
X=im2double(X);
A=imnoise(X,'gaussian',0,0.05); %加高斯噪声
figure(2),imshow(A);
%利用两组for 循环,即可实现计算
sigma1=0;
for i=1:height
for j=1:width
sigma1=sigma1+(X(i,j)-A(i,j))^2;
end
end
mse=(sigma1/(height*width)) %均方误差
psnr=10*log10((255^2)/mse) %峰值信噪比
信噪比(SNR )sum2=sum2+a(i,j)^2; SNR=10*log10(sum2/MSE) 计算SNR;
clear all;
close all;
J=imnoise(I,'gaussian'); %加噪声
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
%先计算出MSE
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
sum2=0;
%同上,利用两组for 循环,即可实现计算
for i=1:M;
for j=1:N;
sum2=sum2+a(i,j)^2;
end;
end;
SNR=10*log10(sum2/MSE)
平均绝对误差(MAE )sum=sum+a(i,j)+b(i,j); MAE=sum/(M*N) 计算MAE;
J=imnoise(I,'gaussian'); %加噪声
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+a(i,j)+b(i,j);
end;
end;
MAE=sum/(M*N)
处理给定的测试图像, 以其原始的形式和加过噪声之后的形式 clear all;
close all;
I=imread('C:\Users\Dark Selee\Desktop\aa.jpg'); %读入图像 figure(1),imshow(I);
X=rgb2gray(I); %将真彩色图像转换为灰度图像。
[height width]=size(X);
X=im2double(X);
A=imnoise(X,'gaussian',0,0.05); %加高斯噪声
figure(2),imshow(A); %显示图像
直接消除像素点
X=imread('C:\Users\Dark Selee\Desktop\bb.jpg'); %读图像
I=rgb2gray(X);
figure(2);
m=imfilter(I,w,'corr','replicate');
subplot(3,2,1); imshow(I); title('原图')
subplot(3,2,3); M=g(1:2:end,1:2:end); % 以2:1的比例缩小 M
imshow(I1); title('2:1 图')
subplot(3,2,4); M2=m(1:4:end,1:4:end); %以4:1的比例缩
imshow(I2); title('4:1 图')
subplot(3,2,5); M3=m(1:8:end,1:8:end); %以8:1的比例缩小
imshow(I3); title('8:1 图')
subplot(3,2,6); M4=m(1:16:end,1:16:end); %以16:1的比例缩小
imshow(I4); title('16:1图')
先滤波再消除像素点
X=imread('C:\Users\Dark Selee\Desktop\bb.jpg'); %读图像
I=rgb2gray(X);figure(2);
m=[1 1 1;1 1 1;1 1 1]/9; %为领域平均模板,为缩小做处理
g=imfilter(I,w,'corr','replicate'); %对原图像进行平滑滤波处理 subplot(3,2,1); imshow(I);
subplot(3,2,2); imshow(g); title('滤波后的图)
subplot(3,2,3); M1=m(1:2:end,1:2:end); % 以2:1的比例缩小
imshow(I1); title('2:1 图')
subplot(3,2,4); M2=m(1:4:end,1:4:end); %以4:1的比例缩小
imshow(I2); title('4:1 图')
subplot(3,2,5); M3=m(1:8:end,1:8:end); %以8:1的比例缩小
imshow(I3); title('8:1 图')
subplot(3,2,6); M4=m(1:16:end,1:16:end); %以16:1的比例缩小
imshow(I4); title('16:1 图')
pixel repetition法
2:1的图像处理
A=imread(' C:\Users\Dark Selee\Desktop\bb.jpg '); %读图像
I=rgb2gray(A);
figure(1);
IM=I(1:2:end, 1:2:end);
subplot(1,3,1); imshow(I); title('原图像');
subplot(1,3,2); imshow(IM); title('按2:1缩小的图像');
J=imresize(I,2,'nearest'); %使用pixel repetition法
subplot(1,3,3); imshow(J); title('按1:2放大的图像');
%负责运算MSE 与PSNR 的函数,与第一题代码一致
a=double(I);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
PSNR=10*log10(255^2/MSE)
双线性插值法
2:1的图像处理
A=imread(' C:\Users\Dark Selee\Desktop\bb.jpg '); %读图像
I=rgb2gray(A);
figure(1);
IM=I(1:2:end, 1:2:end);
subplot(1,3,1); imshow(I); title('原图像');
subplot(1,3,2); imshow(IM); title('按2:1缩小的图像');
J=imresize(I,2,'bilinear'); %使用双线性插值法
subplot(1,3,3); imshow(J); title('按1:2放大的图像');
%负责运算MSE 与PSNR 的函数,与第一题代码一致
a=double(IM);
b=double(J);
[M,N]=size(I);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
PSNR=10*log10(255^2/MSE)
两题的4:1 、8:1 、16:1的图像处理的代码
基本与2:1的一致,只是将
“1=I(1:2:end,1:2:end); J=imresize(I,2,'bilinear'); ”分别替换为
“IM= (1:4:end,1:4:end); J=imresize(I,4,'bilinear'); ”
“I M = (1:8:end,1:8:end); J=imresize(I,8,'bilinear'); ”
“1 M =I(1:16:end,1:16:end); J=imresize(I,16,'bilinear'); ”
即可
第四题
Q=2
clear all;
close all;
A=imread('C:\Users\Dark Selee\Desktop\dd.jpg'); %读图像
I=rgb2gray(A);
figure;
J=histeq(I,2);
subplot(2,2,1); imshow(I); title('原始图像')
subplot(2,2,2); imhist(I); title('原始图像直方图')
subplot(2,2,3); imshow(J); title('量化后图像')
subplot(2,2,4); imhist(J); title('量化后图像直方图')
%计算MSE 的代码,与第一题一致
[M,N]=size(I);
a=double(I);
b=double(J);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
MSE=sum/(M*N)
Q=4 、Q=8 、Q=16、 Q=32 、Q=64 、Q=128的图像处理的代码
基本Q=2的一致,只是将“J=histeq(I,2);”分别替换为
“J=histeq(I,4);”
“J=histeq(I,8);”
“J=histeq(I,16);”
“J=histeq(I,32);”
“J=histeq(I,64);”
即可
(下代码仅用作方便显示对比
B=histeq(A,2); B1=imhist(B);
C=histeq(A,4); C1=imhist(C);
D=histeq(A,8); D1=imhist(D);
E=histeq(A,16); E1=imhist(E);
F=histeq(A,32); F1=imhist(F);
G=histeq(A,64); G1=imhist(G);
H=histeq(A,128);H1=imhist(H);
subplot(4,2,1);imshow(B1); title('Q=2')
subplot(4,2,2);imshow(C1); title('Q=4')
subplot(4,2,3);imshow(D1); title('Q=8')
subplot(4,2,4);imshow(E1); title('Q=16')
subplot(4,2,5);imshow(F1); title('Q=32')
subplot(4,2,6);imshow(G1); title('Q=64')
subplot(4,2,7);imshow(H1); title('Q=128')
)
第五题
clear all;
close all;
A=imread('C:\Users\Dark Selee\Desktop\cc.png'); %读图像Fig0316(4)(bottom_left) I=rgb2gray(A);
J=histeq(I); %用直方图均衡来增强对比度
figure;
subplot(2,2,1);imshow(I); title('原始图像')
subplot(2,2,2);imshow(J); title('增强对比度后的图像')
subplot(2,2,3);imhist(I,64); title('原始直方图')
subplot(2,2,4);imhist(J,64) ;title('增强对比度后的直方图')