Как обнаружить точки, которые решительно отличаются, чем их соседи

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

Спасибо

wavelet filtered image

8
задан Simonw 6 August 2010 в 16:11
поделиться

7 ответов

Лично мне нравится это алгоритмы определения углов.

Также вы можете отработать наивный алгоритм обнаружения углов, используя идею о том, что изолированный пиксель — это такой пиксель, через который резко меняется интенсивность во всех направлениях. Это всего лишь стартовая идея, с которой можно начать и двигаться дальше к более совершенным алгоритмам.

1
ответ дан 5 December 2019 в 12:54
поделиться

Как насчет медианной фильтрации? Выберите значения из сетки 3*3 (или другого подходящего размера) вокруг пикселя и установите значение пикселя как медиану этих 9 пикселей.

Затем, если большинство соседей яркие, пиксель становится ярким и т.д.

Редактирование: После некоторых размышлений я понял, что это не обнаружит выбросы, а удалит их. Так что это не то решение, о котором спрашивал автор.

3
ответ дан 5 December 2019 в 12:54
поделиться

Вы уверены, что не хотите использовать подход, похожий на определение края? Похоже, что сравнение текущего пикселя со средним значением соседних пикселей поможет. (Я бы оценил различные размеры окрестностей, чтобы быть уверенным)

.
2
ответ дан 5 December 2019 в 12:54
поделиться

Я могу придумать эти методы, которые могут работать с некоторой настройкой параметров:

1
ответ дан 5 December 2019 в 12:54
поделиться

Прошло несколько лет с тех пор, как я занимался обработкой изображений. Но я бы, наверное, начал с преобразования в двоичное представление. Не похоже, что вас слишком интересуют средние значения серого, только очень темные / очень светлые области, поэтому избавьтесь от всего серого. В этот момент различные морфологические операции могут акцентировать внимание на интересующих вас точках. Открытие и закрытие довольно легко реализовать и могут дать довольно хорошие результаты, оставляя вам поле черного цвета везде, кроме тех, которые вас интересуют.

0
ответ дан 5 December 2019 в 12:54
поделиться

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

Просто скопируйте и вставьте пиксели одной (или нескольких функций), чтобы создать несколько шаблонов, а затем используйте нормализованную кросс-корреляцию или любую другую оценку, которую OpenCV предоставляет в своих процедурах сопоставления шаблонов, чтобы найти похожие области. В результате определите все максимальные пики отклика (в OpenCV есть функция для этого), и это координаты ваших функций.

1
ответ дан 5 December 2019 в 12:54
поделиться

Переберите каждый пиксель изображения. Когда вы закончите рассмотрение пикселя, отметьте его как «использованный» (измените его на какое-либо контрольное значение или сохраните эти данные в отдельном массиве, параллельном изображению).

Когда вы сталкиваетесь с темным пикселем, выполните на нем заливку , пометив все эти пиксели как «использованные», и отслеживайте, сколько пикселей было залито. Во время заливки убедитесь, что если рассматриваемый пиксель не темный, он достаточно яркий.

После заливки вы узнаете размер темной области, которую вы залили, и были ли границы заливки исключительно яркими пикселями. Теперь продолжаем исходный цикл, пропуская «использованные» пиксели.

5
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: