У меня есть интересная проблема, которую я пытаюсь решить. Так, например, если у нас есть черно-белое изображение, содержащее две текстуры (A и B), мне интересно знать значения пикселей границ, которые бы полностью покрывали отдельные текстуры.
Я думал об использовании взаимной корреляции, которая дала бы мне кластер положений, шаблона (легенд) на изображении, но есть ли способ использовать это для получения значений пикселей границ (как правило, они нерегулярны)? Кроме того, есть ли другой лучший способ сделать это?
Реальным примером этого может служить обнаружение областей осадков на карте, показывающей три уровня осадков в год. Каждому уровню присваивается текстура, присутствующая в легенде, которая используется для сопоставления текстуры на том же изображении.
источник
Ответы:
Вот простой процесс:
Измерения текстуры Лоу - более старый, но все же полезный метод определения текстуры на изображении, и их может быть достаточно для того, чтобы вы могли отличить текстуру А от текстуры Б по всему изображению. См. Раздел «Энергетические меры текстуры законов» в статье Википедии:
http://en.wikipedia.org/wiki/Image_texture
В качестве первого шага рассчитайте все показатели текстуры и определите, какой именно показатель (например, край или пятно) позволяет вам легче отличить одну текстуру от другой. (Если вы опубликуете несколько фотографий, я могу помочь вам определить показатель текстуры.)
Если у вас есть только две текстуры, A и B, вы можете рассматривать их как передний план и фон, и будет работать стандартный алгоритм маркировки области. Чтобы было легче увидеть, что происходит при обработке, вы можете создать новое изображение, назначив тексели A (элементы текстуры, небольшие куски текстуры) белому цвету, а B тексели - черному цвету. Алгоритмы маркировки областей и / или следования контурам затем находят соединенные белые и черные области. Функция findContours () в OpenCV будет работать хорошо.
http://en.wikipedia.org/wiki/Connected-component_labeling
Та же статья в Википедии включает в себя как традиционный многопроходный алгоритм, так и однопроходный алгоритм. Я не реализовал однопроходный алгоритм, описанный там, но я работал с однопроходным алгоритмом, описанным в статье «Алгоритм маркировки компонентов с использованием метода контурной трассировки» Чена и Чанга. В статье Чена и Чанга также описан стандартный алгоритм следования контурам, который можно быстро реализовать.
Если у вас есть более двух текстур, вы можете использовать алгоритм водораздела или среднего смещения , чтобы объединить области вместе после того, как вы переставили текстуры в цвета. Хотя это переназначение от текстуры к цвету не является необходимым, оно облегчает процесс отладки и понимания.
источник