modefilt

2-D и 3-D фильтрация режима

Описание

пример

B = modefilt(A) выполняет фильтрацию режима на 2-D изображении или 3-D томе A. Каждый выходной пиксель в B содержит режим (наиболее часто встречающееся значение) вокруг соответствующего пикселя в A. Если A является 2-D, modefilt использует фильтр режима 3 на 3. Если A является 3-D, modefilt использует фильтр способа 3 на 3 на 3. modefilt прокладки A путем зеркального отражения элементов границы.

Фильтрация режима может быть полезной для обработки категориальных данных, где другие типы фильтрации, такие как медианная фильтрация, недоступны.

B = modefilt(A,filtsize) также задает размер окрестности фильтра. filtsize - вектор положительных, нечетных целых чисел. Когда A является 2-D, задайте filtsize как вектор 1 на 2. Когда A является 3-D, задайте filtsize как вектор 1 на 3.

B = modefilt(___,padopt) также задает, как modefilt Контуры массива колодок.

Примеры

свернуть все

Загрузка изображения (img) и соответствующей категориальной маркированной версии изображения (label) в рабочую область.

load buildingPixelLabeled;

Просмотрите оригинальное изображение, img.

imshow(img)

Figure contains an axes. The axes contains an object of type image.

Просмотр категориального маркированного изображения, label. Категориальное изображение обозначает четыре отдельные категории: небо, трава, создание и тротуар. Для просмотра преобразуйте эти категории в цвета с помощью label2rgb функция.

imshow(label2rgb(label))

Figure contains an axes. The axes contains an object of type image.

Выполните фильтрацию режима на категориальном маркированном изображении, label, с использованием размера фильтра по умолчанию и метода заполнения.

 b = modefilt(label);

Просмотрите отфильтрованное категориальное маркированное изображение, b. В отфильтрованном изображении ребер между маркированными областями более различны.

 figure
 imshow(label2rgb(b));

Figure contains an axes. The axes contains an object of type image.

Считайте маркированный объем МРТ. Том хранится в переменной рабочей области label.

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled', ...
    'labels','label_001.mat'));

Отображение маркированного объема. Для наглядности добавьте заголовок к отображению.

ViewPnl = uipanel(figure,'Title','Labeled Volume');
labelvolshow(label,'Parent',ViewPnl);

Выполните фильтрацию режима на маркированном томе, указав размер фильтра.

labelOut = modefilt(label,[5 5 5]);

Отображение отфильтрованного маркированного объема. Для наглядности добавьте заголовок к отображению.

ViewPnlFiltered = uipanel(figure,'Title','Mode Filtered Labeled Volume');
labelvolshow(labelOut,'Parent',ViewPnlFiltered);

Входные параметры

свернуть все

2-D том изображения или 3-D, заданный как категориальный, логический или числовой массив.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | categorical

Размер фильтра, заданный как вектор положительных нечетных целых чисел. Для 2-D изображений задайте вектор формы [height width]. Значение по умолчанию для 2-D изображений [3 3]. Для 3-D объемов задайте вектор формы [height width depth]. Значение по умолчанию для 3-D томов [3 3 3].

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Метод заполнения, заданный как одно из следующих значений.

ЗначениеОписание
'symmetric'Массив Pad с зеркальным отражением себя.
'replicate'Дополните массив повторяющимися элементами границы.
'zeros'Массив дополнений с 0s для числовых данных или с <undefined>s для категориальных данных.

Пример: labelOut = modefilt(label,'replicate');

Типы данных: char | string

Выходные аргументы

свернуть все

Отфильтрованное изображение или том, возвращенный как числовой массив того же размера и класса, что и входа изображение A.

Совет

  • Когда окрестность имеет более одного пикселя в связи для значения режима, функция использует следующий алгоритм разрыва связей:

    • Если центральный пиксель является одним из значений режима в связке, функция использует это значение.

    • Если центральный пиксель не является одним из значений режима в связке, функция использует режим с наименьшим числовым значением.

    • Для категориального входа функция выбирает первую категорию (среди категорий, связанных с режимом), которая появляется в списке, возвращенном categories(A).

  • modefilt обрабатывает изображения RGB как 3-D тома. Чтобы выполнить канальную фильтрацию изображения RGB, задайте filtsize как [3 3 1], как в этом коде: b = modefilt(a,[3 3 1]); .

Расширенные возможности

.

См. также

| | |

Введенный в R2020a