segmentacion prewitt paso laplaciano laplace imagenes imagen gradiente filtro detección deteccion bordes alto image-processing ocr image-segmentation

image-processing - prewitt - filtro paso alto imagen



problema de detección de bordes en la detección de texto en imágenes (2)

Estoy tratando de imponer el papel de Epshtein ( Detectando texto en escenas naturales con transformación de ancho de trazo (2010) ) en la detección de texto en imágenes naturales. El primer paso es la detección de bordes.

Estoy obteniendo algunos bordes adicionales dentro de mi texto. ¿Cómo debo eliminar esos?

Imagen original:

Mi detección de bordes:

En el ejemplo, puede ver bordes adicionales en el texto "POR QUÉ APURAR"

He intentado estos pasos en Matlab:

% contrast enhancement I_adjust = imadjust(I); % dilation & erosion se = strel(ones(3,3)); I_dilate = imdilate(I_adjust, se); I_final = imerode(I_dilate, se); % gaussian smoothing h_mask = fspecial(''gaussian''); I_final = imfilter(I_final,h_mask); figure; imshow(I_final); BW_canny = edge(I_final,''canny''); figure; imshow(BW_canny);

Problema n. ° 2:

Según la sugerencia de belisarius, descubrí que el filtro de cambio de media funciona bastante bien para la segmentación de la región de texto. Ahora estoy enfrentando otro problema en la implementación de la transformación de Ancho de trazo (vea el documento de Epshtein).

El ancho de trazo funciona bien con caracteres como ''H''''Y'' incluso para ''S'' porque los bordes correspondientes suelen estar a una distancia constante si avanzamos en la dirección de gradiente.

El problema viene en caracteres como ''W''. Para una parte del borde izquierdo de la primera carrera ascendente , obtenemos el borde derecho de la segunda barra ascendente como su borde correspondiente. Mientras que para otra parte, obtenemos el borde derecho de la primera carrera ascendente . Esto introduce una variación significativa en el ancho del trazo de la región de ''W'' que lleva a denominar esto como región sin texto según el papel.

¿Alguien puede sugerir alguna solución?


Eche un vistazo a la documentación de Matlab para edge y el artículo de Wikipedia sobre el algoritmo de Canny.

Puede llamar a edge(I, ''canny'', thresh, sigma) para tener más control. Juega con los umbrales de borde alto y bajo. Intenté primero bajar el umbral alto: dado que los bordes interiores no están conectados a los bordes de las letras, la magnitud del gradiente debe superar el umbral alto dentro de las letras.

También puede aumentar sigma para desenfocar más la imagen antes de la detección de bordes. (Su desenfoque gaussiano es redundante, porque el edge borra la imagen por usted).


Use un Mean Shift Filter antes de la detección de bordes. Ejemplo en Mathematica:

i = Import["http://img839.imageshack.us/img839/28/whyhurry.jpg"]; iM = MeanShiftFilter[i, 2, .15, MaxIterations -> 10] EdgeDetect[iM]

Productos: