rangefilt

Локальная область значений изображения

Синтаксис

J = rangefilt(I)
J = rangefilt(I,nhood)

Описание

пример

J = rangefilt(I) возвращает массив J, где каждый выходной пиксель содержит значение области значений (максимальное значение −, минимальное значение) 3х3 окружения вокруг соответствующего пикселя во входе отображают I.

пример

J = rangefilt(I,nhood) выполняет фильтрацию области значений входного изображения I, где вы задаете окружение в nhood. nhood является многомерным массивом нулей и единиц, где ненулевые элементы задают окружение для операции фильтрации области значений.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('liftingbody.png'); 

Отфильтруйте изображение. Функция rangefilt возвращает массив, где каждый выходной пиксель содержит значение области значений (максимальное значение - минимальное значение) 3х3 окружения вокруг соответствующего пикселя во входном изображении.

J = rangefilt(I);

Отобразите оригинальное изображение и отфильтрованное изображение бок о бок.

imshowpair(I,J,'montage')

Считайте изображение в рабочую область.

RGB = imread('autumn.tif'); 

Преобразуйте изображение RGB в L*a*b* изображение.

LAB = rgb2lab(RGB);

Выполните фильтрацию области значений на изображении LAB.

rLAB = rangefilt(LAB);

Отобразите изображения.

imshow(RGB);

figure, imshow(rLAB(:,:,1),[]);

figure, imshow(rLAB(:,:,2),[]);

figure, imshow(rLAB(:,:,3),[]);

Считайте изображение в рабочую область и отобразите ее.

I = imread('circuit.tif');
imshow(I);

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

nhood = [1 1 1];

Выполните операцию фильтрации области значений с помощью этого окружения. Для сравнения также выполните фильтрацию области значений с помощью 3х3 окружения по умолчанию. Сравнение результатов.

J = rangefilt(I,nhood);
K = rangefilt(I);
figure
imshowpair(J,K,'montage');
title('Range filtering using specified neighborhood (left) and default neighborhood (right)');

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

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

свернуть все

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

Типы данных: double | uint8 | uint16 | uint32 | logical

Окружение, заданное как многомерный, логический или числовой массив, содержащий нули и единицы. размер NHOOD's должен быть нечетным в каждой размерности.

По умолчанию rangefilt использует окружение true(3). rangefilt определяет центральный элемент окружения floor((size(NHOOD) + 1)/2).

Чтобы задать окружения других форм, такие как диск, используют функцию strel, чтобы создать объект элемента структурирования желаемой формы. Затем извлеките окружение из свойства neighborhood объекта элемента структурирования.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

свернуть все

Фильтрованное изображение, возвращенное как числовой массив, тот же размер и класс как входное изображение I, за исключением типов данных целого числа со знаком. Выходной класс для типов данных со знаком является соответствующим типом данных беззнаковых целых чисел. Например, если классом I является int8, то классом J является uint8.

Алгоритмы

rangefilt использует морфологические функции imdilate и imerode, чтобы определить максимальные и минимальные значения в заданном окружении. Следовательно, rangefilt использует дополнительное поведение этих морфологических функций.

Представлено до R2006a