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
任何人都可以提供此代码的解释以及我如何总结它 并简化它而不改变它执行的功能?我怎样才能实现相同的算法,而不是让它自己成为一个函数。将此添加到另一个代码。 感谢
答案 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
作为子功能添加到您的函数中,或将其作为独立函数并将其放入您的路径中。