colfilt

Постолбцовые операции окружения

Синтаксис

B = colfilt(A,[m n],block_type,fun)
B = colfilt(A,[m n],[mblock nblock],block_type,fun)
B = colfilt(A,'indexed',___)

Описание

пример

B = colfilt(A,[m n],block_type,fun) обрабатывает изображение A путем реорганизации каждого m-by-n блок A в столбец временной матрицы, и затем применения функционального fun к этой матрице. нулевые клавиатуры colfilt A, при необходимости.

B = colfilt(A,[m n],[mblock nblock],block_type,fun) подразделяет A на области размера mblock-by-nblock блоки, чтобы сохранить память. Обратите внимание на то, что результат операции не изменяется при использовании аргумента [mblock nblock].

Например, если [mblock nblock] является [3 4], и размер каждого блока является 16 16 пикселями, то colfilt подразделяет изображение на области размера 48 64 пиксели и процессы каждая область отдельно.

B = colfilt(A,'indexed',___) A процессов как индексируемое изображение, дополняющее 0 s, если классом A является uint8, uint16 или logical, и дополняющий 1 s в противном случае.

Примеры

свернуть все

Этот пример показывает, как установить каждый выходной пиксель на среднее значение окружения входного пикселя 5 на 5 с помощью постолбцовой обработки окружения.

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

I = imread('tire.tif');

Выполните по столбцам фильтрацию. Функциональный mean называется на каждом пиксельном окружении 5 на 5.

I2 = uint8(colfilt(I,[5 5],'sliding',@mean));

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

imshow(I)
title('Original Image')

figure
imshow(I2)
title('Filtered Image')

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

свернуть все

Отобразите, заданный как массив любого класса, поддержанного fun.

Размер блока, заданный как вектор с 2 элементами положительных целых чисел. m является количеством строк, и n является количеством столбцов в каждом блоке.

Блокируйте размер группы, заданный как вектор с 2 элементами положительных целых чисел. mblock является количеством блоков в группе в вертикальном направлении, и nblock является количеством блоков в группе в горизонтальном направлении.

Тип блока, заданный как 'sliding' для скольжения окружений или 'distinct' для отличных блоков.

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

Указатель на функцию, заданный как указатель. Аргументы ввода и вывода к этой функции зависят от значения block_type. Для получения дополнительной информации см. Алгоритмы.

Для получения дополнительной информации об указателях на функцию, см. Создание указателя на функцию (MATLAB).

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

свернуть все

Фильтрованное изображение, возвращенное как числовая матрица.

Алгоритмы

Алгоритм, который colfilt использует для изображений процесса, зависит от значения block_type.

Значение

Описание

'distinct'

  • Во-первых, colfilt перестраивает каждый m-by-n блок A в столбец во временной матрице при помощи функции im2col.

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

  • Наконец, colfilt перестраивает столбцы матрицы, возвращенной fun в m-by-n отличные блоки, при помощи функции col2im.

'sliding'

  • Во-первых, colfilt перестраивает каждый m-by-n окружение A в столбец во временной матрице при помощи функции im2col.

  • Затем, colfilt применяет функциональный fun к этой временной матрице. fun должен возвратить вектор - строку, содержащий одно значение для каждого столбца во временной матрице. (Функции сжатия столбца, такие как sum возвращают соответствующий тип вывода.)

  • Наконец, colfilt изменяет вектор, возвращенный fun в матрицу тот же размер как A, при помощи функции reshape.

Чтобы сохранить память, colfilt, функциональная сила делит A на подызображения и обрабатывает одно подызображение за один раз. Это подразумевает, что fun может быть назван многократно, и что первый аргумент к fun может иметь различное количество столбцов каждый раз.

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