日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像处理之图像质量评价指标MSE(均方误差)

發(fā)布時間:2024/3/12 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像处理之图像质量评价指标MSE(均方误差) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、MSE基本定義

MSE全稱為“Mean Square Error”,中文意思即為均方誤差,是衡量圖像質(zhì)量的指標(biāo)之一。計算原理為真實值與預(yù)測值的差值的平方然后求和再平均,公式如下:

其中, M為圖像I的像素總數(shù),N為圖像K的像素總數(shù)。MSE值越小,說明圖像越相似。計算MSE有四種方法:

方法一:計算RGB圖像三個通道每個通道的MSE值再求平均值

方法二:直接使用matlab的內(nèi)置函數(shù)immse()(注意該函數(shù)將所有圖像當(dāng)成灰度圖像處理)

方法三:判斷圖像的維度,若是三維即為RGB圖像求其MSE,若是二維即為灰度圖像求其MSE

方法四:同方法三,對MSE進(jìn)行歸一化處理

二、matlab實現(xiàn)MSE

1、方法一:rgbMSE.m

function msevalue = rgbMSE(image1,image2) % image1和image2大小相等 row=size(image1,1); % 圖像的長 col=size(image1,2); % 圖像的寬 image1=double(image1); image2=double(image2); MSE_R=double(zeros(row,col)); MSE_G=double(zeros(row,col)); MSE_B=double(zeros(row,col)); image1_R=image1(:,:,1); % R通道 image1_G=image1(:,:,2); % G通道 image1_B=image1(:,:,3); % B通道 image2_R=image2(:,:,1); image2_G=image2(:,:,2); image2_B=image2(:,:,3); % 計算RGB圖像三個通道每個通道的MSE值再求平均值 for i=1:rowfor j=1:colMSE_R(i,j)=(image1_R(i,j)-image2_R(i,j))^2;MSE_G(i,j)=(image1_G(i,j)-image2_G(i,j))^2;MSE_B(i,j)=(image1_B(i,j)-image2_B(i,j))^2;end end MSE_RGB=sum(MSE_R(:))+sum(MSE_G(:))+sum(MSE_B(:)); % 將RGB三個通道計算的MSE值相加,注意(:)的用法 msevalue=MSE_RGB/(row*col); % 求出三個通道的平均MSE值 end

2、方法二:grayMSE.m

function msevalue = grayMSE(image1,image2) % image1和image2大小相等 row=size(image1,1); % 圖像的長 col=size(image1,2); % 圖像的寬 image1=double(image1); image2=double(image2); msevalue=sum(sum((image1-image2).^2))/(row*col); end

3、方法三:rgbgrayMSE.m

function msevalue = rgbgrayMSE(image1,image2) % image1和image2大小相等 row=size(image1,1); % 圖像的長 col=size(image1,2); % 圖像的寬% 一定要注意轉(zhuǎn)為double類型 image1=double(image1); image2=double(image2);dim=length(size(image1));% 圖像的維度 if dim==2 % 灰度圖像只有二維,彩色圖像有三維sum_mse=sum(sum((image1-image2).^2));% 兩次使用sum()函數(shù),第一次使用sum將每行值相加,第二次使用sum將每行值的和再次相加 elsesum_mse=sum(sum(sum((image1-image2).^2)));% 三次使用sum()函數(shù),第一次使用sum將每行值相加,第二次使用sum將每行值的和再次相加,第三次使用sum將每個通道值的和再次相加 end msevalue=sum_mse/(row*col); end

4、方法四:NMSE.m

function nmsevalue = NMSE(image1,image2) % 在歸一化MSE時,使用不到圖像的長和寬,因為約分相消 % image1和image2大小相等 % row=size(image1,1); % 圖像的長 % col=size(image1,2); % 圖像的寬% 一定要注意轉(zhuǎn)為double類型 image1=double(image1); image2=double(image2);dim=length(size(image1));% 圖像的維度if dim==2 % 灰度圖像只有二維,彩色圖像有三維sum_mse1=sum(sum((image1-image2).^2));% 兩次使用sum()函數(shù),第一次使用sum將每行值相加,第二次使用sum將每行值的和再次相加sum_mse2=sum(sum(image1.^2)); elsesum_mse1=sum(sum(sum((image1-image2).^2)));% 三次使用sum()函數(shù),第一次使用sum將每行值相加,第二次使用sum將每行值的和再次相加,第三次使用sum將每個通道值的和再次相加sum_mse2=sum(sum(sum(image1.^2))); end nmsevalue=sum_mse1/sum_mse2; end

5、主函數(shù)main.m

clc;clear;close all; rgbimage=imread('boy.jpg'); attack_rgbimage=imnoise(rgbimage,'salt & pepper',0.01); figure(1), subplot(121),imshow(rgbimage); title('原始圖像'); subplot(122),imshow(attack_rgbimage); title('噪聲攻擊圖像');grayimage=rgb2gray(imread('boy.jpg')); attack_grayimage=imnoise(grayimage,'salt & pepper',0.01); figure(2), subplot(121),imshow(grayimage); title('原始圖像'); subplot(122),imshow(attack_grayimage); title('噪聲攻擊圖像'); % =============rgbMSE.m============= % msevalue1 = rgbMSE(rgbimage,attack_rgbimage); disp('RGB圖像的均方誤差:'); disp(msevalue1); % =============immse============= % msevalue2 = immse(rgbimage,attack_rgbimage);% immse函數(shù)為matlab內(nèi)置函數(shù),err = immse(X,Y)計算數(shù)組 XY 之間的均方誤差 (MSE).其將所有圖像當(dāng)成灰度圖像處理 disp('matlab函數(shù)的均方誤差:'); disp(msevalue2); % =============grayMSE.m============= % msevalue3 = grayMSE(grayimage,attack_grayimage); disp('灰度圖像的均方誤差:'); disp(msevalue3); % =============rgbgrayMSE.m============= % msevalue4 = rgbMSE(rgbimage,attack_rgbimage); disp('RGB圖像的均方誤差:'); disp(msevalue4);msevalue5 = grayMSE(grayimage,attack_grayimage); disp('灰度圖像的均方誤差:'); disp(msevalue5); % =============NMSE.m============= % nmsevalue1 = NMSE(rgbimage,attack_rgbimage); disp('RGB圖像的歸一化均方誤差:'); disp(nmsevalue1);nmsevalue2 = NMSE(grayimage,attack_grayimage); disp('灰度圖像的歸一化均方誤差:'); disp(nmsevalue2);

三、實現(xiàn)結(jié)果分析

1、輸出結(jié)果

RGB圖像:

對應(yīng)灰度圖像:

各種方法輸出的MSE值:

2、結(jié)果分析

1、注意每次運行主函數(shù)main.m文件,輸出的MSE值都會有細(xì)微差別,可以對比上下兩張圖。

2、僅以椒鹽噪聲的參數(shù)為討論,我們將主函數(shù)main.m文件椒鹽噪聲的方差改為0.001,可以與上方得到方差為0.01的MSE結(jié)果進(jìn)行對比,可以看出得到的MSE要小很多,表示圖像質(zhì)量更好。


3、利用matlab的內(nèi)置函數(shù)immse計算的灰度圖像MSE比我們自己寫的方法計算的灰度圖像MSE要大一些。

4、本質(zhì)上,方法三是方法一和方法二的結(jié)合體。

PS:MSE是我們機(jī)器學(xué)習(xí)中常使用的L2 損失

總結(jié)

以上是生活随笔為你收集整理的图像处理之图像质量评价指标MSE(均方误差)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。