我遵循了 Tim Cootes 在 textbook和 original paper .到目前为止一切顺利(Procrustes 分析、主成分分析、图像预处理(对比度、噪声))。只有拟合程序本身似乎没有收敛。
我使用灰度结构方法的统计模型,如 textbook 中所述(p. 13) 为 8 个切牙中的每一个创建拟合函数,为每个切牙的 40 个地标中的每一个创建拟合函数(因此总共创建了 320 个不同的拟合函数),通过沿两侧采样 5 (= k
) 点通过 8 个切牙中的每一个的 40 个界标中的每一个的边界的垂直轮廓。这些函数等于马氏距离(textbook 第 14 页)。
在拟合过程中,我在 dentry 当前近似值的 40 个地标中的每一个沿垂直于边界的轮廓的两侧采样 10 (= m>k
) 点。这样我必须评估 2(m-k)+1
具有相应拟合函数的样本。
这些样本中的每一个都包含 2k+1
的梯度值点。选择最小化函数的样本,并将相应的地标定位在那些 2k+1
的中间点。点。这是针对 40 个地标中的每一个完成的。这会导致新的(尚未验证)近似 dentry 。
图像坐标系中的这种近似与图像坐标系中的 dentry 模型对齐。然后计算主成分分析的系数(bi
)并检查是否|bi|<3*sqrt(eigenvalue_i)
为了不偏离模型的形状太多。如有必要,系数 (bi
) 会受到限制,我们会转换回图像坐标系并开始一些新的迭代。
显示我们想要找到左上门牙的图像。
在第 19 次迭代中显示图像坐标系中 dentry 近似值的梯度图像。 (红色:验证前 - 绿色:验证后)正如您所看到的,我们有点偏离了最佳解决方案。
def create_gradient(img):
temp = cv2.Scharr(img, ddepth=-1, dx=1, dy=0)
return cv2.Scharr(temp, ddepth=-1, dx=0, dy=1)
显示迭代 19 中模型坐标系中 dentry 的近似值。 (蓝色:模型 - 红色:验证前 - 绿色:验证后)正如你所看到的,我们仍然接近模型的形状。
在 19 次迭代的模型坐标系中显示 dentry 的近似值。 (蓝色:模型 - 红色:验证前 - 绿色:验证后)正如我们所见,在所有这些迭代过程中我们都保持接近模型的形状
因此我们保持接近形状(由主成分分析保护),但不接近地标周围的强度行为(由拟合函数保护)。
最佳答案
梯度图像错误或更好没有任何用处,因为需要沿剖面法线而不是水平和垂直方向求导。
关于python - 事件形状模型的拟合过程不与统计模型拟合函数收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23738004/