gpt4 book ai didi

image-processing - 图像膨胀和腐 eclipse 的实现

转载 作者:行者123 更新时间:2023-12-05 07:57:19 25 4
gpt4 key购买 nike

我正在尝试找出一种有效的方法来实现二进制图像的图像膨胀和腐 eclipse 。据我了解,天真的方法是:

  • 遍历图片
  • 如果像素为1
  • 基于结构元素的邻域循环高度和宽度
  • (扩张)用图像中的值替换图像的每个像素SE的相应位置
  • (侵 eclipse )检查是否所有邻域都等于 SE,如果是,则保留所有像素,否则删除中心

所以这意味着对于每个像素我都必须循环遍历 SE 并使其成为 O(NMW*H)。

有没有更优雅的方式来做到这一点?

最佳答案

是的,有!!!

首先,您要将结构元素分解(如果可能)为段(由垂直段和水平段组成的正方形)。然后你只对段执行腐 eclipse /膨胀,这已经降低了复杂性。

现在对于腐 eclipse /膨胀部分,你有不同的解决方案:

  • 如果您只处理 8 位图像而不使用 C/C++,则可以使用带有直方图的实现来跟踪最小值/最大值。看看这个非凡的作品 here .他甚至添加“地标”以减少操作次数。
  • 如果您使用 C/C++ 并处理不同类型的图像编码,那么您可以使用快速比较(SSE2、SSE4 和自动矢量化),就像 SMIL library 中的情况一样。 .在这种情况下,您可以使用 Material 加速度逐行比较,而不是逐个像素地进行比较。它似乎是有史以来最快的图书馆。
  • 最后一种方法,速度较慢但适用于所有类型的编码,是使用 Lemmonier 算法。它由 fulguro library 实现.

对于磁盘类型的结构元素,没有什么“快”的,你必须使用基本算法。对于六边形结构元素,可以逐行处理,但不能并行。

关于image-processing - 图像膨胀和腐 eclipse 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com