Ось простий процес:
- Призначте текстурні вимірювання для кожної області зображення.
- Використовуйте алгоритм маркування / підключення регіону (або алгоритм зростаючого регіону), щоб приєднати сусідні регіони, що мають однаковий показник текстури.
- Реалізуйте простий алгоритм, що слід за краєм, щоб простежити контур кожної області.
Заходи щодо текстури Закону - це стара, але все ж корисна методика визначення текстури зображення, і вони можуть бути достатніми для того, щоб ви відрізнили текстуру А від текстури В на всьому зображенні. Дивіться розділ "Закони щодо вимірювання текстури енергії" у статті Вікіпедії:
http://en.wikipedia.org/wiki/Image_texture
На першому етапі обчисліть всі текстурні заходи та визначте, який конкретний захід (наприклад, Edge або Spot) дозволяє легко відрізнити одну текстуру від іншої. (Якщо ви опублікуєте кілька зображень, я можу допомогти вам визначити міру текстури.)
Якщо у вас є лише дві текстури, A і B, ви можете розглядати їх як передній план і фон, і працює стандартний алгоритм маркування регіону. Щоб легше було побачити, що відбувається в процесі обробки, ви можете створити нове зображення, призначивши A texels (елементи текстури, невеликі шматки текстури) до білого кольору, а B texels - до чорного кольору. Алгоритми маркування регіонів та / або алгоритми, що слідують за контуром, потім знайдуть пов'язані білі та чорні області. Функція findContours () у OpenCV буде добре працювати.
http://en.wikipedia.org/wiki/Connected-component_labeling
Ця ж стаття у Вікіпедії включає як традиційний багатопропускний алгоритм, так і однопрохідний алгоритм. Я не реалізував описаний там алгоритм з одним проходом, але я працював з алгоритмом однопрохідного опису, описаного в статті "Алгоритм маркування компонентів за допомогою технології контурного відстеження" Чен і Чанг. У статті Чен та Чанга також описаний стандартний алгоритм наступного контуру, який можна швидко реалізувати.
Якщо у вас більше двох текстур, ви можете використовувати алгоритм вододілу або середнього зсуву для кластеризації регіонів разом після перестановки текстур на кольори. Хоча це переоформлення від текстури до кольору не є необхідним, це полегшує процес налагодження та розуміння.