im2col

Переставьте блоки изображений в столбцы

Описание

B = im2col(A,[m n],'distinct') переставляет дискретные блоки изображений размера m-by- n в столбцы и возвращает конкатенированные столбцы в матрице B. The im2col function pads image A, при необходимости. Дополнительные сведения о значении заполнения см. в разделе Советов.

Порядок столбцов в матричном B определяется путем обхода изображения A столбчатым способом. Для примера, если A состоит из отдельных блоков Aij расположены следующим образом A = [A11 A12; A21 A22], затем B = [A11(:) A21(:) A12(:) A22(:)].

пример

B = im2col(A,[m n],'sliding') или

B = im2col(A,[m n]) переставляет скользящие области изображений размера m-by- n в столбцы без заполнения нулями и возвращает конкатенированные столбцы в матрице B.

B = im2col(A,'indexed',___) интерпретирует A как индексированное изображение.

Примеры

свернуть все

Создайте матрицу.

A = reshape(linspace(0,1,16),[4 4])'
A = 4×4

         0    0.0667    0.1333    0.2000
    0.2667    0.3333    0.4000    0.4667
    0.5333    0.6000    0.6667    0.7333
    0.8000    0.8667    0.9333    1.0000

Переставьте значения в столбцовую компоновку.

B = im2col(A,[2 2])
B = 4×9

         0    0.2667    0.5333    0.0667    0.3333    0.6000    0.1333    0.4000    0.6667
    0.2667    0.5333    0.8000    0.3333    0.6000    0.8667    0.4000    0.6667    0.9333
    0.0667    0.3333    0.6000    0.1333    0.4000    0.6667    0.2000    0.4667    0.7333
    0.3333    0.6000    0.8667    0.4000    0.6667    0.9333    0.4667    0.7333    1.0000

Вычислим среднее.

M = mean(B)
M = 1×9

    0.1667    0.4333    0.7000    0.2333    0.5000    0.7667    0.3000    0.5667    0.8333

Переставьте значения назад в их исходную, строчную ориентацию.

newA = col2im(M,[1 1],[3 3])
newA = 3×3

    0.1667    0.2333    0.3000
    0.4333    0.5000    0.5667
    0.7000    0.7667    0.8333

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

свернуть все

Изображение, заданное как 2-D полутоновое изображение, 2-D бинарное изображение или 2-D индексированное изображение.

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

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

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

свернуть все

Блоки изображений, возвращенные как числовая матрица или логическая матрица с m* n строки. Количество столбцов зависит от того, являются ли блоки изображений дискретными блоками или скользящими окрестностями. Каждый столбец B содержит блок или окрестность A изменено как вектор-столбец.

  • Для отдельной обработки блоков, B имеет столько столбцов, сколько есть m-by- n блоки в A. Для примера, если размер A является [mm nn], затем B имеет (mm/m)*(nn/n) столбцы.

  • Для обработки скользящего района, B имеет столько столбцов, сколько есть m-by- n кварталы A. Для примера, если размер A является [mm nn], затем B имеет ((mm-m+1)*(nn-n+1)) столбцы.

Совет

  • Для отдельной обработки блоков, im2col нулевые накладки A, при необходимости, поэтому его размер является целым числом, кратным m-by- n. Значение заполнения 0 когда A является типом данных uint8, uint16, или logical. Для других типов данных значение заполнения зависит от того, A интерпретируется как индексированное изображение.

    • Значение заполнения 1 когда A интерпретируется как индексированное изображение.

    • Значение заполнения 0 когда A не интерпретируется как индексированное изображение.

  • im2col упорядочивает столбцы B так, что они могут быть изменены, чтобы сформировать матрицу согласно reshape.

    Например, предположим, что вы используете функцию, такую как sum(B), который возвращает скаляр для каждого столбца B. Можно непосредственно хранить результат в матрице размера (mm-m+1) -by- (nn-n+1), используя эти вызовы.

    B = im2col(A,[m n],'sliding');
    C = reshape(sum(B),mm-m+1,nn-n+1);

См. также

| | | |

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