Esta no es una respuesta completa y clara, sin embargo, te dejo con al menos algún enfoque para que pelees. (Estaría muy contento de saber si tiene resultados).
Echa un vistazo a estas preguntas:
Eliminación del resplandor de la imagen
¿Cómo eliminar el resplandor y el brillo de una imagen (preprocesamiento de imagen)?
Básicamente están tratando de resolver el mismo problema.
Hay dos partes del problema,
a. Identificar la mancha / mancha b. Reemplazar la mancha con lo que hubiera estado en el lugar de la oclusión.
La naturaleza de la pregunta está tratando de resolver el problema exacto (en cierto sentido).
Esto no es cosa trivial. Sin embargo, en ambas preguntas hay algunos patrones únicos que puede explotar.
En todos los casos, el elemento de superposición que se debe eliminar se denomina aquí (mancha, resplandor, punto brillante), la superposición tiene un tono / color único y distinto que se distingue de los objetos / escenas normales.
PAGS[ x ,y] = ( 1 - α [ x , y] ) ∗ S[ x ,y] + α [ x , y] ∗ O v e r l a yHtu e
S~[ x ,y] = (P[ x , y] - O v e r l a yHu e ∗ α~[ x , y] ) / ( 1 - α~[ x , y] )
PAGS[ x , y]S[ x , y]O v e r l a yHtu eS~[ x , y]α~[ x , y]
El valor OverlayHue se puede estimar independientemente segmentando manualmente las regiones de píxeles en las que Stain o Flash dominan claramente.
S~R[ x , y] = ( PR[ x , y] - O v e r l a yHtu eR∗ α~[ x , y] ) / ( 1 - α~[ x , y] )
S~sol[ x , y] = ( Psol[ x , y] - O v e r l a yHtu esol∗ α~[ x , y] ) / ( 1 - α~[ x , y] )
S~si[ x , y] = ( Psi[ x , y] - O v e r l a yHtu esi∗ α~[ x , y] ) / ( 1 - α~[ x , y] )
αS~
αα
S~[ x , y]α~[ x , y]
Puede que esta no sea la solución perfecta, pero puede ser mejor que la más obvia que el recorte de nivel de píxel o jugar con saturación, etc. Le pido sinceramente que intente esto al final y nos muestre los resultados (mi banco de trabajo está actualmente en un lío, así que no pude no lo hagas!)
Espero que esto ayude.