OpenCV – Eliminar texto de la imagen

¿Cómo elimino el texto y las marcas de la siguiente imagen de ultrasonido médico?

introduzca la descripción de la imagen aquí

El umbral para hacer una máscara de las áreas más blancas y luego pintar funcionará para la mayoría de los casos en esta imagen.

 img = cv2.imread('ultrasound.png') mask = cv2.threshold(img, 210, 255, cv2.THRESH_BINARY)[1][:,:,0] dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS) 

Aquí está la máscara:

introduzca la descripción de la imagen aquí

Aquí está la imagen pintada:

introduzca la descripción de la imagen aquí

Observe que la máscara de umbral no es exacta e incluye regiones más claras donde no hay letras. Pero lo que es más importante, hay un problema especial si la máscara no incluye las regiones que deben eliminarse, como las sombras oscuras de las cruces en el medio. Aquí hay un acercamiento de esa región.

introduzca la descripción de la imagen aquí

La máscara es solo de la región blanca y no cubre las áreas oscuras. Para problemas como este donde el umbral no será suficiente, la máscara se puede ajustar manualmente. Aquí tomo las cruces originales en la máscara y cambio para cubrir también las sombras, y la pintura es mucho mejor. (De manera similar, si es necesario, las áreas que no deberían incluirse en la máscara se pueden eliminar manualmente)

 crosses = mask[235:267,290:320] | mask[233:265,288:318] mask[235:267,290:318] = crosses dst = cv2.inpaint(img, mask, 7, cv2.INPAINT_NS) 

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí