Binarización de Otsu con preservación de valor

8

Estoy tratando de implementar una versión modificada del algoritmo de binarización otsu. Estoy tratando de binarizar imágenes de documentos. Pero en el procedimiento de binarización quiero que el objeto (en este caso, el texto) conserve su valor de escala de grises original mientras que el fondo toma el valor de 255; Es decir, blanco. Estoy publicando una versión de imagen de muestra que encontré en un documento.

Esta es la imagen original: ingrese la descripción de la imagen aquí

Esta es la imagen resultante que quiero obtener: ingrese la descripción de la imagen aquí

¿Podría alguien decirme cómo hacerlo en Matlab?

marca
fuente
¿Quieres retener la mancha gris gigante?
Endolito
Quiero retener los valores originales de todos los píxeles cuyo valor se encuentra por encima del umbral. Eso incluye el blob en este caso.
Marque
Código fuente de Matlab para la binarización de Otsu con preservación de valor ..

Respuestas:

8

No tengo Matlab a mano, pero así es como lo haces en OpenCV . El siguiente ejemplo utiliza la interfaz de Python a través de Python (x, y) :

test = cv2.imread("test.jpg", 0)
(_, otsu) = cv2.threshold(test, 0.0, 255.0, cv2.THRESH_TOZERO_INV + cv2.THRESH_OTSU)
cv2.imshow('otsu', otsu)

Esto da como resultado su salida requerida: ingrese la descripción de la imagen aquí

EDITAR: No tengo una copia de Matlab, pero creo que así es como lo haría (suponiendo que tenga la Caja de herramientas de procesamiento de imágenes):

Use graythresh para obtener el nivel de Otsu, luego configure cualquier cosa por encima de ese nivel en blanco (o 255).

I = imread('doc.jpg');
I = rgb2gray(I);
otsuLevel = graythresh(I);
I(I > otsuLevel) = 255;

¡Espero que ayude!

mevatron
fuente
Necesito el código en matlab. Soy un poco nuevo en el software, así que necesito un poco de ayuda con la codificación
marque
@mark Vea mi edición para una posible solución de Matlab.
Mevatron
6

Puede hacerlo fácilmente con Mathematica:

img = ColorNegate@ColorConvert[Import["../Desktop/sample.jpg"], "Grayscale"]
ColorNegate@ImageMultiply[Binarize[img], img]

El negocio de la negación y la multiplicación es garantizar la preservación del valor original en escala de grises. Puede traducir fácilmente esto a cualquier idioma, creo.

Resultado filtrado

Emre
fuente