Matlab(双三次插值、单通道变三通道、裁剪图片使得GT图像和inference后的图像大小一致)三段代码

这段代码主要涉及图像处理的几个步骤:使用bicubic插值算法进行双三次图像缩放,将单通道图像转换为三通道,以及裁剪图像以匹配目标尺寸。代码首先读取指定目录下的图像文件,然后应用bicubic插值算法将图像缩小,接着将单通道图像转换为三通道,最后裁剪图像以确保高分辨率(Ground Truth)图像和推断后图像的尺寸一致。整个过程是为了准备用于图像超分辨率重建的输入和目标数据。
摘要由CSDN通过智能技术生成

仅供参考,主要是为自己学习使用

一、bicubic双三次插值算法()

clear all
clc
  
im = {}; %%创建字典im以保存读取的图片
dis = dir('D:\EDSR\dataset\Set14\*.bmp');
b = length(dis)
for i = 1:length(dis)
    path = strcat('D:\EDSR\dataset\Set14\',dis(i).name);
    im{i} =imread(path); %%将读取到的图像存储在字典im中
    up_scale = 2; %%将降采样系数设为2,即图像缩小2倍
    %if size(im{i},3)>1 %%如果图像不是单通道,则转化为灰度图返回m第三个维度的长度,并赋值给num如果m的维度小于3则返回1.
    %    im{i} = rgb2ycbcr(im{i});
    %    im{i} = im{i}(:, :, 1);
    %end
%     im_gnd{i} = modcrop(im{i}, up_scale);%保证图像被scale整除
%     im_gnd{i} = single(im_gnd{i})/255;
 
%% bicubic interpolation
    im_l{i} = imresize(im{i}, 1/up_scale, 'bicubic');
    %im_b{i} = imresize(im_l{i}, up_scale, 'bicubic');
 
    %figure,imshow(im_l{i}) %%为了同时显示多幅图片,不加figure的话只会显示一副图片,因为读入的第i副图片会被第i+1副图片覆盖
    mkdir set14_new;
    %imwrite(picture,'/Set5_new/dis('num2str(i,'%05d')').name.png');
    imwrite(im_l{i},['D:\EDSR\dataset\set14_new\' num2str(i,'%05d') '.png'])
end
a='wancheng'

二、单通道变三通道

clear all
clc

im = {}; %%创建字典im以保存读取的图片
dis = dir('D:\EDSR\dataset\GTdata\Set14\*.bmp');
b = length(dis)
for i = 1:length(dis)
    path = strcat('D:\EDSR\dataset\GTdata\Set14\',dis(i).name);
    im{i} =imread(path); %%将读取到的图像存储在字典im中
    up_scale = 2; %%将降采样系数设为2,即图像缩小2倍
    %if size(im{i},3)>1 %%如果图像不是单通道,则转化为灰度图返回m第三个维度的长度,并赋值给num如果m的维度小于3则返回1.
    %    im{i} = rgb2ycbcr(im{i});
    %    im{i} = im{i}(:, :, 1);
    %end
    if size(im{i},3)<3
        I3(:,:,1)=im{i};
        I3(:,:,2)=im{i};
        I3(:,:,3)=im{i};
        im{i}= I3;
    end
    imwrite(im{i},['./result/', num2str(i,'%05d') '.png'])
end
a = 'wancheng'

三、裁剪图片使得GT图像和inference后的图像大小一致

clear all
clc

im_result = {}; %%创建字典im以保存读取的图片
im_gt = {}; 
im_a = {};
dis_result = dir('D:\EDSR\dataset\data_inference\Set14_result\*.png');
dis_gt = dir('D:\EDSR\dataset\GTdata\Set14\*.png');
b = length(dis_result)
for i = 1:length(dis_result)
    path_result = strcat('D:\EDSR\dataset\data_inference\Set14_result\',dis_result(i).name);
    path_gt = strcat('D:\EDSR\dataset\GTdata\Set14\',dis_gt(i).name);
    im_result{i} = imread(path_result); %%将读取到的图像存储在字典im中
    im_gt{i} = imread(path_gt);
    w_result = size(im_result{i},2);
    w_gt = size(im_gt{i},2); %获取图像宽
    h_result = size(im_result{i},1);
    h_gt = size(im_gt{i},1);%获取图像高
%     if w_result>w_gt && h_result==h_gt
%         im_result{i} = imcrop(im_result{i},[0,0,w_result-1,h_result]);
%     elseif w_result==w_gt && h_result>h_gt
%         im_result{i} = imcrop(im_result{i},[0,0,w_result,h_result-1]);
%     elseif w_result>w_gt && h_result>h_gt
%         im_result{i} = imcrop(im_result{i},[0,0,w_result-1,h_result-1]);
%     end
    im_a{i} = imcrop(im_result{i},[0,0,w_gt,h_gt]);
    %mkdir inference
    imwrite(im_a{i},['inference/', num2str(i,'%05d') '.png'])
end
a = 'finish'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可可可可可可可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值