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.

qtdecomp

Descomposición de Quadtree

Descripción

S = qtdecomp(I) realiza una descomposición de cuadrángulo en la imagen en escala de grises y devuelve la estructura del cuadrángulo en la matriz dispersa.IS De forma predeterminada, divide un bloque a menos que todos los elementos del bloque sean iguales.qtdecomp

ejemplo

S = qtdecomp(I,threshold) divide un bloque si el valor máximo de los elementos de bloque menos el valor mínimo de los elementos de bloque es mayor que .threshold

S = qtdecomp(I,threshold,mindim) no producirá bloques menores que , incluso si los bloques resultantes no cumplen la condición de umbral.mindim

S = qtdecomp(I,threshold,[mindim maxdim]) no producirá bloques menores o mayores que .mindimmaxdim Los bloques más grandes que se dividen incluso si cumplen la condición de umbral.maxdim

S = qtdecomp(I,fun) utiliza la función para determinar si se debe dividir un bloque.fun

Ejemplos

contraer todo

Cree una pequeña matriz de muestra.

I = uint8([1 1 1 1 2 3 6 6;...              1 1 2 1 4 5 6 8;...              1 1 1 1 7 7 7 7;...               1 1 1 1 6 6 5 5;...               20 22 20 22 1 2 3 4;...               20 22 22 20 5 4 7 8;...               20 22 20 20 9 12 40 12;...              20 22 20 20 13 14 15 16]);

Realice la descomposición del cuadrángulo y muestre los resultados.

S = qtdecomp(I,.05); disp(full(S));
     4     0     0     0     4     0     0     0      0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0      4     0     0     0     2     0     2     0      0     0     0     0     0     0     0     0      0     0     0     0     2     0     1     1      0     0     0     0     0     0     1     1 

Lea la imagen en el espacio de trabajo.

I = imread('liftingbody.png');

Realice la descomposición del cuadrángulo y muestre la representación de bloque en una figura.

S = qtdecomp(I,.27); blocks = repmat(uint8(0),size(S));  for dim = [512 256 128 64 32 16 8 4 2 1];       numblocks = length(find(S==dim));       if (numblocks > 0)             values = repmat(uint8(1),[dim dim numblocks]);     values(2:dim,2:dim,:) = 0;     blocks = qtsetblk(blocks,S,dim,values);   end end  blocks(end,1:end) = 1; blocks(1:end,end) = 1;  imshow(I)

figure imshow(blocks,[])

Argumentos de entrada

contraer todo

Imagen en escala de grises, especificada como una matriz numérica por.mn Si la sintaxis incluye un identificador de función, , la imagen puede ser de cualquier clase admitida por la función.fun

Tipos de datos: single | double | int16 | uint8 | uint16 | logical

Umbral de homogeneidad de bloque, especificado como escalar en el rango [0, 1].

  • Si es de clase, multiplica el valor de 255 para determinar el umbral real que se va a utilizar.Iuint8qtdecompthreshold

  • Si es de clase, entonces multiplica el valor de 65535 para determinar el umbral real a utilizar.Iuint8qtdecompthreshold

Tamaño mínimo de bloque, especificado como un entero positivo. debe ser un factor del tamaño de la imagen.mindim

Tamaño máximo de bloque, especificado como un entero positivo. maxdim/mindim debe ser un poder de 2.

Identificador de función, especificado como identificador. La función debe aceptar como entrada todos los bloques -by- apilados en una matriz -by- -by-, donde está el número de bloques.mmmmkk La función debe devolver un vector de elemento lógico, cuyos valores son si se debe dividir el bloque correspondiente, y de lo contrario.k10 Por ejemplo, si ( ) es , el tercer bloque por- no debe dividirse.k30mm

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

Argumentos de salida

contraer todo

Estructura de Cuadrángulo, devuelta como una matriz dispersa. Si es distinto de cero, entonces es la esquina superior izquierda de un bloque en la descomposición, y el tamaño del bloque lo da .S(k,m)(k,m)S(k,m)

Tipos de datos: double

Sugerencias

  • es apropiado principalmente para imágenes cuadradas cuyas dimensiones son una potencia de 2, como 128-por-128 o 512-por-512.qtdecomp Estas imágenes se pueden dividir hasta que los bloques sean tan pequeños como 1 por 1. Si utiliza con una imagen cuyas dimensiones no son una potencia de 2, en algún momento los bloques no se pueden dividir más.qtdecomp Por ejemplo, si una imagen es 96 por 96, se puede dividir en bloques de tamaño 48 por 48, entonces 24 por 24, 12 por 12, 6 por 6 y finalmente 3 por 3. No es posible seguir la división más allá de 3 por 3. Para procesar esta imagen, debe establecer en 3 (o en 3 veces una potencia de 2); Si utiliza la sintaxis que incluye una función, , la función debe devolver se debe devolver en el momento en que el bloque no se puede dividir más.mindimfun0

Algoritmos

La función divide una imagen cuadrada en cuatro bloques cuadrados de igual tamaño y, a continuación, prueba cada bloque para ver si cumple algún criterio de homogeneidad.qtdecomp Si un bloque cumple el criterio, no se divide más. Si no cumple el criterio, se subdivide de nuevo en cuatro bloques y el criterio de prueba se aplica a esos bloques. Este proceso se repite de forma iterativa hasta que cada bloque cumple el criterio. El resultado puede tener bloques de varios tamaños diferentes.

Consulte también

|

Introducido antes de R2006a