Ответ 1
Вы хотите найти две разные области изображения, которые выглядят одинаково (одинаковая текстура) или соответствуют текстуре в одном изображении другому? Второй сложнее из-за различной радиометрии.
Вот базовая схема измерения подобия областей.
- Вы пишете функцию, которая в качестве входных данных получает область изображения и вычисляет скалярное значение. Как средняя яркость. Этот скаляр называется функцией
- Вы пишете больше таких функций, чтобы получить около 8 - 30 функций. которые образуют вместе вектор, который кодирует информацию об области в изображении
- Вычислите такой вектор в обе области, которые вы хотите сравнить.
- Определите функцию подобия, которая принимает два вектора и выводит, насколько они похожи.
Вам нужно сосредоточиться на шагах 2 и 4.
Шаг 2: Используйте следующие функции: std() яркости, какой-то угловой детектор, энтропийный фильтр, гистограмма ориентации ребер, гистограмма частот FFT (направления x и y). Используйте информацию о цвете, если она доступна.
Шаг 4. Вы можете использовать простоту косинуса, минимальный или взвешенный косинус.
После того, как вы реализуете около 4-6 таких функций, а функция сходства начинает запускать тесты. Посмотрите на результаты и попытайтесь понять, почему и где они не работают. Затем добавьте конкретную функцию, чтобы охватить эту тему. Например, если вы видите, что текстура с большими блобами считается похожей на текстуру с крошечными блобами, тогда добавьте морфологический фильтр, рассчитанный на плотность объектов с размером > 20sq пикселей.
Итерировать процесс идентификации специфической функции проблемного дизайна примерно 5 раз, и вы начнете получать очень хорошие результаты.