【问题标题】:Line Matrix code in MatlabMatlab中的线矩阵代码
【发布时间】:2011-02-11 18:26:22
【问题描述】:
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  

任何人都可以提供此代码的解释以及我如何总结它 并在不改变其执行功能的情况下简化它?我如何实现相同的算法而不使其本身成为一个函数。将此添加到另一个代码中。 谢谢

【问题讨论】:

    标签: matlab matrix binary-data


    【解决方案1】:

    该函数获取一张二值图像,然后在图像中查找没有对象(即只有黑色像素)的行,并沿着这条线分割图像。此外,它会裁剪掉子函数clip 中对象周围的所有空白(即黑色)区域。

    你可以把它简化成

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

    clip 作为子函数放入您的函数中,或将其制成独立函数并将其放入您的路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多