Как сопоставить текстурное сходство на изображениях? - PullRequest
12 голосов
/ 22 мая 2011

Какими способами можно количественно определить текстуру части изображения? Я пытаюсь определить области, похожие по текстуре на изображении, что-то вроде «насколько они похожи?»

Таким образом, вопрос в том, какую информацию об изображении (край, значение пикселя, градиент и т. Д.) Можно принять как содержащую информацию о его текстуре.

Обратите внимание, что это не основано на сопоставлении с шаблоном.

Википедия не дала много подробностей о фактической реализации какого-либо текстурного анализа.

Ответы [ 3 ]

27 голосов
/ 22 мая 2011

Хотите ли вы найти две отдельные области на изображении, которые выглядят одинаково (с одинаковой текстурой) или сопоставить текстуру на одном изображении с другим? Вторая сложнее из-за разной радиометрии.

Вот базовая схема измерения сходства областей.

  1. Вы пишете функцию, которая в качестве входных данных получает область на изображении и вычисляет скалярное значение. Как средняя яркость. Этот скаляр называется функцией
  2. Вы пишете больше таких функций, чтобы получить около 8-30 функций. которые вместе образуют вектор, который кодирует информацию об области на изображении
  3. Рассчитайте такой вектор для обеих областей, которые вы хотите сравнить
  4. Определить функцию подобия, которая принимает два вектора и выводит, насколько они похожи.

Вам необходимо сосредоточиться на шагах 2 и 4.

Шаг 2 .: Используйте следующие функции: стандарт яркости (std ()), какой-либо детектор углов, энтропийный фильтр, гистограмма ориентации краев, гистограмма частот БПФ (направления x и y). Используйте информацию о цвете, если доступно.

Шаг 4. Вы можете использовать косинус симмилярности, мин-макс или взвешенный косинус.

После того, как вы реализовали около 4-6 таких функций и функцию подобия, начните запускать тесты. Посмотрите на результаты и попытайтесь понять, почему или где это не работает. Затем добавьте конкретную функцию для освещения этой темы. Например, если вы видите, что текстура с большими каплями считается аналогичной текстуре с крошечными каплями, добавьте морфологический фильтр, рассчитывающий плотность объектов размером> 20 кв. Пикселей.

Повторите процесс определения специфической особенности проблемного дизайна примерно в 5 раз, и вы начнете получать очень хорошие результаты.

4 голосов
/ 23 мая 2011

Я бы предложил использовать вейвлет-анализ.Вейвлеты локализованы как по времени, так и по частоте и обеспечивают лучшее представление сигнала с помощью анализа с множественным разрешением, чем это делает FT.

Это документ , объясняющий подход с использованием вейвлетов для описания текстуры.Существует также метод сравнения.

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

2 голосов
/ 22 октября 2015

Интересный подход для этого заключается в использовании локальных двоичных шаблонов. Вот базовый пример и некоторые пояснения: http://hanzratech.in/2015/05/30/local-binary-patterns.html

Рассматривайте этот метод как один из множества различных способов получения функций из ваших изображений. Это соответствует 2-му этапу метода Даниэля.

...