В настоящее время я делаю проект на основе методологии, описанной в этой статье: Camera calibration from a single night sky imageметоды OpenCV/Обработка изображений, чтобы найти центры ярких пятен на изображении
Как новичок в области компьютерного зрения, я не достаточно понять, как я могу реализовать метод, используемый в документе, чтобы найти центр всех ярких пятен (светильников) внутри изображения, в частности, в параграфе в разделе 4.1:
Окружающий участок размером 15 × 15 пикселей (рисунок 1 (a)), повышается дискретизация с помощью данного коэффициента (рисунок 1 (c)) и вычисляется соответствующая карта градиента (рис. 1 (d)). Начиная с самой яркой области, порог серого значения уменьшается, пока функция энергии не будет максимизирована. Энергетическая функция определяется как сумма градиентов границы и нормирована по длине границы (рис. 1 (e)). Это приводит к сегментированному изображению звезды, показанному на рисунке 1 (f). Сегментация гарантирует, что взвешенный алгоритм центра тяжести [11] дает надежную оценку.
Из моего понимания, я думаю, что я могу сделать функцию градиента лапласиане/Собел на дискретизированном изображении, но после того, что я не слишком уверен, как я могу выполнить энергию функции и произвести сегментированное изображение. Также я хотел бы понять, как реализовать алгоритм взвешенного центра тяжести, чтобы найти центр яркого пятна, используя openCV или другую библиотеку python.
Очень ценно, если кто-либо из вас может предоставить некоторые огни на этом.
Спасибо и приветствую.
Привет, Бойко, спасибо за быстрый ответ. Просто хочу уточнить, вы сказали: «Если энергия выше энергии предыдущей итерации, новый пиксель добавляется в область», к которой относится предыдущая итерация, на которую я должен ссылаться? Значит ли это, начиная с семени, я проверяю каждый из 8-соседей на пиксельные значения семени. Если все соседи добавлены, я продолжаю итерацию каждого из 15-соседей (или всех пикселов границ) и проверку на сумму 8-соседних ранее и так далее? – LawrenceH
Довольно многое из того, что вы сказали, кроме вашей второй итерации, возможно, не над квадратом, потому что сбой некоторых из 8 пикселей в область. –
Хотя, теперь я читал, что на самом деле они делают, просто запускают алгоритм заливки, который заполняет все пиксели яркости [порог 255], вычисляет энергию func, уменьшает порог, промывает и повторяет, останавливаясь, когда они максимизируют энергетическую функцию. Обратите внимание, что их алгоритм очень неэффективен, так как они эффективно доводят до 255 флудов для каждой предварительно обнаруженной звезды. –