matlab使用psnr比较图片的源代码
时间: 2023-11-06 21:07:33 浏览: 72
下面是使用MATLAB计算两张图片的PSNR的示例代码:
```matlab
% 读取两张图片
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
% 将图片转为 double 类型
img1 = im2double(img1);
img2 = im2double(img2);
% 计算 MSE
mse = mean(mean((img1 - img2).^2));
% 计算 PSNR
psnr = 10 * log10(1/mse);
% 显示结果
fprintf('PSNR值为 %.2f dB\n', psnr);
```
其中,`imread`函数用于读取图片,`im2double`函数用于将图片转为 double 类型,`mean`函数用于计算平均值,`log10`函数用于计算以 10 为底的对数。计算 PSNR 的公式为:
PSNR = 10 * log10(MAX^2 / MSE)
其中,MAX 表示像素的最大值,对于 RGB 图片,MAX 的值为 255。
相关问题
amtlab中使用psnr比较俩图片的源代码
在MATLAB中,可以使用`psnr`函数计算两幅图像的峰值信噪比(PSNR)。以下是一个示例代码:
```matlab
% 读取两幅图像
img1 = imread('img1.jpg');
img2 = imread('img2.jpg');
% 计算峰值信噪比
psnr_val = psnr(img1, img2);
% 显示结果
fprintf('PSNR between img1 and img2 is %0.2f dB\n', psnr_val);
```
其中,`imread`函数用于读取图像,`psnr`函数用于计算峰值信噪比,`fprintf`函数用于显示结果。需要将`img1.jpg`和`img2.jpg`替换为实际的图像文件名。
MATLAB代码psnr
算法实现?
您好!关于MATLAB代码psnr算法实现,可以使用以下代码:
```matlab
function psnr_value=psnr(original_image,recon_image)
%PSNR Peak Signal-to-Noise Ratio.
% PSNR_VALUE = PSNR(ORIGINAL_IMAGE,RECON_IMAGE) computes the peak
% signal-to-noise ratio between the original image ORIGINAL_IMAGE and
% the reconstructed image RECON_IMAGE. Both images are assumed to
% have values in the range [0, 1]. The output is in decibels (dB),
% which can be calculated by 10*log10(psnr_value).
%
% Example
% -------------
% original_image = imread('cameraman.tif');
% recon_image = imnoise(original_image,'gaussian',0,0.01);
% psnr_value = psnr(original_image,recon_image);
%
% See also IMREAD, IMWRITE.
% Convert the image matrices to double precision
original_image = im2double(original_image);
recon_image = im2double(recon_image);
% Compute the mean square error (MSE) between the two images
mse = mean(mean((original_image - recon_image).^2));
% Compute the maximum possible pixel value
max_pixel_value = 1;
% Compute the PSNR
psnr_value = 10*log10(max_pixel_value^2/mse);
end
```
该算法实现计算给定图像的峰值信噪比(PSNR),并将结果以分贝(dB)表示。
希望回答能对您有所帮助!
阅读全文