二值图的峰值信噪比的Matlab代码
时间: 2024-05-15 12:13:39 浏览: 95
以下是二值图的峰值信噪比 (Peak Signal-to-Noise Ratio, PSNR) 的 Matlab 代码示例:
```matlab
% 读取原始图片和噪声图片
I = imread('original_image.bmp');
J = imread('noisy_image.bmp');
% 将RGB图像转换为灰度图像
I = rgb2gray(I);
J = rgb2gray(J);
% 计算峰值信噪比
mse = mean((I(:)-J(:)).^2);
psnr = 10*log10(255^2/mse);
% 显示结果
fprintf('PSNR = %f\n', psnr);
```
其中,`I` 和 `J` 分别是原始图片和噪声图片的灰度图像矩阵,`mse` 是均方误差,`psnr` 是峰值信噪比,单位为分贝(dB)。这里假设图片的像素值范围为 0~255。
相关问题
读取已有两张图像峰值信噪比matlab代码
以下是读取两张图像并计算其峰值信噪比的 Matlab 代码:
```matlab
% 读取图像
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
% 计算峰值信噪比
PSNR = psnr(img1, img2);
% 显示结果
fprintf('图像1和图像2的峰值信噪比为 %.2f dB\n', PSNR);
```
其中,`imread` 函数用于读取图像,`psnr` 函数用于计算峰值信噪比。在上述代码中,我们将第一张图像命名为 `image1.jpg`,第二张图像命名为 `image2.jpg`,你需要将代码中的文件名替换为你自己的图像文件名。最后,我们使用 `fprintf` 函数输出计算结果。
峰值信噪比matlab代码
峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)是衡量图像质量的一种常用指标。其计算公式为:
PSNR = 10 * log10((MAX^2) / MSE)
其中,MAX为像素值的最大值,通常为255;MSE为均方误差,计算公式为:
MSE = 1 / (M * N) * ∑[i=1:M, j=1:N] (I(i,j) - K(i,j))^2
其中,M和N分别为图像的宽和高,I为原图像,K为经过压缩或其他处理后的图像。
下面是一个简单的MATLAB代码示例,用于计算两幅图像之间的PSNR:
```
function psnr_value = psnr(img1, img2)
% img1和img2分别为两幅图像的矩阵表示
% 计算图像宽和高
[M, N] = size(img1);
% 计算像素值最大值
MAX = 255;
% 计算均方误差
mse = sum(sum((img1 - img2) .^ 2)) / (M * N);
% 计算PSNR值
psnr_value = 10 * log10((MAX^2) / mse);
end
```
使用方法:
1. 将上述代码保存为一个.m文件,例如psnr.m;
2. 在MATLAB命令窗口中输入以下命令:
```
img1 = imread('image1.jpg');
img2 = imread('image2.jpg');
psnr_value = psnr(img1, img2);
```
其中,'image1.jpg'和'image2.jpg'分别为两幅图像的文件名,可以更改为实际使用的文件名。执行完上述命令后,psnr_value即为两幅图像之间的PSNR值。
阅读全文