Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

im2col

Reorganizar los bloques de imagen en columnas

Descripción

B = im2col(A,[m n],'distinct') reorganiza bloques de imágenes discretos de columnas de tamaño por en y devuelve las columnas concatenadas en Matrix.mnB La imagen de pads de función, si es necesario.im2colA Para obtener más información sobre el valor de relleno, vea.Consejos

El orden de las columnas en la matriz se determina recorriendo la imagen de una manera de columna.BA Por ejemplo, si se compone de bloques distintos dispuestos como, a continuación,.AAijA = [A11 A12; A21 A22]B = [A11(:) A21(:) A12(:) A22(:)]

ejemplo

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

B = im2col(A,[m n]) reorganiza los vecindarios de imagen deslizante de tamaño por en columnas sin relleno cero y devuelve las columnas concatenadas en la matriz.mnB

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

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

Reorganice los valores en una disposición de 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

Reorganice los valores de nuevo en su orientación original y en 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 en escala de grises en 2-d, imagen binaria en 2-D o imagen indexada en 2-d.

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

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

Argumentos de salida

contraer todo

Bloques de imagen, devueltos como una matriz numérica o matriz lógica con m*n Filas. El número de columnas depende de si los bloques de imagen son bloques discretos o vecindarios deslizantes. Cada columna de contiene un bloque o vecindad de remodelados como un vector de columna.BA

  • Para el procesamiento de bloques distinto, tiene tantas columnas como hay-por-bloques en.BmnA Por ejemplo, si el tamaño de is, a continuación, tiene columnas.A[mm nn]B(mm/m)*(nn/n)

  • Para el procesamiento de vecindario deslizante, tiene tantas columnas como hay-por-vecindarios de.BmnA Por ejemplo, si el tamaño de is, a continuación, tiene columnas.A[mm nn]B((mm-m+1)*(nn-n+1))

Sugerencias

  • Para el procesamiento de bloques distinto, cero-pads, si es necesario, por lo que su tamaño es un múltiplo entero de-por-.im2colAmn El valor de relleno es cuando es el tipo de datos, o.0Auint8uint16logical Para otros tipos de datos, el valor de padding depende de si se interpreta como una imagen indexada.A

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

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

  • ordena las columnas de modo que puedan ser remodeladas para formar una matriz según.im2colBreshape

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

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

Consulte también

| | | |

Introducido antes de R2006a