Matlab图像顺序裁剪与顺序恢复(rg和高光谱均适用)

标题 Matlab图像顺序裁剪与顺序恢复

在跑超分辨率算法过程中,由于显存限制可能需要先将图片裁剪在将其拼接回去,于是自己简单的写了两个程序,供自己使用,上传到CSDN也是方便自己查阅,如有侵权请联系我,我加引用(狗头保命)。
顺序裁剪代码

clear,clc;close all;
file_path = 'F:\matlab2020\bin\CCN\';% 图像文件夹路径
%save_path1= 'F:\matlab2020\MACV3\';
save_path= 'F:\music\';
img_path_list = dir(file_path,'jpg');%获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);%获取图像总数量
if img_num > 0
    for k = 1:img_num
        image_name = img_path_list(k).name;% 图像名
        B = imread(strcat(file_path,image_name));
        fprintf('%d %s\n',k,strcat(file_path,image_name));
        B = im2double(B); %将图像读取为double类型
        [M, N, C] = size(B); %获取图像的大小
        m = 228; %每张小图的宽(行)
        n = 261;%每张小图的长(列)
        count = 0; %计数
            for i = 1:M/m
                for j = 1:N/n
                    block = B((i-1)*m+1 : i*m, (j-1)*n+1 : j*n, :); %生成小图
                    %加上下面的代码可处理高光谱图像
                      %block = uint8(B(:,:,1:3) / 4);%处理高光谱图像
        			  %temp = block(:,:,1);%bgr to rgb
                      %block(:,:,1) = block(:,:,3);
                      %block(:,:,3) = temp;
                      %block = block;
                      
                    if count < 10%后面都是命名的东西了
                    imwrite(block,[save_path,strcat(image_name( ...
                        1:end-8),num2str(00),num2str(count+1)),'x4','.png'])
                    else
                    imwrite(block,[save_path,strcat(image_name( ...
                        1:end-9),num2str(0),num2str(count+1)),'x4','.png'])
                    end
                    count = count + 1; %计数加一
                end
            end
    end
end

顺序拼接代码:

clear
clc
close all
file_path = 'F:\music\';%需要拼图的图像放在file_path中
save_path = 'F:\matlab2020\';%你要将拼好的图放在哪里
list = dir(strcat(file_path,'*.png'));%列出png格式图片
num = length(list);
if num > 0
    count = 0;
     A = zeros(912*4,1044*4,3);%(M,N,C)取决于原图的大小生成全黑图
     for i=1:4
         for j=1:4
              image_name = list(count+1).name;
              B = imread(strcat(file_path,image_name));%读取图片
              fprintf('%d %s\n',count,strcat(file_path,image_name));%显示正在处理的图片
              B = im2double(B); %将图像读取为double类型 
              A((i-1)*912+1:i*912,(j-1)*1044+1:j*1044,:)= B;%拼图过程实际上就是
              %将小图变成矩阵在存储到全黑图模板中
              count = count + 1;
         end
     end
     imwrite(A,[save_path,strcat('ok','x4','.png')]);%命名为okx4.png
end

水平有限,如有错误,还请大佬们不灵赐教,谢谢大家!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值