Matlab中的行矩阵代码

时间:2011-02-11 18:26:22

标签: matlab matrix binary-data

function [fl re]=lines(im_text)  
%# Divide text in lines  
im_text=clip(im_text);  
num_filas=size(im_text,1);  
for s=1:num_filas  
    if sum(im_text(s,:))==0  
        nm=im_text(1:s-1, :); %# First line matrix  
        rm=im_text(s:end, :);%# Remain line matrix  
        fl = clip(nm);  
        re=clip(rm);  
        %#result  
        break  
    else  
        fl=im_text;%#Only one line.  
        re=[ ];  
    end  
end  
function img_out=clip(img_in)  
[f c]=find(img_in);  
img_out=img_in(min(f):max(f),min(c):max(c));%#Crops image  

任何人都可以提供此代码的解释以及我如何总结它 并简化它而不改变它执行的功能?我怎样才能实现相同的算法,而不是让它自己成为一个函数。将此添加到另一个代码。 感谢

1 个答案:

答案 0 :(得分:1)

该函数采用二进制图像,然后在图像中查找没有对象的行(即仅黑色像素),并沿该行分割图像。此外,它会裁掉子功能clip中物体周围的所有空(即黑色)区域。

您可以将其简化为

cutRowIdx = find(all(~im_text,2),1,'first');
topPart = clip(im_text(1:cutRowIdx-1,:)); 
bottomPart = clip(im_text(cutRowIdx:end,:));

clip作为子功能添加到您的函数中,或将其作为独立函数并将其放入您的路径中。