用于图像裁剪的matlab代码,不使用内置函数

时间:2017-09-11 16:22:56

标签: matlab crop

以下代码用于裁剪图像的多余白色部分(为了减小图像尺寸)。即如果图像中出现“A”,那么顶部,底部,左侧和右侧的所有多余白色部分都将被移除。

在此代码中,我无法理解“sum”功能的使用,请帮助...

 %  Find the boundary of the image
  [y2temp x2temp] = size(bw);
 x1=1;
 y1=1; 
  x2=x2temp; 
  y2=y2temp;


 % Finding left side blank spac es
 cntB=1;
 while (sum(bw(:,cntB))==y2temp)
  x1=x1+1;
 cntB=cntB+1;
    end


  % Finding right side blank spaces
 cntB=1;
  while (sum(bw(cntB,:))==x2temp)
 y1=y1+1;
 cntB=cntB+1;
end


 % Finding upper side blank spaces
cntB=x2temp;
 while (sum(bw(:,cntB))==y2temp)
x2=x2-1;
cntB=cntB-1;
end


 %  Finding lower side blank spaces
 cntB=y2temp;
 while (sum(bw(cntB,:))==x2temp)  
 y2=y2-1;
 cntB=cntB-1;  
 end


 % Crop the image to the edge
  bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);

1 个答案:

答案 0 :(得分:0)

这段代码在较少的行中也可能做同样的事情。

bw_bin=bw==1; %make it binary
row = all(bw_bin); %checks if they are all one
column = all(bw_bin');
bw=bw(find(column==0,1,'first'):find(column==0,1,'last'),find(row==0,1,'first'):find(row==0,1,'last')); %ake only the rows and columns where this is not the case