psnr的matlab代码
时间: 2023-12-06 10:04:38 浏览: 20
PSNR(Peak Signal to Noise Ratio)是一种图像质量评价指标,通常用于比较两幅图像之间的相似程度。Matlab中可以使用以下代码计算PSNR:
```matlab
function psnr = PSNR(origImg, distImg)
% origImg: 原始图像
% distImg: 失真图像
% 将图像转换为double类型
origImg = im2double(origImg);
distImg = im2double(distImg);
% 计算MSE
mse = mean(mean((origImg - distImg).^2));
% 计算最大像素值
maxPixelValue = 1;
% 计算PSNR
psnr = 10 * log10(maxPixelValue^2 / mse);
end
```
其中,`origImg`为原始图像,`distImg`为失真图像,`maxPixelValue`为图像中像素的最大值,通常为1,在灰度图像中为255。该函数返回PSNR值。
相关问题
psnr的MATLAB代码
下面是一个简单的MATLAB代码,用于计算两个图像之间的PSNR值。
```matlab
% 读取原始图像和压缩图像
img1 = imread('original.png');
img2 = imread('compressed.png');
% 将图像转换为double类型
img1 = im2double(img1);
img2 = im2double(img2);
% 计算MSE
mse = mean(mean((img1 - img2).^2));
% 计算PSNR
psnr = 10*log10(1/mse);
% 显示PSNR值
disp(['PSNR值为:', num2str(psnr), ' dB']);
```
请注意,此代码假定输入的图像为灰度图像。如果您有彩色图像,请在计算MSE时对每个颜色通道分别进行相应的计算。
psnr计算matlab代码
以下是用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”。在实际应用中,您需要替换这些文件名以适应您的数据。