Colección de citas famosas - Libros antiguos - ¿Existe alguna diferencia entre el valor de brillo y el valor de escala de grises en el procesamiento de imágenes? ¿O es el mismo significado pero con diferente nombre?

¿Existe alguna diferencia entre el valor de brillo y el valor de escala de grises en el procesamiento de imágenes? ¿O es el mismo significado pero con diferente nombre?

Existe una diferencia entre los valores de brillo y escala de grises de una imagen. La diferencia es que el brillo de la imagen se refiere al brillo de la pantalla y la unidad es candelas por metro cuadrado (cd/m2) o liendres. La escala de grises se refiere a la relación logarítmica entre el blanco y el negro. El rango generalmente es de 0 a 255, siendo el blanco 255 y el negro 0.

Datos ampliados:

La relación entre escala de grises y brillo:

Fórmula de conversión:

1. Base

Existe una fórmula psicológica famosa para convertir el color en gris:

Gris = R * 0,299+G * 0,587+B * 0,114

Algoritmo de números enteros

En aplicaciones prácticas, queremos evitar operaciones de coma flotante de baja velocidad, por lo que se necesita la aritmética de enteros.

Tenga en cuenta que los coeficientes tienen 3 dígitos de precisión, podemos escalarlos 1000 veces para implementar operaciones con números enteros:

Gris = (R * 299+G * 587+B * 114 + 500)/1000

RGB generalmente tiene una precisión de 8 bits, pero ahora tiene un zoom de 1000 veces, por lo que la operación anterior es una operación entera de 32 bits. Tenga en cuenta que la siguiente división es una división entera y debe sumar 500 para lograr el redondeo.

Precisamente porque 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, la operación se puede realizar utilizando la multiplicación de enteros de 16 bits. e instrucciones de división.

En tercer lugar, algoritmo de desplazamiento de enteros

El algoritmo de enteros anterior es muy rápido, pero hay una cosa que limita la velocidad, y es la división final. El cambio es mucho más rápido que la división, por lo que los coeficientes se pueden escalar a potencias enteras de 2.

Tradicionalmente se utiliza una precisión de 16 bits y la decimosexta potencia de 2 es 65536, por lo que el coeficiente se calcula de la siguiente manera:

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 gran error en el redondeo, calculado antes Los errores en los resultados deben calcularse juntos.

El método de redondeo es el método de corte de cola:

La expresión escrita es:

gray =(R * 19595+G * 38469+B * 7472)>& gt16

Coeficiente de 2-20 dígitos de precisión:

Gris=(R*1+G*2+B*1)>& gt2

Gris=(R* 2+G* 5+B*1)>& gt三

Gris=(R*4+G*1B*2)>& gt四

Gris=( R*9+ G*19+B*4)>& gt五

Gris=(R*19+G*37+B*8)>& gt六

Gris =(R* 38+G*75+B*15)>& gt七

Gris=(R*76+G*15B*30)>& gt八

Gris=( R*153+G*30B*59)>& gt九

gris =(R * 306+G * 601+B * 117)>& gt10

gris = (R * 612+G * 1202+B * 234)>& gt11

gris =(R * 1224+G * 2405+B * 467)>& gt12

Gris= (R*2449+G*4809+B*934)>& gt13

gris =(R * 4898+G * 9618+B * 1868)>& gt14

gris = (R * 9797+G * 19235+B * 3736)>& gt15

gris = (R * 19595+G * 38469+B * 7472)>& gt16

gris = (R * 3919G * 76939+B * 14943)>& gt17

gris = (R * 78381+G * 153878+B * 29885)>& gt18

gris = (R * 156762+G * 307757+B * 59769)>& gt19

gris =(R * 313524+G * 615514+B * 119538)>& gt20

Observar arriba Las fórmulas, 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 para operaciones de 16 bits es usar 7 bits. precisión.

Gray=(R*38+G*75+B*15)>& gt seven

De hecho, lo más interesante es la precisión de 2 dígitos, que puede ser totalmente convertido y optimizado:

gray =(R+(WORD)G<<1+B)>>2

Debido al gran error, esta fórmula nunca se utiliza en el procesamiento de imágenes (principalmente Lo más utilizado es la precisión de 16 bits). Pero para la programación de juegos, la escena cambia con frecuencia y, en general, es imposible para los usuarios observar diferencias sutiles en el color, por lo que la precisión de 2 dígitos se usa más comúnmente.

Materiales de referencia:

Enciclopedia Baidu-Valor de escala de grises

Enciclopedia Baidu-Brillo de imagen