psnr计算matlab代码
时间: 2023-11-03 19:06:03 浏览: 152
以下是用MATLAB计算PSNR的示例代码:
```matlab
% 读取原始图像和压缩后的图像
originalImage = imread('original.png');
compressedImage = imread('compressed.png');
% 计算MSE
mse = mean(mean((double(originalImage) - double(compressedImage)).^2));
% 计算PSNR
if mse > 0
psnr = 10*log10(255^2/mse);
else
psnr = 99;
end
% 打印结果
fprintf('PSNR值为 %.2f dB\n', psnr);
```
该代码假定原始图像和压缩后的图像都保存在本地磁盘上,并且使用相同的文件名“original.png”和“compressed.png”。在实际应用中,您需要替换这些文件名以适应您的数据。
相关问题
小波变换中PSNR计算matlab代码
在小波变换中,PSNR(Peak Signal-to-Noise Ratio)是一种常用的评估图像质量的指标。下面是使用MATLAB计算PSNR的示例:
```matlab
% 假设原始图像为A,重建图像为B
A = imread('原始图像路径'); % 读取原始图像
B = imread('重建图像路径'); % 读取重建图像
% 计算MSE(Mean Squared Error)
mse = mean((A(:) - B(:)).^2);
% 计算最大像素值
max_value = double(max(A(:)));
% 计算PSNR
psnr = 10 * log10((max_value^2) / mse);
% 显示PSNR结果
fprintf('PSNR值为:%f dB\n', psnr);
```
请将代码中的"原始图像路径"和"重建图像路径"替换为你实际的图像路径。运行代码后,将会输出PSNR的值,单位为dB。
计算图片PSNR的matlab代码
好的,下面是一个计算两张图像峰值信噪比 (PSNR) 的MATLAB代码示例:
```matlab
function psnr_value = calculate_psnr(img1, img2)
% 计算两张图像的 PSNR 值
% 将输入转换为双精度浮点数并确保大小一致
img1 = double(img1);
img2 = double(img2);
if size(img1) ~= size(img2)
error('两幅图尺寸不一样');
end
% 计算均方误差 MSE
mse = mean((img1 - img2).^2, 'all');
if mse == 0
% 如果完全相同,则返回无穷大值
psnr_value = Inf;
else
% 获取最大像素值,默认假设是8位灰度图像(即 255 )
max_pixel_value = 255;
% 根据公式计算PSNR
psnr_value = 10 * log10((max_pixel_value^2) / mse);
end
disp(['图片之间的 PSNR :', num2str(psnr_value), ' dB']);
```
你可以通过如下方式调用该函数:
```matlab
image1 = imread('lena.png');
image2 = imread('modified_lena.png');
psnr_result = calculate_psnr(image1,image2);
```
这段代码首先检查两个图像是否具有相同的尺寸,然后计算它们之间每个对应像素位置处差异平方的平均值得到MSE,并最终依据给定的最大像素强度(对于大多数情况默认设为255)以及上述得到的MSE来求解出PSNR。
需要注意的是,当处理彩色图像时需要将颜色通道分离或转化为灰度图像再进行比较;另外如果待对比的数据不是标准8-bit格式的话也需要相应调整`max_pixel_value`.
阅读全文
相关推荐















