用MATLAB对图片进行切割及复原

SkipStep=8;%每一个切割后的图片块的大小 和遍历的补偿
M=8;%图片块的长
N=8;%图片块的宽
n=0;%图片块的编号
I=imread('79.png');%要切割的图片
I = im2double(I);
%imshow(I);
%I=rgb2gray(I);%灰度转化
[H,W,t]=size(I);
 xStepNum = floor((W-N)/SkipStep+1);%朝负无穷方向取整 宽度方向block移动的次数        
     yStepNum = floor((H-M)/SkipStep+1);%朝负无穷方向取整  高度y方向移动的次数
        for j=1:xStepNum%一列一列来取的
            for m=1:yStepNum
            
n=n+1;
PImg=I((m-1)*SkipStep+1:(m-1)*SkipStep+M,(j-1)*SkipStep+1:(j-1)*SkipStep+N,:);%分割图像
a = strcat('/home/k40/caffe-master/matlab/demo/tupian/2/4/',num2str(n),'.png');%存储的图片的位置及每幅图片块的命名
imwrite(double(PImg),a);

end
        end


上述代码即将一幅图片切割成8*8的图片块

 

N = 8;
M = 8;
stepsize = 8;
n = 0;
I = zeros(256,256,3);%原图片的大小为256*256的彩色图

x = 256 / N;
y = 256 / M;

for i = 1 : x
    for j = 1 : y
        n = n + 1;
        a = strcat('/home/k40/caffe-master/matlab/demo/tupian/2/2_4/',num2str(n),'.png');%存储的切割的图片块的位置及每幅图片块的命名
        A = imread(a);
        A = im2double(A);
        I((j-1)*stepsize+1 : (j-1)*stepsize+M,(i-1)*stepsize+1 : (i-1)*stepsize+N,:) = A;
    end
end
w = strcat('/home/k40/caffe-master/matlab/demo/tupian/2/total4.png');%将合成的图片存储的位置及命名
imwrite(double(I),w);
imshow(double(I));

上述代码即实现了对切割图片的复原

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT远征军

谢谢各位鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值