2009-12-15 20 views
5

Tengo una imagen en escala de grises de una fotografía. He determinado que ciertas partes de la imagen no están iluminadas, y que un píxel con luminancia Y = 0.8 debería ajustarse realmente al 90% de gris, es decir, ese píxel debería tener una luminancia de 0.9. Mi pregunta es ¿cómo escalo los otros píxeles cerca? Estoy bastante seguro de que multiplicar todas las luminancias por 9/8 es incorrecto, porque recuerdo vagamente haber escuchado que para mirar uniforme, la escala tiene que ser no lineal. Pero estoy teniendo problemas para encontrar una ecuación que me permita progresar. (. Por supuesto que estoy realmente escribir un programa para realizar este ajuste a un gran número de fotografías)Cómo escalar píxeles en una imagen para ajustar el brillo?

La fuente de mis píxeles es el formato PGM PBMPLUS, sobre el que la página del manual dice:

Cada gris valor es un número proporcional a la intensidad del píxel , ajustado por la Rec. CIE. 709 función de transferencia gamma. (Esa función de transferencia especifica un número gamma de 2.2 y tiene una sección lineal para intensidades pequeñas). Un valor de cero es por lo tanto negro. Un valor de Maxval representa CIE D65 blanco y el valor más intenso en la imagen y cualquier otra imagen con la que se pueda comparar la imagen.

Si entendí esto mejor, probablemente tendría una mejor idea de cómo proceder.

Encontré una pregunta relacionada en making an image of uniform brightness.


Gracias Shmoopty por hacerme seguir la pista. Acepté tu respuesta y luego le agregué información.

+1

¿Está intentando generalmente aumentar el contraste de una imagen en escala de grises? – Andres

+0

No, en realidad, tengo una imagen para la cual creo que el objeto fotografiado tenía un brillo aproximadamente uniforme (luminancia/albedo), pero la fotografía se tomó con iluminación desigual. Estoy tratando de corregir la pobre iluminación y producir una imagen que sea representativa de lo que debería haber sido el objeto original fotografiado. –

Respuesta

6

Probablemente desee gamma correction, que mantendrá verdadero negro y blanco verdadero correcto, mientras dobla los valores intermedios.

La fórmula para el ajuste gamma, cuando la entrada está en el intervalo (0.0, 1.0) es:

output = pow(input, gamma) 

... donde gamma se aclarará cuando menos de 1,0 y se oscurecen cuando por encima de 1,0.

Para empujar 0.8 hasta 0.9, calcula log(0.9)/log(0.8) para obtener una gama de 0.4722.

Tenga en cuenta que esta es una de las muchas fórmulas, y es matemáticamente más simple que conservará el blanco y negro como colores únicos (que algunos considerarían importantes); sin embargo, no hay una fórmula correcta para darle que es "verdad"


Adición: I verificado que la corrección de gamma se puede aplicar a los valores que ya están codificados gamma. Es difícil anotar los cálculos de reducción del precio, pero la ley algebraica clave es

(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a 

Si se aplica esta ley, se puede determinar que las correcciones gamma viaje, por lo que está bien, aplicar la corrección de gamma a valores ya corregido .— NR

+0

Elegir qué valor para gamma? ¿Y es importante que los píxeles que tengo ya estén codificados en gamma? –

Cuestiones relacionadas