首页 > 学院 > 开发设计 > 正文

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

2019-11-06 07:14:10
字体:
来源:转载
供稿:网友
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;    endendw = strcat('/home/k40/caffe-master/matlab/demo/tupian/2/total4.png');%将合成的图片存储的位置及命名imwrite(double(I),w);imshow(double(I));

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表