Обнаружение особенностей в зашумленных изображениях
-
28-10-2019 - |
Вопрос
Я создал систему обработки изображений с веб-камерой и функцией сопоставления, которая позволяет перемещать камеру; Я могу отслеживать движение камеры. Я делаю что-то похожее на здесь , за исключением кадров веб-камеры в качестве входных данных.
Это действительно хорошо работает для "хороших" изображений, но при съемке в условиях очень низкой освещенности появляется много шума (высокое усиление камеры), что мешает функции обнаружения и сопоставления. По сути, он не обнаруживает никаких хороших функций, а когда это обнаруживает, он не может правильно сопоставить их между кадрами.
Кто-нибудь знает хорошее решение для этого? Какие еще методы используются для поиска и сопоставления признаков?
Вот два примера изображений с очень низкими характеристиками:
Решение
Я думаю, что лучше всего вам подойдет фазовая корреляция . Он предназначен для определения фазового сдвига (т. Е. Перевода) между двумя изображениями. Он гораздо более устойчив (но не невосприимчив) к шуму, чем обнаружение функций, поскольку работает в частотном пространстве; тогда как детекторы признаков работают в пространстве. Еще одно преимущество - это очень быстрота по сравнению с методами обнаружения функций. У меня есть реализация, доступная в магистрали OpenCV, которая с точностью до субпикселей расположена здесь .
Однако ваши изображения в значительной степени «безликие», за исключением складки посередине, поэтому даже фазовая корреляция может иметь некоторые проблемы с этим. Думайте об этом, как о попытке обнаружить перевод во время снежной бури. Если вы видите только белый цвет, вы не можете сказать, что вы вообще перевели, поэтому термин белое пятно . В вашем случае алгоритм может пострадать от "затухания" :)
Можно ли отрегулировать настройки камеры для лучшей работы в условиях низкой освещенности. Вы полностью открыли радужную оболочку? Можете ли вы жить с более низкой частотой кадров? Установка более длительного времени экспозиции позволит камере собирать больше света, что даст вам больше возможностей за счет добавления размытия в движении. Или, если по умолчанию используется слабое освещение, вы, вероятно, захотите что-нибудь, предназначенное для этого, например, ИК-камеру, но это может быть дорого. Кроме того, ваш друг - большой объектив и длинная выдержка :)
Выравнивание гистограммы может быть полезно для улучшения контрастности изображения. Но иногда это может просто усилить шум. OpenCV имеет глобальную функцию выравнивания гистограммы, которая называется equalizeHist . Для более локализованной реализации вам нужно взглянуть на Contrast Limited Adaptive Histogram Equalization или CLAHE для короткая. Вот хорошая статья об этом. На этой странице есть несколько хороших примеров и немного кода.