我正在使用Criminisi的基于Exemplar的算法。在他的论文的第3部分中描述了算法。需要修复的目标区域表示为Ω(ω)。 Ω的边界或轮廓与图像的其余部分相符(表示为Φ(phi)),δΩ(delta omega) )。
现在在论文的第4页,它指出 np (n下标p)是δΩ轮廓的法线。 ▽Ip (也包括正交上标)是 p 点的等照度,即渐变为90度。
我的多变量微积分是生锈的,但我们如何使用python库计算 np 和▽Ip ? δΩ上的每个点 p 的 np 也不同?
答案 0 :(得分:1)
计算这些变量有不同的方法,所有这些都取决于您对该边界的数字描述。 n_p
是轮廓的法线方向。
通常情况下,如果使用解析方程描述轮廓,或者您可以编写近似轮廓的解析方程(例如,拟合5个点的样条曲线(您想要的每一侧各2个),则可以派生该样条曲线,使用
计算所需点的切线
然后,在该行中获取单位向量并获得该正交向量。这一切都很容易(问你是否理解)。
然后你有 isophone 。它看起来像是具有模数的梯度的矢量正交。计算图像上的方向梯度是图像处理中非常常用的技术。您可以轻松获得图像的X和Y导数(提示:numpy.gradient或SO python gradient)。然后,图像的总梯度描述为:
所以只需创建一个带有x和y渐变的向量(取自numpy.gradient)。然后得到那个正交向量。
注意:如何在2D中获取正交向量
[v2x v2y] = [v1y, -v1x]