首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强度相关侵蚀

强度相关侵蚀
EN

Stack Overflow用户
提问于 2022-08-22 15:52:07
回答 1查看 47关注 0票数 0

假设您有一个二维numpy数组的图像,如下所示。现在你想要侵蚀图像。然而,你不想同样地侵蚀它。只有当图像中的物体强度小于50时,它才会被侵蚀,否则它根本不应该受到影响。

在下面的图像中,只有蓝色标记的区域应该被侵蚀,但是较轻的灰色区域应该保持不变。

此外,任何与浅灰色区域相邻的深灰色区域都不应受到影响(红色标记).后一种要求使整个物体很难被腐蚀,然后将原来的浅灰区域放回原来的灰度区域,因为这样的操作也会影响深灰色,如果冲蚀一直侵蚀到红色部分,那么深灰色也会被标记成红色。在这种情况下,物体上会有一个洞。

我已经研究过OpenCV的erode函数,但是它没有任何选择。我也在谷歌上搜索,没有找到任何解决方案。

EN

回答 1

Stack Overflow用户

发布于 2022-08-22 17:15:04

下面的直进解决方案可能对更复杂的图像起作用,也可能不起作用。但是对于这个例子,它应该做你需要做的事情。

  1. 侵蚀了整个图像。
  2. 用原始数据替换不想被侵蚀的区域。

例如(Python伪代码,使用NumPy风格的索引符号等等):

代码语言:javascript
复制
out = erosion(img)
mask = img >= 50
out[mask] = img[mask]

这也可以写成

代码语言:javascript
复制
mask = out.copy()
mask[mask < 50] = 0
out = max(erosion(img), mask)

(其中max是按元素计算的最大值)。

为了避免侵蚀“虽然”薄的明亮区域,在冲蚀中使用最小的结构元素大小,并迭代:

代码语言:javascript
复制
out = img.copy()
for _ in range(10):
   out = max(erosion(out, size=1), mask)

这当然比较慢,但它会产生你想要的效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73447862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档