【问题标题】:converting a binary edge image to a binary mask in MATLAB在 MATLAB 中将二进制边缘图像转换为二进制掩码
【发布时间】:2019-02-13 21:45:29
【问题描述】:

我在 MATLAB 中有一个二维二进制边缘图像,即零矩阵在道路或河流等细长对象的边缘只有 1 个值。如何将河流两条边缘之间的所有像素指定为 1,将边缘外的像素指定为 0。我使用了形态学imfill 运算符,但它没有效果。

这是合成的二值边缘图像。我想填充弯曲事件的内部: 填充合成图像的结果: 复杂的边缘图像是这样的: 复杂的边缘图像由我的方法产生:

提前谢谢你

【问题讨论】:

  • 为了得到一个好的答案,请附上您描述的图片,以及您如何尝试使用imfill 以及为什么它没有达到您的预期。
  • @尊敬的 Luengo 教授:我只使用了这个简单的命令 `BW = imfill(synthetic),但没有导致数据发生任何变化。
  • @Cris Luengo:我刚刚用鼠标指定了一些点,结果很好。但是,在更复杂的图像中,我遇到了问题。在用一些约束填充它们之前,我想只保留河流的边缘,但我不知道应该使用什么约束。请问你能帮帮我吗?我在问题中添加了复杂的图像。
  • 我遇到了复杂图像的这个错误:警告:图像太大,无法显示在屏幕上;显示为 67%。我无法通过鼠标指定点。
  • 看你的图,我不知道什么是评论,什么不是河流,所以我无法给你任何建议。河流和道路检测是很好研究的主题,您是否进行了文献检索?改进最先进的技术是好的,重新发明轮子不是。

标签: matlab binary mask


【解决方案1】:

你的边缘之间似乎有洞......尝试imdilate然后imfill

【讨论】:

  • imdilate 中应该使用什么 SE?我不想增加弯曲事件的宽度。
  • 不存在“正确”答案。检查不同的 SE,看看最适合你的。
猜你喜欢
  • 2020-03-12
  • 2011-02-15
  • 2018-07-21
  • 2014-08-24
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多