Main Content

im2col

Reorganizar bloques de imágenes en columnas

Descripción

B = im2col(A,[m n],'distinct') reordena bloques de imágenes discretos de m por n en columnas y devuelve las columnas concatenadas en la matriz B. La función im2col rellena la imagen A, si es necesario. Para obtener más información sobre el valor de relleno, consulte Consejos.

El orden de las columnas de la matriz B se determina recorriendo la imagen A por columnas. Por ejemplo, si A consta de bloques Aij distintos dispuestos como A = [A11 A12; A21 A22], B = [A11(:) A21(:) A12(:) A22(:)].

ejemplo

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

B = im2col(A,[m n]) reordena los entornos deslizantes de imágenes de m por n en columnas sin rellenar con ceros y devuelve las columnas concatenadas en la matriz B.

B = im2col(A,'indexed',___) interpreta A como una imagen indexada.

Ejemplos

contraer todo

Cree una matriz.

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

Reordene los valores en disposición por columnas.

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

Calcule la media.

M = mean(B)
M = 1×9

    0.1667    0.4333    0.7000    0.2333    0.5000    0.7667    0.3000    0.5667    0.8333

Reordene los valores para que vuelvan a su orientación original por filas.

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

Argumentos de entrada

contraer todo

Imagen, especificada como imagen 2D en escala de grises, imagen 2D binaria o imagen 2D indexada.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Tamaño del bloque, especificado como vector de 2 elementos. m es el número de filas y n es el número de columnas del bloque.

Argumentos de salida

contraer todo

Bloques de imágenes, devueltos como matriz numérica o matriz lógica con m*n filas. El número de columnas depende de si los bloques de imágenes son bloques discretos o entornos deslizantes. Cada columna de B contiene un bloque o entorno de A remodelado como vector columna.

  • Para el procesamiento de bloques distintos, B tiene tantas columnas como bloques de m por n hay en A. Por ejemplo, si el tamaño de A es [mm nn], B tiene (mm/m)*(nn/n) columnas.

  • Para el procesamiento de entornos deslizantes, B tiene tantas columnas como entornos de m por n hay en A. Por ejemplo, si el tamaño de A es [mm nn], B tiene ((mm-m+1)*(nn-n+1)) columnas.

Sugerencias

  • Para el procesamiento de bloques distintos, im2col rellena con ceros A, si es necesario, para que su tamaño sea un múltiplo entero de m por n. El valor de relleno es 0 cuando A es del tipo de datos uint8, uint16 o logical. Para otros tipos de datos, el valor de relleno depende de si A se interpreta como una imagen indexada.

    • El valor de relleno es 1 cuando A se interpreta como una imagen indexada.

    • El valor de relleno es 0 cuando A no se interpreta como una imagen indexada.

  • im2col ordena las columnas de B de modo que puedan remodelarse para formar una matriz de acuerdo con reshape.

    Por ejemplo, supongamos que utiliza una función, como sum(B), que devuelve un escalar por cada columna de B. Puede almacenar directamente el resultado en una matriz de (mm-m+1) por (nn-n+1) utilizando estas llamadas.

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

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | |