Si su objetivo es tener una imagen binarizada con bordes suaves, entonces, si tiene el original, es mejor utilizar algo así como un desenfoque gaussiano con cvSmooth()
antes de realizar la binarización.
Dicho esto, no está restringido a los núcleos de 3x3. cvDilate()
toma un IplConvKernel
producido por CreateStructuringElementEx
y puede hacer un elemento estructurador con cualquier forma (rectangular) con esa función. Sin embargo, un elemento de estructuración funciona en relación con un punto de anclaje que debe tener coordenadas enteras, por lo que si usa una matriz de 2x2, la matriz no puede centrarse alrededor del píxel. entonces, en la mayoría de los casos, es mejor usar elementos estructurantes con un número impar de filas y columnas.
Lo que podría hacer es crear un elemento de 3x3 estructuración donde sólo el valor central y los valores desde arriba, abajo, izquierda y hacia la derecha de los que son de 1, como por ejemplo:
0 1 0
1 1 1
0 1 0
lugar de la predeterminada :
1 1 1
1 1 1
1 1 1
El primer núcleo hará algunos bordes ligeramente más lisos.
En esta función, CreateStructuringElementEx, los parámetros 3 y 4 (x_anchor y y_anchor) no saben qué significa. Su desplazamiento predeterminado para kernel. Puse 0 y 0, ¿es correcto ??? –
Estos parámetros definen el píxel principal del núcleo, utilizado para saber cómo aplicarlo. Por lo general, se encuentra en el centro de un círculo o un cuadrado. Puede estar descentrada para formas de kernel más exóticas. –