modefilt

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

Описание

пример

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

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

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

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

Примеры

свернуть все

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

load buildingPixelLabeled;

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

imshow(img)

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

imshow(label2rgb(label))

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

 b = modefilt(label);

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

 figure
 imshow(label2rgb(b));

Считайте помеченный объем MRI. Объем хранится в переменной 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);

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

свернуть все

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

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

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

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

Дополнение метода в виде одного из следующих значений.

ЗначениеОписание
'symmetric'Заполните массив зеркальным отражением себя.
'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