matlab实现计算图像处理前后图片的PSNR和SSIM

该篇文章描述了一个过程,通过读取并比较原图片和经过多尺度top-hat变换处理的新图片,计算每张图片的PSNR(峰值信噪比)和SSIM(结构相似性指数),然后求取平均值,以评估图像处理效果。
摘要由CSDN通过智能技术生成
% 要求,原图和新图片文件名、后缀、大小相同
% 若上述条件不同可根据自己要求酌情修改
% Author:Lhy

% 读取所有文件名,方便后续遍历(可以换后缀,这里为jpg)
imgList = dir("E:\外观缺陷检测\进展及数据记录\3.11-3.17\neu-det_v7多尺度top-hat变换\jpg\all\*.jpg");
% 原图片文件夹
originList = "E:\外观缺陷检测\进展及数据记录\3.4-3.10\neu-def_v7\images\all\";
% 新图片文件夹
tophatList = "E:\外观缺陷检测\进展及数据记录\3.11-3.17\neu-det_v7多尺度top-hat变换\jpg\all\";
% 提取name的cell
[imgList] = {imgList.name};

Allpsnr = [];
Allssim = [];

% 遍历文件名
for imgName = imgList
    % cell转str
    imgName = imgName{1,1};
    % 读取图片
    thimg = imread(tophatList + imgName);
    ogimg = imread(originList + imgName);
    % 计算psnr和ssim,存在数组里
    psnr_single = psnr(thimg, ogimg);
    Allpsnr = [Allpsnr, psnr_single];
    ssim_single = ssim(thimg, ogimg);
    Allssim = [Allssim, ssim_single];
end
% 计算长度(防止漏了)和psnr、ssim平均值
psnr_len = length(Allpsnr)
ssim_len = length(Allssim)
meanPSNR = mean(Allpsnr)
meanSSIM = mean(Allssim)

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Matlab中,可以使用`psnr()`函数来计算彩色图像的峰值信噪比(PSNR)。该函数的使用方法如下: ```matlab psnr_value = psnr(I1, I2); ``` 其中,`I1`是原始图像,`I2`是经过处理或压缩后的图像。函数将返回计算得到的PSNR值。 另外,可以使用`ssim()`函数来计算彩色图像的结构相似性指数(SSIM)。该函数的使用方法如下: ```matlab ssim_value = ssim(I1, I2); ``` 其中,`I1`为原始图像,`I2`为经过处理或压缩后的图像。函数将返回计算得到的SSIM值。 需要注意的是,`psnr()`和`ssim()`函数只能用于灰度图像,不能直接用于彩色图像。因此,对于彩色图像,通常需要将其转换为亮度(Y)和色度(Cb和Cr)分量,然后分别计算PSNRSSIM值。具体步骤如下: 1. 使用`rgb2ycbcr()`函数将彩色图像转换为YCbCr颜色空间,得到亮度(Y)和色度(Cb和Cr)分量。 2. 分别取出Y通道,在Y通道上计算PSNRSSIM值。 3. 将原始图像和经过处理或压缩后的图像的Cb和Cr通道分别重采样为与Y通道相同的分辨率。 4. 在重采样后的Cb和Cr通道上计算PSNRSSIM值。 5. 将Y通道和CbCr通道的PSNRSSIM值加权平均,得到最终的PSNRSSIM值。 以上是通过Matlab实现彩色图像的PSNRSSIM计算的基本步骤。具体的实现细节可以根据实际需求进行调整和优化。 ### 回答2: 在Matlab中,可以使用以下步骤来测试彩色图像的PSNR(峰值信噪比)和SSIM(结构相似性)。 1. 导入所需的图像处理包:首先,需要导入Image Processing Toolbox包,可以使用以下命令导入该包: ```matlab addpath(genpath('toolbox_location')); ``` 这里,`toolbox_location`是Image Processing Toolbox所在的路径。 2. 读取图像:使用`imread`函数读取原始图像和测试图像。例如: ```matlab original_image = imread('original_image.jpg'); test_image = imread('test_image.jpg'); ``` 3. 转换图像类型:确保原始图像和测试图像的数据类型为double类型,可以使用以下命令: ```matlab original_image = im2double(original_image); test_image = im2double(test_image); ``` 4. 计算PSNR:通过调用`psnr`函数来计算PSNR值。该函数需要原始图像和测试图像作为输入参数。例如: ```matlab psnr_value = psnr(test_image, original_image); ``` 5. 计算SSIM:通过调用`ssim`函数来计算SSIM值。该函数需要原始图像和测试图像作为输入参数。例如: ```matlab ssim_value = ssim(test_image, original_image); ``` 6. 显示结果:打印PSNR值和SSIM值。可以使用以下命令显示结果: ```matlab disp(['PSNR value: ', num2str(psnr_value)]); disp(['SSIM value: ', num2str(ssim_value)]); ``` 以上是使用Matlab测试彩色图像的PSNRSSIM的基本步骤。根据需要可以添加其他的图像处理操作。 ### 回答3: 使用MATLAB测试彩色图像的PSNRSSIM可以按照以下步骤进行: 1. 首先,读取原始图像和经过处理的图像。可以使用imread函数读取图像文件。 2. 将图像数据转换为浮点数据类型,以便进行计算。可以使用im2double函数将图像数据转换为[0,1]之间的浮点数。 3. 使用psnr函数计算图像的峰值信噪比(PSNR)。该函数的参数包括原始图像和处理后的图像。例如,可以使用以下代码计算PSNRpsnr_value = psnr(original_image, processed_image); 其中,original_image代表原始图像数据,processed_image代表处理后的图像数据,psnr_value代表计算得到的PSNR值。 4. 使用ssim函数计算图像的结构相似度指标(SSIM)。与PSNR类似,ssim函数的参数也是原始图像和处理后的图像。例如,可以使用以下代码计算SSIM: ssim_value = ssim(original_image, processed_image); 其中,original_image代表原始图像数据,processed_image代表处理后的图像数据,ssim_value代表计算得到的SSIM值。 5. 最后,根据实际需求将PSNRSSIM值进行输出或保存。 需要注意的是,使用psnrssim函数计算PSNRSSIM值时,处理前后的图像需要是相同大小的彩色图像。否则,可能需要对图像进行缩放或裁剪,以使其大小一致。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值