检测机器人拾取的不重叠Tiles的Matlab中的位置,方向和颜色

时间:2016-10-03 00:40:22

标签: matlab

我目前正在开展一个我需要找到的项目 堆积的方形瓦片,不重叠,  我目前正在开展一个项目  我需要确定方向,位置(中心)和颜色  每块方砖这些方向和位置
将被用作要拾取的机器人的输入 并且机器人将在特定位置对它们进行排序。  我正在使用Matlab,我应该使用TCP / IP传输数据。 我正在尝试边缘检测(canny,sobel), 找到了边界,使用阈值和FCM进行分割但是 我还没有找到一种可靠的方法来确定那些瓷砖 没有重叠,我试图使用模板形状匹配,但  我不知道该怎么做。这需要实时完成 因为我将使用从USB相机拍摄的帧 附在PC上。我想知道是否有人可以提供  可靠的方案?这是一个示例图像。 我想知道是否有人可以提供 确定方形瓷砖的可靠解决方案  哪些没有重叠?以下是示例图片overlapped Tiles

2 个答案:

答案 0 :(得分:0)

您已将图像分为图块和背景。所以现在只需标记所有连接的组件。拿每一个并测试单个瓷砖。如果您知道瓷砖的大致尺寸,请先按区域排除。然后计算质心和最左边,右边,顶部和底部。如果是瓷砖,则顶部底部和左右的交点将近似在质心中,并且半角将垂直于瓷砖边缘。所以旋转,取边界框,并计算未设置的像素,对于矩形瓷砖,它应该几乎为零。

(如果瓷砖/背景分离有点冒险,你可能需要进行一两个形态学操作来清理图像。)

查看二进制图像处理库http://malcolmmclean.github.io/binaryimagelibrary 1

答案 1 :(得分:0)

感谢您的快速重播。我已经做了一些形态学操作,发现连接组件,下面是我在matlab中的代码,每块瓷砖都有2.5 * 2.5厘米的面积

    a = imread('origenal image.jpg');
    I = rgb2gray(a);
    imshow(I)
    thresold = graythresh(I);
    se1=strel('diamond',2);
    I1=imerode(I,se1);
    figure(1)
    imshow(I1);
    bw = imclose(I1 , ones(25) );
    imshow(bw)
    CC = bwconncomp(bw);
    L = labelmatrix(CC);