#include<stdio.h> #include<math.h> #define ROW 512 #define COL 512 typedef unsigned char BYTE; double cal_psnr(BYTE origin[ROW][COL],BYTE output[ROW][COL]) { int i, j; double PSNR = 0, MSE = 0, MAXI = 255; for (i = 0; i < COL; i++) { for (j = 0; j < ROW; j++) { MSE += (origin[i][j] - output[i][j]) * (origin[i][j] - output[i][j]); } } MSE = MSE/(ROW*COL); printf("MSE: %f\n", MSE); PSNR = 20*log10(MAXI) - 10*log10(MSE); return PSNR; } int main() { FILE *f = NULL; BYTE output[ROW][COL]; BYTE origin[ROW][COL]; f = fopen("D:\lena512.raw","rb"); fread(origin,sizeof(BYTE),ROW*COL,f); printf("has already read\n"); for(int i =0;i<ROW;i++) for(int j=0;j<COL;j++) { if(origin[i][j]>=0&&origin[i][j]<=64) output[i][j] = 32; else if (origin[i][j]>64&&origin[i][j]<=128) output[i][j] = 96; else if (origin[i][j]>128&&origin[i][j]<=192) output[i][j] = 160; else output[i][j] = 224; } printf("PSNR: %lf",cal_psnr(origin,output)); fclose(f); return 0; }
lena512.raw 下载地址:https://files.cnblogs.com/files/jzcbest1016/lena512_20171219131444306.rar
.raw文件可以用photoshop打开
今天的文章均匀量化(lena图)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/55304.html