Как стать автором
Обновить

Комментарии 16

Неужели точность фотограмметрии выше, чем у специальных приборов? А если деформации незначительные, например, метка сдвинулась на 1 пиксель? То как тогда найти положение центра метки хотя бы с точностью до десятой доли пиксела? Я не думаю, что центр масс спасет.
Как раз для точности до десятой доли пиксела центр масс должен спасать. Но изображение с камеры довольно зашумленное, так что для начало его было бы неплохо отфильтровать. Увеличение количества контрольных точек тоже должно немного повысить точность, но не думаю что с таким разрешением камеры, как на снимках, точность измерений сможет приблизиться к спец приборам.
Про шумы я пока молчу. Но вот мне все таки не понятно. Если координаты метки были (x, y), а стали (x, y+1), то как найти координаты с точностью до десятой доли пиксела?
Для этого не обязательно делать бинаризацию. Можно даже не делать нормализацию гистограммы яркости изображения (хотя она бы очень помогла). В данном примере можно просто преобразовать изображение в градации серого, отбросить все черные точки (ниже определенного порога), и центр масс вычислить с учетом яркости. Тогда даже если метка сдвинется на полпиксела, центр масс сместиться на дробную величину (в идеале на эти же полпиксела), но тут на точность уже будут влиять шумы, дефекты самой камеры и т.д.
Спасибо за подробный ответ. Теперь до меня дошло.
Неужели точность фотограмметрии выше, чем у специальных приборов?

Именно в данном случае, точность ниже или сопоставима.
Но если рассматривать профессиональные аналоги, как PhotoModeler, точность в них, как минимум, на порядок выше — 0.001мм (значение получено экспериментально, официального значения найти не удалось).
Есть еще одна комания — MTS, характеристики их софта лежат в общем доступе.

А если деформации незначительные, например, метка сдвинулась на 1 пиксель? То как тогда найти положение центра метки хотя бы с точностью до десятой доли пиксела? Я не думаю, что центр масс спасет.

1 пиксель — значительное смещение. А центр масс используется специально для подсчета смещений меньше одного пикселя, и в целом, алгоритм дает удовлетворительные результаты.
Если метка сдвигается на 0.1 пикселя, то происходит заметное изменение фотографии — метка из яркого круга превращается в размытый эллипс. Это изменение уже и отслеживается с помощью формулы.
Попробуйте не делать бинаризацию, а считать центр масс с учетом яркости пиксела, результат Вас сильно порадует. И не пренебрегайте фильтрами, они помогут сильно увеличить точность. Гуглите на тему субпиксельного анализа, там много интересного.
Отвечу на вашу слова из комментария выше:
В данном примере можно просто преобразовать изображение в градации серого, отбросить все черные точки (ниже определенного порога), и центр масс вычислить с учетом яркости.

Именно так и делается, а бинаризация для метки выполняется для того, чтобы определить порог. То есть при анализе метки мы создаем две копии изображения — в оттенках серого и черно-белое. По монохромному изображению перебираем все белые пиксели и берем их яркость для формулы из изображения в оттенках серого.
Спасибо. Тогда еще несколько вопросов: какого размера ваши изображения, что для их обработки нужно 2-3 минуты? Делается ли нормализация гистограммы яркости для серого изображения?
Делается ли нормализация гистограммы яркости для серого изображения?

Да, нормализация выполнялась для фрагмента изображения вокруг метки.

какого размера ваши изображения, что для их обработки нужно 2-3 минуты?

Изображения, в среднем, 4000х3000px, но такая длительная обработка связана с размерами маски. Все же, большинство распространенных фильтров имеют размер маски 5х5px максимум, а не 48х48, как в данном случае.
Пожалуйста, не пользуйтесь никогда ipicture. Его никогда не было и нет.
Да и специально для хабра ведь есть http://habrastorage.org/.
Картинки перезалил. На момент размещения топика habrastorage.org был недоступен.
в спектральной области не пробовали работать?
контрастность меток высокая, метки примерно одинаковые, их масштаб тоже, развороты незначительные.
Фурье должно справиться.
Использовалась ли как-либо raw-информация с матрицы камеры? Ведь снималось всё это на цифровую камеру, верно? Можно повысить точность измерений, если использовать сырую информацию, до интерполяции в трёхцветное изображение.

PS. Второй график — использована какая-то странная интерполяция (см. салатовую линию).
> Программа… в будущем может быть использована для получения степени бакалавра.

Отличный практический результат!
Решал подобную задачу. Поиск центра через центр масс дает не самый точный вариант, намного лучше показало использование уравнения эллипса. То есть берутся точки периметра и подставляются в соответствующие уравнение, а затем каким-либо методом находятся коэфициенты уравнения и востанавливается центр. В OpenCV например есть функция cvFitEllipse
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории