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

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

一、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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
yolov8是一种目标检测算法,它在推理过程中需要进行图像后处理来获取检测结果。下面是yolov8图像后处理的一般步骤: 1. 检查图片大小是否符合要求: 在图像后处理之前,通常需要检查输入图片大小是否符合模型的要求。这可以通过check_imgsz函数来实现。 2. 处理推理源数据: 在进行图像后处理之前,需要先加载推理源数据。这可以通过load_inference_source函数来完成。 3. 解码预测结果: yolov8的预测结果通常是经过编码的边界框和类别信息。在图像后处理中,需要对这些编码结果进行解码,以获取真实的边界框位置和类别标签。 4. 进行非极大值抑制: yolov8通常会生成多个候选框,为了去除重叠的候选框,需要进行非极大值抑制(NMS)操作。NMS会根据候选框的置信度和重叠度来选择最终的检测结果。 5. 绘制边界框和标签: 最后一步是将检测结果绘制在原始图像上,通常会使用边界框和类别标签来标记检测到的目标。 下面是一个示例代码,演示了yolov8图像后处理的过程: ```python # 检查图片大小是否符合要求 def check_imgsz(image): # 检查图片大小的逻辑代码 pass # 加载推理源数据 def load_inference_source(image): # 加载推理源数据的逻辑代码 pass # 解码预测结果 def decode_predictions(predictions): # 解码预测结果的逻辑代码 pass # 非极大值抑制 def non_max_suppression(predictions): # 非极大值抑制的逻辑代码 pass # 绘制边界框和标签 def draw_boxes(image, boxes, labels): # 绘制边界框和标签的逻辑代码 pass # 图像后处理 def yolov8_post_processing(image): # 检查图片大小是否符合要求 check_imgsz(image) # 加载推理源数据 inference_data = load_inference_source(image) # 解码预测结果 predictions = decode_predictions(inference_data) # 非极大值抑制 filtered_predictions = non_max_suppression(predictions) # 绘制边界框和标签 result_image = draw_boxes(image, filtered_predictions) return result_image # 调用图像后处理函数 image = load_image("image.jpg") result = yolov8_post_processing(image) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可可可可可可可乐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值