Я разрабатываю алгоритм SLAM на C и реализовал метод поиска углов FAST, который дает мне несколько сильных ключевых точек на изображении. Следующим шагом является получение центра ключевых точек с точностью до субпикселя, поэтому я извлекаю патч 3x3 вокруг каждой из них и выполняю подбор по методу наименьших квадратов двумерного квадратичного уравнения:
Где f(x,y) — мера заметности углов каждого пикселя, аналогичная оценке FAST, предложенной на исходная статья, но измененная, чтобы также обеспечивать показатель заметности в неугловых пикселях.
И наименьшие квадраты:
С помощью в качестве оценочных параметров.
Теперь я могу рассчитать местоположение пик подобранного квадратичного, приняв градиент равным нулю, достигнув моей первоначальной цели.
Проблема возникает в некоторых крайних случаях, когда локальный пик находится ближе к краю окна, что приводит к аппроксимации с низкими остатками, но квадратичным пиком вне окна.
Пример:
Выступ угла и контур подобранного квадратичного:
Заметность (синий) и подгонка (красный) в виде 3D-сеток:
Числовые значения этого примера (упорядочение по строкам):
[336, 522, 483, 423, 539, 153, 221, 412, 234]
И результирующий центр подпикселя (2.6, -17.1) неверен.
Как ограничить подгонку так, чтобы центр находился в пределах окна?
Я открыт для альтернативных методов нахождения пика субпикселя.