[問題] 算PSNR與MSE

看板C_and_CPP作者 (打字男)時間15年前 (2009/05/16 20:09), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/1
請問一下我算 MSE 和 PSNR 的程式有錯嗎? 我跑的圖片結果和原圖去算PSNR值一直離理論值很遠 有人可以指導一下嗎? 3Q 圖片在這裡 http://rapidshare.com/files/233619313/bmpfile.rar.html http://rapidshare.com/files/233620796/bmpfile.rar.html double MeanSqaureError(U32 xin, U32 yin, U8***i3d, U8***o3d) { double sum=0; int x,y,color; int value; int v1,v2; if(!xin || !yin) return -1; for(y=1;y<=(int)yin;y++){ for(x=1;x<=(int)xin;x++){ for(color=1;color<=3;color++){ //sum += i3d[y][x][color]-o3d[y][x][color] ; if(i3d[y][x][color] > o3d[y][x][color]) value = i3d[y][x][color]-o3d[y][x][color] ; else value = o3d[y][x][color]-i3d[y][x][color] ; sum += value * value ; } } } sum = sum / (xin * yin) ; return sum ; } PSNR: printf("PSNR: %.3lf\n", 10 * log10(255*255/mse) ) ; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.169.118.88

05/16 20:16, , 1F
算出來 PSNR 只有 2.966 但是理論值有35 QQ"
05/16 20:16, 1F
※ 編輯: typeotoco 來自: 218.169.118.88 (05/16 20:25)

05/16 20:43, , 2F
color要除三,平方有必要作ifelse判斷?矩陣從1開始?
05/16 20:43, 2F

05/16 20:59, , 3F
以 orz
05/16 20:59, 3F

05/16 22:16, , 4F
謝謝阿, 除三還是差很多 應該是不用ifelse啦
05/16 22:16, 4F

05/16 22:17, , 5F
Halftone的PSNR有可能到35 @@?
05/16 22:17, 5F

05/16 22:17, , 6F
因為我怕轉型時出錯先算絕對值 我矩陣是從1開始沒錯
05/16 22:17, 6F

05/16 22:34, , 7F
sca大 我用的是 Floyd-Steinberg 作 halftoning
05/16 22:34, 7F

05/16 22:35, , 8F
我的講義上 PSNR 寫35, 其他方法也都蠻高的
05/16 22:35, 8F

05/16 22:37, , 9F
找了一些資料 都還找不到 所以不知道是程式問題
05/16 22:37, 9F

05/16 22:38, , 10F
還是其他的問題
05/16 22:38, 10F
文章代碼(AID): #1A3gqHTu (C_and_CPP)