【问题标题】:Image contour tracing: Jacob's stopping criterion issue图像轮廓跟踪:Jacob 停止标准问题
【发布时间】:2021-08-05 05:49:01
【问题描述】:

我正在尝试在我的 JavaScript 项目中采用 Moore-Neighbor 轮廓跟踪算法,目前我正在阅读本关于轮廓跟踪的教程: http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/square.html

但我在理解 Jacob 的停止标准方面存在问题。教程将这个标准解释为

以相同方式第二次输入起始像素后停止 你最初输入的

据我了解,这意味着如果我们第一次以某个绝对方向输入起始像素 S(例如,如果我们从左下角搜索起始像素,则为 UP),我们必须停止跟踪以相同的绝对方向(向上,与第一次一样)重新进入起始像素后。

这听起来很清楚,但我发现有些情况永远不会满足这个条件。这张图片显示了其中一种情况: Jacobs stopping criterion issue

如您所见,起始像素(标记为 S)最初是使用向上方向(紫色箭头)输入的,但第二次和所有其他时间将使用向左方向(红色箭头)输入。因此,Jacob 的停止条件(输入与第一次方向相同的起始像素)永远不会满足。

我想,我只是误解了本教程的这一部分……如果你能解释一下我错在哪里,我会很高兴的。

【问题讨论】:

    标签: javascript image-processing trace contour image-recognition


    【解决方案1】:

    我认为您最好使用同一网站上描述的Radial Sweep algorithm。它与 Moore-Neighbor 算法非常相似,但它不跟踪方向,因此您不能使用 Jacob 的停止标准。

    本教程提出了一个新标准:

    停止标准 2

    假设每次算法找到一个新的边界像素 Pi 时,将其插入到边界像素序列中,如下所示:P1, P2, P3, ..., Pi ;并被声明为当前边界像素。 (假设 P1 是起始像素)。 这意味着我们知道每个当前边界像素 Pi 的前一个边界像素 Pi-1。 (至于起始像素,我们假设 P0 是一个虚构的像素 - 不等同于网格上的任何像素 - 在边界像素序列中位于起始像素之前)。

    考虑到上述假设,我们可以定义我们的停止标准: 算法在以下情况下终止:

    a) 当前边界像素 Pi 之前在边界像素序列中作为像素 Pj(其中 j

    b)Pi-1 = Pj-1.

    换句话说,算法在第二次访问边界像素 P 时终止,前提是 P 之前的边界像素(在边界像素序列中)第二次与之前的像素相同首次访问 P 时的 P。

    有了这个标准,算法应该能够处理大多数情况,包括你图片上的那个和不是 4 连通的 8 连通模式。

    理论上,您甚至应该能够将此标准与 Moore-Neighbor 算法一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 2022-10-04
      • 2016-10-24
      相关资源
      最近更新 更多