[問題] 請教影像的PSNR計算已回收

看板MATLAB作者 (難難難)時間16年前 (2009/02/22 18:18), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
各位前輩好 我想找出JPEG影像的PSNR 可是我的算出來跟別人的比較後卻發現差很多 想請各位高手幫忙看看是哪裡出錯了 感謝 PS: 影像是拿這裡的圖來算的 http://scien.stanford.edu/class/psych221/projects/06/itai/LSB.html Original image & 6-bit distortion 他算出Y的psnr是:19.89 我卻是29.6398 程式如下: clear all; oYUV = imread('lena_0.jpg'); cYUV = imread('lena_6.jpg'); [height,width,depth] = size(oYUV); difY = sum(sum((double(oYUV(:,:,2))-double(cYUV(:,:,2))).^2))/(height*width); difU = sum(sum((double(oYUV(:,:,2))-double(cYUV(:,:,2))).^2))/(height*width); difV = sum(sum((double(oYUV(:,:,3))-double(cYUV(:,:,3))).^2))/(height*width); snrY = 10.0 * log10 ( (255)^2 / difY ) snrU = 10.0 * log10 ( (255)^2 / difU ) snrV = 10.0 * log10 ( (255)^2 / difV ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.163.17

02/23 00:19, , 1F
影像轉成double...uint8的格式減法會有問題
02/23 00:19, 1F

02/23 11:38, , 2F
感謝...真妙,可是出來的結果還是差3db左右,補上新改的
02/23 11:38, 2F
※ 編輯: eceppiok 來自: 140.116.163.17 (02/23 11:45)

02/23 17:14, , 3F
會有差別是在於uint8值的範例在0-255
02/23 17:14, 3F

02/23 17:14, , 4F
如果某一個case為200-255 以uint8會變成0!實際應該為-55
02/23 17:14, 4F

02/23 17:15, , 5F
所以轉成double的原因就在這裏~
02/23 17:15, 5F

02/23 19:32, , 6F
恩恩,感謝您囉
02/23 19:32, 6F
文章代碼(AID): #19eIQDcM (MATLAB)
文章代碼(AID): #19eIQDcM (MATLAB)