干得好.我假设你有图像工具箱,因为如果你没有那么你可能不应该尝试做这种事情.但是,我相信所有这些功能都可以用卷积来实现.我在上面提到的图像上完成了这个过程并获得了点(139,286),其中138是行,268是列.
1.将图像转换为二进制图像:
bw = bw2im(img, .25);
其中img是原始图像.根据图像,您可能需要调整第二个参数(范围从0到1),这样您才能获得十字.不要担心交叉没有完全连接,因为我们将在下一步中解决这个问题.
2.将图像分开以加入零件.我不得不两次这样做,因为我必须在二进制图像转换上设置如此低的阈值(图像的某些部分非常暗).膨胀基本上只是在现有白色像素周围添加像素(当我将其发送到bwmorph时,我也将反转二进制图像,因为操作是作用于白色像素,这些像素的值为1).
bw2 = bwmorph(~bw, 'dilate', 2);
最后一个参数表示进行扩张操作的次数.
3.将图像缩小到一定程度.
bw3 = bwmorph(bw2, 'shrink',Inf);
同样,最后一个参数表示执行操作的次数.在这种情况下,我放入Inf缩小,直到只有一个像素为白色(换句话说是1).
4.找到仍为1的像素.
[i,j] = find(bw3);
这里,i是行,j是bw3中像素的列,使得bw3(i,j)等于1.所有其他像素在bw3中应为0.
使用bwmorph可能还有其他方法可以做到这一点,但我认为这种方式效果很好.您可能还需要根据图片进行调整.如果需要,我可以包括每个步骤的图像.