matlab中图像组件的宽高比

时间:2015-07-01 08:25:13

标签: matlab image-processing

我试图将图像分解成组件。这是我的图像 - enter image description here

这是代码 -

image=imread('compo1.jpg'); 
image=imresize(image,[394 464]);
image = im2bw(image);
image=imcomplement(image);   

[imx imy]=size(image);
new1=zeros(imx,imy);
compo = bwlabel(image,8) ;
mx=max(max(compo));

for i=1:mx
    [r,c] = find(compo==i);
    new1=zeros(imx,imy);
    rc = [r c];
    [sx sy]=size(rc);


    for j=1:sx
        x1=rc(j,1);
        y1=rc(j,2);
        new1(x1,y1)=1;
    end
    imshow(new1);
    s = regionprops(new1, 'BoundingBox' );
    A =(s.BoundingBox(4) / s.BoundingBox(3))
end

我正在使用bwlabel但是这里我的图像有一个连接的组件,因此它不起作用。我想将每一行分开作为单独的段。我的主要目标是找到每个线段的宽高比。如何在不使用bwlabel的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用Hough Transform来检测线条,但输出将采用参数形式。因此,您可以选择卷积技术,其中针对特定方向的内核与图像进行卷积,以获得该特定方向的线。您可以参考此link以获取更详细的说明。