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