数字图像处理报告标题: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)”结果:图像的结果Task1mse =0.0426psnr =61.8377SNR =68.5982MAE =262.2853mse =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.85714:1 时MSE =2.4600e+003 PSNR =14.22148:1 时MSE =2.4696e+003 PSNR = 14.204516:1 时MSE =2.0887e+003 PSNR =14.9321(b)双线性插值[内插]2:1 时MSE = 3.3733e+003 PSNR =12.85034:1 时MSE =2.6291e+003 PSNR =13.93278:1 时MSE =2.4658e+003 PSNR =14.211316: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.2840Task4编写MATLAB函数以量化步长Q来量化(数字转换)灰度图像。
以量化步长Q=2, 4, 8 16, 32, 64, 128 处理给定的测试图像“Lena”(用其他图像代替)不同量化步长Q量化后的图像的对比对每一个量化步长显示量化的图像以及它相应的直方图。
显示测试图像及其直方图。
量化后的图像的直方图对比Q=2 Q=4Q=8 Q=16Q=32 Q=64Q=128对Task 1用MATLAB编写的方法计算原始以及量化(数字转换)图像的均方误差Q=2 时 MSE=8.6904e+003Q=4时 MSE=6.7394e+003Q=8时 MSE=5.3419e+003Q=16时 MSE=4.8395e+003Q=32时 MSE=4.7529e+003Q=64时 MSE=4.7060e+003Q=128时MSE=4.6526e+003Task5编写MATLAB函数对图像“ Fig0316(1)(top_left)” 和图像“ Fig0316(4)(bottom_left)”分别地进行直方图均衡,并在直方图均衡前后显示图像的直方图(用其他图像代替)结果探讨Task1在每次对同一个图像处理时它们的均方误差(MSE),信噪比(SNR),峰值信噪比(PSNR),平均绝对误差(MAE)都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
给原图像加入高斯噪音,则可看出SNR与PSNR的变化,因为其实评价噪声的;MSE可以评价数据的变化程度,MSE的值越小,说明数据具有更好的精确度。
MAE是将各次测量的绝对误差取绝对值后再求平均值。
Task2对原图像直接消除像素的降采样和经过平滑滤波后得到的降采样采样对比来看,经过平滑滤波后,图像模糊一些,但灰度值变化更加平滑,整体效果好于直接消除像素Task3pixel 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:heightfor j=1:widthsigma1=sigma1+(X(i,j)-A(i,j))^2;endendmse=(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;%先计算出MSEfor 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); %将真彩色图像转换为灰度图像。