Улучшение результатов сегментации текстуры на 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.