Main Content

im2col

Reorganizar bloques de imágenes en columnas

Descripción

ejemplo

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,[m n],blockType) también especifica si los bloques son discretos o entornos deslizantes utilizando el argumento blockType.

Para el procesamiento de bloques discretos, la función im2col rellena la imagen A, si es necesario. Para obtener más información sobre el valor de relleno, consulte Consejos.

B = im2col(A,"indexed",[m n],blockType) 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.

Tipo de bloque, especificado como "sliding" para indicar entornos deslizantes o "distinct" para indicar bloques discretos.

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.

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(:)].

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

| | | |