En el procesamiento de imágenes, ¿hay alguna diferencia entre el valor de brillo y el valor de escala de grises de una imagen? ¿O significa lo mismo pero tiene nombres diferentes?
Existe una diferencia entre el valor de brillo y el valor de gris de la imagen. La diferencia es: el brillo de la imagen se refiere al brillo de la imagen y la unidad es candelas por metro cuadrado (cd/m2). o liendres. La escala de grises se refiere a dividir el blanco y el negro en varios niveles según una relación logarítmica. El rango generalmente es de 0 a 255, siendo el blanco 255 y el negro 0.
Información ampliada:
La relación entre escala de grises y brillo:
Fórmula de conversión:
Conceptos básicos
Para convertir el color a escala de grises, existe una fórmula psicológica muy famosa:
Gris=R*0.299+G*0.587+B*0.114
2.
En aplicaciones prácticas, esperamos evitar operaciones de punto flotante de baja velocidad, por lo que se requiere la aritmética de enteros.
Observe que todos los coeficientes tienen una precisión de 3 dígitos. Podemos escalarlos 1000 veces para implementar el algoritmo aritmético de enteros:
Gray=(R*299+G*587+B. *114+500)/1000
RGB generalmente tiene una precisión de 8 bits, pero ahora se escala 1000 veces, por lo que la operación anterior es una operación entera de 32 bits. Tenga en cuenta que la última división es una división de números enteros, por lo que debe sumar 500 para lograr el redondeo.
Debido a que este algoritmo requiere operaciones de 32 bits, otra variante de esta fórmula es muy popular:
Gris=(R*3G*59+B*11+50) / 100
Sin embargo, aunque la fórmula anterior es una operación de enteros de 32 bits, de acuerdo con las características de las instrucciones de multiplicación y división de enteros del sistema 80x86, se puede realizar utilizando la multiplicación y división de enteros de 16 bits. instrucciones.
3. Algoritmo de desplazamiento de enteros
El algoritmo de enteros anterior ya es muy rápido, pero hay una cosa que aún limita la velocidad, que es la última división. El cambio es mucho más rápido que la división, por lo que los coeficientes se pueden escalar a potencias enteras de dos.
Se acostumbra utilizar precisión de 16 bits. La decimosexta potencia de 2 es 65536, por lo que el coeficiente se calcula así:
0.299*65536=19595.264≈19595
0.587* 65536+(0.264)=38469.632+0.264=38469.896≈38469
0.114*65536+(0.896)=7471.104+0.896=7472
Habrá un error de redondeo grande y debería ser Los errores de los resultados del cálculo anterior se calculan juntos y el método de redondeo es el método de seguimiento:
La expresión escrita es:
Gray=(R*19595 +G*38469+B* 7472)>>16
Coeficientes de 2 a 20 dígitos de precisión:
Gris=(R*1+G*2+B*1) >>2
Gris=(R*2+G*5+B*1)>>3
Gris=(R*4+G*1B*2) >>4
Gris=(R*9+G*19+B*4)>>5
Gris=(R*19+G*37+B*8) >>6
Gris=(R*38+G*75+B*15)>>7
Gris=(R*76+G*15B*30) >>8
Gris=(R*153+G*30B*59)>>9
Gris=(R*306+G*601+B*117) >>10
Gris=(R*612+G*1202+B*234)>>11
Gris=(R*1224+G*2405+B*467) >>12
Gris=(R*2449+G*4809+B*934)>>13
Gris=(R*4898+G*9618+B*1868) >>14
Gris=(R*9797+G*19235+B*3736)>>15
Gris=(R*19595+G*38469+B*7472) >>16
Gris=(R*3919G*76939+B*14943)>>17
Gris=(R*78381+G*153878+B*29885) >>18
Gris=(R*156762+G*307757+B*59769)>>19
Gris=(R*313524+G*615514+B*119538) >>20
Observe la fórmula anterior, estas precisiones son en realidad las mismas: 3 y 4, 7 y 8, 10 y 11, 13 y 14, 19 y 20, por lo que la mejor fórmula de cálculo bajo 16- La operación de bits es utilizar 7 bits. La precisión es mayor que el coeficiente anterior escalado 100 veces y es más rápido:
Gris=(R*38+G*75+B*15)>>7
De hecho, lo más interesante es la precisión de 2 dígitos, que se puede desplazar y optimizar por completo:
Gris=(R+(WORD)G<<1+B)>> 2
Debido a que el error es muy pequeño y Grande, esta fórmula nunca debe usarse para el procesamiento de imágenes (la más comúnmente utilizada es la precisión de 16 bits). Pero para la programación de juegos
la escena cambia con frecuencia y generalmente es imposible para los usuarios observar diferencias sutiles en el color, por lo que lo más común es utilizar una precisión de 2 dígitos.
Materiales de referencia:
Enciclopedia Baidu: valor de escala de grises
Enciclopedia Baidu: brillo de la imagen