¿Ventana deslizante superpuesta sobre una imagen usando blockproc o im2col?
Tengo que aplicardct2
a pequeñas ventanas de mi imagen, preferiblemente usando una ventana superpuesta.
Descubrí que hay dos funciones en Matlab que pueden hacer esto posibleblockproc
yim2col
. Tengo problemas para entender y agradecería alguna aclaración.
blockproc
se puede usar para implementar mi función en una ventana deslizante usando elBorderSize
yTrimBorder
argumentos
B = blockproc(A,[64,64],fun,'BorderSize',[5,5], 'TrimBorder', 'false');
Me doy cuenta de que esto crea un bloque de[64 + 2*5, 64 + 2*5]
y aplica la función@fun
en cada bloque Pero como no puedo entrar en mi función@fun
en la depuración para verificar el funcionamiento correcto, no puedo estar seguro de que esto es lo que necesito. ¿Mi código anterior es correcto para lo que necesito? Sé que obtengo un resultado concatenado enB
pero debe estar en un bloque deslizante superpuesto. ¿Esto logrará lo que necesito?
El segundo esim2col
. im2col(A,[m n],block_type)
dividirá el bloque en m por n bloques y los organizará en columnas, de modo que cada columna es un bloque? Si es así, ¿cómo se controla la superposición? Y si cada bloque es una columna, ¿puedo aplicar con éxito eldct2
funciona en cada columna? ¿Porque dudo que tome vectores como entrada?
Alguna aclaración sería muy apreciada.