matlab 4点相交点,使用Matlab检测交叉中心点

干得好.我假设你有图像工具箱,因为如果你没有那么你可能不应该尝试做这种事情.但是,我相信所有这些功能都可以用卷积来实现.我在上面提到的图像上完成了这个过程并获得了点(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可能还有其他方法可以做到这一点,但我认为这种方式效果很好.您可能还需要根据图片进行调整.如果需要,我可以包括每个步骤的图像.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值