Esta mañana a raíz del fotón que ha subido Rubichi aquí:
En Valencia I
Se me ha ocurrido una idea para eliminar su marca de agua (la suya y la de cualquier desprevenido que use marcas de agua de color liso). Lo acabo de probar y funciona. Recupera de forma indistinguible el color de lo que en la foto original estuviera "marcado con agua".
El programa tras pensarlo un poco he decidido no subirlo porque en cierto modo va en contra de los derechos de quien hace una foto y por tanto de la mayoría de nosotros. Pero a que resulta curioso?
Sergio de la Torre dice que con los modos de fusión de PS se puede conseguir. Yo le digo que sí, pero con un número tal de variables que el método de prueba error se hace inviable. Podéis intentarlo, os reto.
En el ejemplo que os muestro me han bastado 4 pixels de la foto de Rubichi para tener perfectamente caracterizada su marca de agua.
Foto de rubichi con marca de agua:
Salida del programa una vez borradas las partes que no estaban enmascaradas:
(en la capa de abajo estaba la imagen con máscara de arriba)
Me he basado en el siguiente planteamiento:
Premisa 1: una marca de agua es una imagen que se superpone con cierto grado de transparencia a la imagen original, de modo que el color de cada pixel final es una combinación lineal del color de la imagen original y la marca de agua:
final = p * original + (1-p) * marca
siendo 0 < p < 1 la transparencia (mayor p, menos visible la marca)
Para obtener el color original no habría más que despejar:
original = (final - (1-p) * marca) / p
Premisa 2: en todos sus pixels la marca de agua presenta un color uniforme y además se superpone a la imagen original con un grado de transparencia uniforme también. Por tanto las incógnitas 'marca' y 'p' son constantes en todas las zonas afectadas por la marca.
Así solo tenemos que calcular esos dos parámetros. Para ello podemos tomar dos zonas cualesquiera de la imagen donde tengamos tanto el color original como el resultado de aplicar la marca, formando un sistema de dos ecuaciones con dos incógnitas que aunque no es lineal se resuelve de inmediato:
f(final), a(original), m(marca), p(transparencia)
f1 = p * a1 + (1-p) * m
f2 = p * a2 + (1-p) * m
resolviendo:
p = (f1 - f2) / (a1 - a2)
m = (f1 * a2 - f2 * a1) / (f1 - f2 - a1 + a2)
Este sistema se puede calcular para cualquier doble pareja de pixels que se nos ocurra. Se puede resolver para muchas parejas de pixels y promediar resultados, o bien promediar el color de dos zonas uniformes y entonces resolver. Todo ello para reducir varianza. Aunque lo cierto es que yo arriba solo he usado 4 pixels para coger el peor caso y aún así ha salido muy bien.
Luego ya no habría más que aplicar en las zonas afectadas por la marca la expresión:
a = (f - (1-p) * m) / p
Conclusión: hay que tener ojo con las marcas de agua si queremos proteger nuestras fotos. Os diré que si la marca hubiera tenido un degradado, cambios de color, un borde considerable,... el método no habría servido. En cualquier caso yo nunca subiría una foto que quisiera proteger a un tamaño utilizable para impresión.
Un saludo.
PD: por lo que a mí respecta tu foto está totalmente a salvo Rubichi, pero ya sabes... precaución.



LinkBack URL
About LinkBacks

.






Citar
, me has dejado impresionado, se nota que dominas las mates.






Me llamo Sbud, Clin Sbud



GALERIA EN FLICKR 



Marcadores