Malentendido de la función de expansión de matlab imdilate () usando elementos estructurales asimétricos para la expansión de escala de grises

Ya hay muchas otras respuestas al concepto básico, aquí hablamos principalmente sobre el resultado de usar imdilate() para la expansión de la escala de grises cuando se enfrenta a elementos de estructura irregular. Aquí hay una trampa fácil en la que caer

Primero defina la matriz I a ser expandida

>> I=[1 2 3;4 5 6;7 8 9]

I =

     1     2     3
     4     5     6
     7     8     9

Si se usa ones(3,3) para la expansión, el resultado es obvio, para tomar el valor máximo de los elementos en la vecindad 3×3

>> se = ones(3)

se =

     1     1     1
     1     1     1
     1     1     1

>> DilatedExpandMaskx = imdilate(I,se)

DilatedExpandMaskx =

     5     6     6
     8     9     9
     8     9     9

Este es el caso cuando los elementos estructurales son simétricos, pero ¿y si los elementos estructurales no lo son?

Podemos tomar un elemento vectorial asimétrico como estructura para ver el resultado.

>> se = [1 1 0];
>> DilatedExpandMaskx = imdilate(I,se)

DilatedExpandMaskx =

     2     3     3
     5     6     6
     8     9     9

El centro del elemento estructural es 1, el lado izquierdo es 1 y el lado derecho es 0; parece que el elemento en la posición original debe compararse con el elemento de la izquierda, y debe tomarse el valor máximo, entonces organice de acuerdo con la matriz original, y el resultado debe permanecer sin cambios (los elementos I son más pequeños que el elemento en sí), pero se puede ver que el resultado parece ser que el elemento en la posición original se compara con el elemento a la derecha posición y se toma el valor máximo. ¿Por qué haces lo contrario?

Si los elementos estructurantes se toman como matrices irregulares

>> se = ones(3);
>> se(1,1) = 0;
>> se

se =

     0     1     1
     1     1     1
     1     1     1

>> DilatedExpandMaskx = imdilate(I,se)

DilatedExpandMaskx =

     4     5     6
     7     8     9
     8     9     9

Se puede ver que el elemento de la esquina superior izquierda se toma como 0, y el elemento de la esquina inferior derecha no se incluirá al calcular el valor máximo en la vecindad 3×3. Parece que los elementos estructurales se calculan colocándolos en una simetría central.

La razón de este fenómeno se remonta a la fórmula, se puede ver en la documentación de ayuda de matlab que se introduce en la parte de expansión de escala de grises.

¿Qué significa A(xx', yy')? Significa que para el elemento x' = y' = -1 en la esquina superior izquierda de se arriba, en realidad atraviesa I(x+1, y+1), que es el elemento en la esquina inferior derecha de I, cuando se(-1, -1) = 0, cuando no participa en la operación, significa que el elemento de la esquina inferior derecha de I no participa en la operación. Parece. El "culpable" está en el signo "-" de la fórmula, que parece hacer que los elementos estructurales sean simétricos al centro y luego ponerlos en la matriz original para las operaciones de expansión.

Al mismo tiempo, debemos señalar que otra oración en el documento,

Cuando se utiliza "+" para definir la expansión en escala de grises, significa que no se requiere la simetría central de los elementos estructurales, sino que participa directamente en la operación de expansión. La definición de la fórmula varía de un software a otro. Por supuesto, en matlab, tiene que ser la situación anterior.

Supongo que te gusta

Origin blog.csdn.net/Eason_Y/article/details/129350258
Recomendado
Clasificación