Livewire算法(智能剪刀)一步一步

时间:2017-03-15 16:31:43

标签: image algorithm image-processing

我试图对livewire算法进行编码,但由于该文章"图像合成的智能剪刀"有点凌乱,我不理解如何应用某些东西,例如:如何计算当地的成本地图和其他东西。

所以,任何人都可以用简单的语言一步一步地解释它吗?

我会提供任何帮助

感谢。

1 个答案:

答案 0 :(得分:0)

你应该阅读Mortensen, Eric N., and William A. Barrett. "Interactive segmentation with intelligent scissors." Graphical models and image processing 60.5 (1998): 349-384.,其中包含有关算法的更多细节,而不是较短的论文“智能剪刀图像合成”。

以下是高级概述:

智能剪刀算法使用Dijkstra图搜索算法的变体来查找从种子像素到目标像素的最小成本路径(交互式分割期间鼠标光标的位置)。

1)本地费用

像素p到像素q的每条边都有本地成本,这是本地成本的线性组合(由p和{{1之间的距离调整考虑对角线像素):

  • 拉普拉斯过零q
  • 渐变幅度f_Z(q)
  • 渐变方向f_G(q)
  • 边缘像素值f_D(p,q)
  • 内部像素值f_P(q)
  • 外部像素值f_I(q)

其中一些本地成本是静态的,可以离线计算。 f_O(q)f_Z以不同的比例(意味着具有不同大小的内核)计算,以更好地表示像素f_G的边缘。 qf_Gf_Pf_I动态(或具有动态组件,如f_O的情况)为即时培训计算

2)即时培训

为了防止以比当前跟随的当前成本更低的成本捕捉到不同边缘,该算法使用即时训练为相邻像素分配较低的成本,这些像素沿着当前边缘“看起来像”过去的像素。

这是通过沿最后64或128个边缘像素构建图像值特征的直方图来完成的。通过缩放和舍入f_G(其中f'_G),f_G = 1 - f'_Gf_Pf_I来计算图像值要素,以便在{{中具有整数值1}}或f_O可用于索引直方图。

直方图被反转并缩放以计算动态成本地图[0 255][0 1023]m_Gm_P。我们的想法是,低成本邻居m_I应该适合之前看到的64或128像素的直方图。

本文给出了伪代码,展示了如何计算这些动态成本,给出了路径上先前选择的像素列表。

3)图表搜索

静态和动态成本合并为一个成本,从像素m_O移动到其8个邻居之一q。通过基本上使用具有最小优先级队列的Dijkstra算法来完成从种子像素到目标像素的最低成本路径。该论文给出了伪代码。