Улучшение результатов сегментации текстуры на Matlab

Изображение после сегментации с евклидовым расстоянием (просто абсолютное, а не абсолютное квадратное) Оригинальная фактурная картинка

Я получаю результат выше (рисунок 1), когда я выполняю кластеризацию, используя алгоритм Kmeans и фильтры Laws Texture Energy (с центроидами / группами кластера =6)

Каковы возможные пути улучшения результата? Как видно из результата, нет четкого разграничения текстур. Может ли расширение / эрозия как-то быть реализовано для того же? Если да, пожалуйста, руководство.

2 ответа

Анализ текстуры с использованием k-средних приведет к игнорированию пространственных отношений между соседними пикселями: если i а также j рядом друг с другом, то весьма вероятно, что они имеют один и тот же текст.
Одним из способов представления такой пространственной информации является использование попарной энергии, которая может быть оптимизирована с помощью вырезок из графика или распространения убеждений (среди прочего).

Предположим, у вас есть n пикселей на изображении и L центроиды в вашем К-средстве, тогдаD является L-от-n матрица с D(i,l) это расстояние от пикселя i к центру l,

Если вы решите использовать вырезки из графика, вы можете скачать мою обертку (не забудьте ее скомпилировать), а затем в Matlab:

>> sz = size( img ); % n should be numel(img)
>> [ii jj] = sparse_adj_matrix( sz, 1, 1 ); % define 4-connect neighbor grid
>> grid = sparse( ii, jj, 1, n, n );
>> gch = GraphCut('open', D, ones( L ) - eye(L), grid );
>> [gch ll] = GraphCut('expand', gch );
>> gch = GraphCut('close', gch );
>> ll = reshape( double(ll)+1, sz );
>> figure; imagesc(ll);colormap (rand(L,3) ); title('resulting clusters'); axis image;

Ты можешь найти sparse_adj_matrix здесь


Для недавней реализации многих алгоритмов оптимизации, посмотрите на пакет opengm.

Что касается морфологической фильтрации, я предлагаю следующую ссылку: Сегментация текстуры с использованием морфологии области Локальная гранулометрия. Этот документ в основном описывает фильтр открытия морфологической области, который удаляет компоненты градаций серого, которые меньше заданного порогового значения параметра области. В двоичных изображениях локальные гранулометрические распределения размера могут быть сгенерированы путем размещения окна в каждой позиции пикселя изображения и, после каждой операции открытия, путем подсчета количества оставшихся пикселей внутри. Это приводит к локальному распределению размера, которое можно нормализовать, чтобы получить локальный pdf. Дифференцирование спектров шаблона дает плотность, которая дает локальный спектр шаблона в пикселе, обеспечивая плотность вероятности, которая содержит текстурную информацию, локальную для каждой позиции пикселя.

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

Другие вопросы по тегам