【问题标题】:Robustly estimate Polynomial geometric transformation with scikit-image and RANSAC使用 scikit-image 和 RANSAC 稳健地估计多项式几何变换
【发布时间】:2015-01-16 16:26:22
【问题描述】:

我想用 scikit-image skimage.transform 和 skimage.measure.ransac 稳健地估计多项式几何变换

ransack 文档提供了一个非常好的示例,说明如何使用相似度变换来准确地做到这一点。事情是这样的:

from skimage.transform import SimilarityTransform
from skimage.measure import ransac
model, inliers = ransac((src, dst), SimilarityTransform, 2, 10)

我需要使用skimage.transform.PolynomialTransform 而不是 SimilarityTransform,并且我需要能够指定多项式顺序。

但是 RANSAC 调用将 PolynomialTransform() 作为输入,它不接受任何输入参数。所需的多项式阶数确实在 PolynomialTransform() 的估计属性中指定...所以 RANSAC 调用使用多项式阶数的默认值,即 2,而我需要一个 3 阶或 4 阶多项式。

我怀疑这是一个基本的 Python 问题? 提前致谢!

【问题讨论】:

    标签: python image-processing transformation scikit-image ransac


    【解决方案1】:

    我们可以在 RANSAC 中提供一种将参数传递给估算器的机制(请随时提交工单)。然而,一个快速的解决方法是:

    from skimage.transform import PolynomialTransform
    
    class PolyTF_4(PolynomialTransform):
        def estimate(*data):
            return PolynomialTransform.estimate(*data, order=4)
    

    然后可以将PolyTF_4 类直接传递给 RANSAC。

    【讨论】:

    • 太棒了!我知道这种风格的简单解决方案是可能的,但作为一个初学者程序员,我只是不知道如何去做。稍微更正一下:return PolynomialTransform.estimate(*data, order=4) 谢谢 Stefan!
    • ps:我会提交那张票,其他人可能有兴趣拥有该功能...
    • 没问题!请注意,顺便说一句,您可以在 Python 中传递关键字参数而无需指定关键字本身。不过,我认为您的编辑使示例更清晰!
    • 真的吗?我必须添加“order =”,否则它会抱怨:-(也许还有其他问题......
    • 你是对的——因为使用了*args
    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2016-01-13
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多