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.

colfilt

Operaciones de barrio Columnwise

Descripción

ejemplo

B = colfilt(A,[m n],block_type,fun) procesa la imagen reorganizando cada bloque por en una columna de una matriz temporal y, a continuación, aplicando la función a esta matriz. cero-pads, si es necesario.AmnAfuncolfiltA

B = colfilt(A,[m n],[mblock nblock],block_type,fun) subdivide en regiones de bloques de tamaño por bloque para ahorrar memoria.Amblocknblock Tenga en cuenta que el resultado de la operación no cambia cuando se utiliza el argumento.[mblock nblock]

Por ejemplo, si y el tamaño de cada bloque es de 16 por 16 píxeles, subdivide la imagen en regiones de tamaño 48 por 64 píxeles y procesa cada región por separado.[mblock nblock][3 4]colfilt

B = colfilt(A,'indexed',___) procesos como una imagen indexada, relleno con s si la clase de es , , o , y relleno con s en caso contrario.A0Auint8uint16logical1

Ejemplos

contraer todo

En este ejemplo se muestra cómo establecer cada píxel de salida en el valor medio de la vecindad 5 por 5 del píxel de entrada mediante el procesamiento de vecindad columnwise.

Lea una imagen en escala de grises en el espacio de trabajo.

I = imread('tire.tif');

Realice el filtrado en columnas. Se llama a la función en cada barrio de 5 por 5 píxeles.mean

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

Muestre la imagen original y la imagen filtrada.

imshow(I) title('Original Image')

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

Argumentos de entrada

contraer todo

Image, especificada como una matriz de cualquier clase admitida por .fun

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

Tamaño del grupo de bloques, especificado como un vector de 2 elementos de enteros positivos. es el número de bloques en el grupo en la dirección vertical, y es el número de bloques en el grupo en la dirección horizontal.mblocknblock

Tipo de bloque, especificado como para vecindades deslizantes o para bloques distintos.'sliding''distinct'

Tipos de datos: char | string

Identificador de función, especificado como identificador. Los argumentos de entrada y salida de esta función dependen del valor de .block_type Para obtener más información, consulte .Algoritmos

Para obtener más información acerca de los identificadores de función, consulte .Create Function Handle

Argumentos de salida

contraer todo

Imagen filtrada, devuelta como una matriz numérica.

Algoritmos

El algoritmo que utiliza para procesar imágenes depende del valor de .colfiltblock_type

Valor

Descripción

'distinct'

  • En primer lugar, reorganiza cada bloque por en una columna de una matriz temporal mediante la función.colfiltmnAim2col

  • A continuación, aplica la función a esta matriz temporal. debe devolver una matriz del mismo tamaño que la matriz temporal.colfiltfunfun

  • Por último, reorganiza las columnas de la matriz devueltas por bloques distintos por, mediante la función.colfiltfunmncol2im

'sliding'

  • En primer lugar, reorganiza cada vecindad por en una columna de una matriz temporal mediante la función.colfiltmnAim2col

  • A continuación, aplica la función a esta matriz temporal. debe devolver un vector de fila que contenga un único valor para cada columna de la matriz temporal.colfiltfunfun (Funciones de compresión de columnas como devolver el tipo de salida adecuado.)sum

  • Por último, remodela el vector devuelto en una matriz del mismo tamaño que , mediante la función.colfiltfunAreshape

Para ahorrar memoria, la función puede dividirse en subimágenes y procesar una subimagen a la vez.colfiltA Esto implica que se puede llamar varias veces y que el primer argumento puede tener un número diferente de columnas cada vez.funfun

Introducido antes de R2006a