Робастная оценка полиномиального геометрического преобразования с помощью scikit-изображения и RANSAC

Я хотел бы надежно оценить полиномиальное геометрическое преобразование с помощью 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-го порядка.

Я подозреваю, что это основная проблема с питоном? Заранее спасибо!

1 ответ

Решение

Мы могли бы предоставить механизм в RANSAC для передачи аргументов оценщику (не стесняйтесь подавать заявку). Быстрый обходной путь, однако, будет:

from skimage.transform import PolynomialTransform

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

PolyTF_4 класс может быть передан непосредственно в RANSAC.

Другие вопросы по тегам