PDA

Ver la Versión Completa : rango: Midiendo el rango dinámico de tu cámara



Guillermo Luijk
04/10/25, 11:58:47
Entre tres chalados estamos diseñando una aplicación para medir el rango dinámico de una cámara digital, es decir la cantidad de pasos de luminosidad que es capaz de capturar su sensor. Y está mal que lo diga, pero es que estoy bajo juramento: no hay ninguna web ni herramienta comercial que en esta tarea llegue al nivel de precisión (alias frikismo inútil pero divertido) que estamos alcanzando.

La aplicación de línea de comandos, rango, se invoca con una serie de opciones parametrizables. En la primera imagen se indican exactamente los parámetros que se han usado en este ejemplo aunque hay bastantes comandos más. Para no aburrir resumo el proceso en cristiano:

Se le suministran al programa dos fotografías, una en negro y otra saturada, para calcular con precisión los niveles de negro y saturación del sensor, valores que son clave en todo el proceso
Además se le suministran fotos hechas sobre una carta con parches de colores de diferentes luminosidades, una para cada valor ISO que se quiera analizar
Sobre estas imágenes se realiza una corrección geométrica para eliminar la distorsión y a continuación se hacen lecturas de Señal y Ruido en cada uno de los parches
Recolectadas las anteriores series de valores de Señal y su correspondiente relación S/N, se obtienen por regresión las curvas de relación S/N que son la forma más potente de caracterizar el rendimiento de un sensor de imagen en lo que respecta al ruido
Finalmente por intersección de estas curvas de relación S/N con los umbrales de relación S/N escogidos como criterio de ruido, se obtiene la cifra de rango dinámico para cada valor ISO


El programa se plantea como código libre y está escrito en C++ multiplataforma para Windows/Linux (los interesados de Mac ya se buscarán la vida). Todo el diseño de los algoritmos y prototipado se hace en R con aceleraciones C++ en partes críticas. La idea es que tenga un CLI (rango) para ser usado por línea de comandos, y dos entornos GUI con menús y manejados vía ratón, uno más ingenieril y espartano (rangoLab) y otro que llegará más tarde y pretende ser más amigable para fotógrafos y usuarios no técnicos, además de ofrecer funcionalidades más allá del puro análisis (DynaRange).

Este sería el comando utilizado para la medición:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBsNcyAOMYzLjwGJz7qI7gegWwniRBpEb4RWy9T_6BKD WLsupsroNrF_sJPu-UVMjYTjd0RM1YacSxYQrcNUZAMcGobOdIe6532eH7-op0TRwucUp_UiTf77I7hBZ4MiuICDlslrQzs-WWP2jkl57Y9ue2EYlvukCUEs3gWpKIHb6lEgrxaLScT1QvvuiF/s1600/_rango0.png

La captura de una carta de luminosidades crecientes sobre el propio monitor. El color magenta es para ayudar a alinear los canales RAW lo que dará muestras más uniformes, y el desenfoque es para impedir que la textura de píxeles del monitor se interprete como ruido, lo que empeoraría las mediciones de rango dinámico:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ4FSVVQfB88MPP_82z5OhBHEqPDBapkLcP2j8ftSGL1 tbwMaVvUgGyiVTh15kHGvQRCHbOoKIJk19vxDq_z79x-LTdLxGtW_DhB84G01drxx_82vZyUX20Ma8rp9Rxs_NvKI07oso 9v7QlVhViutKzDE7Vu7Kb7aZugOJw9tAtKhLQUj2_UrlTM5SGI-1/s1600/_rango1.jpg

La anterior carta corregida geométricamente e indicando los parches leídos que participarán en el cálculo:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgD7HH8CLsG_WAR4873AH8wEbmPt_IIZDMUMjXQz6iVOo Dv62Z58CbUjeq9I-TSHzEgV6BYO0U2ehEVDdl0Tu2sPG0CRfoVI5JR6LBACshFEjzd uN1eD2Wt9Ebr6EWYTAvJOSf_PcALwQfqcu2Wjda9e6NEMq9vD4 k-sZBqES9vvMi0OSJWIaf-EW47iljC/s1600/_rango2.png

Leídas las muestras de Señal y Ruido se obtiene la madre del cordero: las curvas que para cada nivel de exposición RAW proporcionan la relación S/N obtenida. Sobre ellas se mide el rango dinámico:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CgfWQjX51nxJFMmL50tvorDVK9-qOhMuyJqz5e0EgjnHWq4FTkb8E9wWC1AKbnlz-YzjYMbX-897cB2oIVneoQ5-fApbPLnhk2MW3LtKRGTJwxCY6Bbw5i4Yh5ktF_rDCX64rgaNca cg88TaFOjhOSRekSuF7aFY-I3kaIRmoBu_rC2BidGtU58ZsyxN/s1600/_rango3.png

Esta salida gráfica es la más potente que yo haya visto publicada en ningún sitio. Se pueden mostrar los puntos con los que se calcularon las curvas, para cada uno de los 4 canales RAW (por si hubiera diferencias de rendimiento por canal; spoiler: en algunas cámaras los hay), y también el resultado combinado de todos los canales con una cifra de rango dinámico promedio. La resolución de salida puede ser brutal permitiendo formato bitmap de alta calidad con antialiasing (PNG) y también formatos vectoriales que admiten zoom infinito sin perder calidad (PDF, SVG).

Por qué una herramienta así si ya están DxOMark y Photons to Photos? Aparte del reto de algoritmia y programación:

Porque Photons to Photos muestra cifras con una normalización que no explican. Nosotros las vamos a explicar claramente.
Porque vamos un punto más allá en la finura del cálculo (Photons to Photos usa el nivel de negro entero informado en los metadatos, nosotros lo calculamos a partir de un RAW y empleando decimales). El nivel de negro es crítico para estimar correctamente las mediciones de ruido.
Porque estarás midiendo el RD de tu cámara, no solo de tu modelo de cámara (una de las pruebas que nos apetece hacer es comparar el RD de dos unidades de un mismo modelo; o también comparar una unidad consigo misma en frío vs cuando está muy caliente. p.ej. tras grabar vídeo).
El programa no solo va a servir para calcular el RD, sino para generar la propia carta a la que disparar, para calcular con precisión los niveles de negro y saturación del sensor (esto en realidad es más una curiosidad científica para el fotógrafo que un dato útil), y también planeamos que sirva para medir el rendimiento completo del sensor en cualquier circunstancia (sería llevar la curva de relación S/N hasta la saturación).


Listado completo de los comandos que vamos implementando:

C:\>rango

Digital camera Dynamic Range calculation "rango" v1.0
by Juan Manuel Font (coding), Hugo Rodriguez (UI design) and Guillermo Luijk (algorithms)

Usage: rango [OPTION]... [FILE]...

--chart -c <DIMX W H M N> : Create test chart in PNG format ("testchart.png") with a specific resolution, format and number of patches (default DIMX=1920, W=3, H=2, M=4, N=6)
--chart-colour -C <R G B invgamma> : Create test chart in PNG format ("testchart.png") ranging colours from (0,0,0) to (R,G,B) with gamma compression (default R=255, G=101, B=164, invgamma=1.4)
--chart-patches -M <M N> : Read test chart decoding MxN patches over rows (M) and columns (N) (default M=4, N=6)
--chart-coords -x <x1 y1 x2 y2 x3 y3 x4 y4> : Read test chart defined by 4 corners (no specific ordering needed): (x1,y1), (x2,y2), (x3,y3), (x4,y4), being (0,0) the coordinates of the top-left pixel
--black-level -b <float> : Camera RAW black level
--black-file -B <file> : Totally dark RAW file ideally shot at base ISO
--saturation-level -s <float> : Camera RAW saturation level
--saturation-file -S <file> : Totally clipped RAW file ideally shot at base ISO
--input-files -i <files> : Input RAW files shot over the test chart ideally for every ISO
--patch-ratio -r <float> : Relative patch width/height used to compute signal and noise readings (default=0.5)
--snrthreshold-db -d <float> : SNR threshold in dB for DR calculation (default=12dB "Photographic DR")
--drnormalization-mpx -m <float> : Number of Mpx for DR normalization (default=8Mpx, no normalization=per pixel DR=0Mpx)
--raw-channel -w <R G1 G2 B AVG> : Specify with 0/1 boolean values for which RAW channel(s) the calculations (SNR curves, DR) will be carried out (default=0 0 0 0 1)
--poly-fit -f <int 2-3> : Polynomic order to fit the SNR curve (default=3)
--output-file -o <file> : Output CSV text file(s) with all results: black level, sat level, SNR samples, DR values, fitting params (default="results.csv")
--plot -p <int 0-3> <PNG/PDF/SVG> : Export SNR curves plot in PNG/PDF/SVG formats with/without the CLI command that generated them (default=0, don't plot, default format=PNG)
--print-patches -P <file> : Save keystone/ETTR/gamma corrected test chart in PNG format indicating the patches used for all calculations (default="printpatches.png")


Salu2!

u420067
04/10/25, 15:28:29
Como siempre, Guillermo, muchas gracias por tu aportación.
Un saludo.

titto_velusi
04/10/25, 23:46:18
No dejas de sorprender!!! Gracias por el currazo que os estáis metiendo. Habrá que probar a ver los resultados que arroja.

invierno
05/10/25, 09:49:47
Hola, saludos ....rango dinámico de una cámara digital,....SONY A7III ????

Entre tres chalados estamos diseñando una aplicación para medir el rango dinámico de una cámara digital,

Rango dinámico de la Sony A7 III (https://www.google.com/search?rlz=1C1PRFI_enES791ES791&cs=0&sca_esv=efbb7c509a58d99b&q=Sony+A7+III&sa=X&ved=2ahUKEwjFhPGXyoyQAxWuNvsDHe_cKbIQxccNegQIAhAB&mstk=AUtExfAYmAhj918jxgt_VTxrFC2ZL8VpmhKdNaXRDNZMf pd6H_PqOBcIbwfGFQDoPqONPicfCURNjNIlLHALWfvUokOKkw9 VjtEf2S3FmCOIvGlhhAq7qcrmpbWi1m6t96InIJk&csui=3) es de aproximadamente 15 pasos en su ISO base, gracias a su sensor CMOS Exmor R (https://www.google.com/search?rlz=1C1PRFI_enES791ES791&cs=0&sca_esv=efbb7c509a58d99b&q=CMOS+Exmor+R&sa=X&ved=2ahUKEwjFhPGXyoyQAxWuNvsDHe_cKbIQxccNegQIAhAD&mstk=AUtExfAYmAhj918jxgt_VTxrFC2ZL8VpmhKdNaXRDNZMf pd6H_PqOBcIbwfGFQDoPqONPicfCURNjNIlLHALWfvUokOKkw9 VjtEf2S3FmCOIvGlhhAq7qcrmpbWi1m6t96InIJk&csui=3) retroiluminado. Esto significa que la cámara es capaz de capturar una gran cantidad de detalle tanto en las zonas más brillantes como en las más oscuras de una imagen, ofreciendo una excelente latitud para recuperar información en la edición, especialmente en la recuperación de detalles en sombras.

Y gracias por tu interes y el de tus compañeros en el ambito de la ingenieria, siempre es de agradecer todos estos estudios, para nada "tres chalados" todo lo contrario, felicidades por ello :) ...pero para mi que no se ingles pues he de reconocer :evil: un poco fuera de lugar, pero :OK

Saludos de Felipe :aplausos

Guillermo Luijk
05/10/25, 13:03:04
Gracias por vuestras palabras.

Una curiosidad sobre la Sony A7 IV. Al calcular sus curvas de relación S/N, la del canal azul del RAW sale consistentemente por encima de las de los otros 3 canales:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7wt2OAFsjabI4AwfMJsPVfNUjbPfFQQalCClKBvc7Pq CMEYDQ-ImWYd8MvP4kucLfVW5RiVu_HPXTF-YUd1U2nDBY5lCJqZkt3uwd0-eE_64NFcnzWN8Rttcvt2fbGHxOzGkjvaFOw5rI-WlQNcUc_4CSqVyl9Rv7ifEl3R2xb5jP8zwkJXbWE3gPtAl-/s1600/drsonya7iv.png
(en el título indica Olympus OM-1 pero es la Sony A7 IV)

Comprobado que esto no tenía su origen en alguna diferencia en cuanto al nivel de negro de ese canal (lo que también sería extraño), solo quedaban dos opciones:

La electrónica de la cámara, por el motivo que fuera, era diferente para ese canal y le daba un punto de rendimiento extra.
Los RAW llevan ese canal cocinado aplicándole una reducción de ruido en la propia cámara.


El segundo punto, es decir la reducción de ruido por software, suele quedar delatado al hacer la FFT (transformada de Fourier) sobre una señal de ruido puro. Si no hay reducciones de ruido aplicadas el ruido será blanco abarcando todas las frecuencias dando una FFT de color uniforme, pero si se ha aplicado algún proceso de reducción de ruido se verá algún tipo de anomalía en la FFT.

Aplicado a un RAW a ISO100 de esta Sony A7 IV queda claro que se está aplicando algún proceso al canal B que mejora su rendimiento en ruido:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmdQfjdULDzzw-BOmUKEKS1wmSnxKTjoc09mAR310k4kAAFXTjdUzwhxt0iF6hOt OE_O23GiJ0_PdXvzqJ-tLoKm2jQb8xVLcizNey9o1g1HCjnFFg7QDdJr2hHb7N42EyjBg rQepWNC0BnQimgf_Mzwz8pYPjuQD1dLwdJHO0PMcuRTlhkGujS VETKatn/s1600/sonya7iv_noisereduction.png

Esto no es para llevarse las manos a la cabeza. Esta misma cámara lo hace para todos los canales en su ISO102400 (se ve en las curvas de arriba), y las Canon sin espejo también hacen estas travesuras. La jodienda es que cuando un fabricante aplica estas reducciones de ruido, el cálculo de rango dinámico aumenta artificialmente sin corresponder a una mejora de rendimiento real.

Salu2!

titto_velusi
05/10/25, 13:50:53
Hola, saludos ....rango dinámico de una cámara digital,....SONY A7III ????

Entre tres chalados estamos diseñando una aplicación para medir el rango dinámico de una cámara digital,

Rango dinámico de la Sony A7 III (https://www.google.com/search?rlz=1C1PRFI_enES791ES791&cs=0&sca_esv=efbb7c509a58d99b&q=Sony+A7+III&sa=X&ved=2ahUKEwjFhPGXyoyQAxWuNvsDHe_cKbIQxccNegQIAhAB&mstk=AUtExfAYmAhj918jxgt_VTxrFC2ZL8VpmhKdNaXRDNZMf pd6H_PqOBcIbwfGFQDoPqONPicfCURNjNIlLHALWfvUokOKkw9 VjtEf2S3FmCOIvGlhhAq7qcrmpbWi1m6t96InIJk&csui=3) es de aproximadamente 15 pasos en su ISO base, gracias a su sensor CMOS Exmor R (https://www.google.com/search?rlz=1C1PRFI_enES791ES791&cs=0&sca_esv=efbb7c509a58d99b&q=CMOS+Exmor+R&sa=X&ved=2ahUKEwjFhPGXyoyQAxWuNvsDHe_cKbIQxccNegQIAhAD&mstk=AUtExfAYmAhj918jxgt_VTxrFC2ZL8VpmhKdNaXRDNZMf pd6H_PqOBcIbwfGFQDoPqONPicfCURNjNIlLHALWfvUokOKkw9 VjtEf2S3FmCOIvGlhhAq7qcrmpbWi1m6t96InIJk&csui=3) retroiluminado. Esto significa que la cámara es capaz de capturar una gran cantidad de detalle tanto en las zonas más brillantes como en las más oscuras de una imagen, ofreciendo una excelente latitud para recuperar información en la edición, especialmente en la recuperación de detalles en sombras.

Y gracias por tu interes y el de tus compañeros en el ambito de la ingenieria, siempre es de agradecer todos estos estudios, para nada "tres chalados" todo lo contrario, felicidades por ello :) ...pero para mi que no se ingles pues he de reconocer :evil: un poco fuera de lugar, pero :OK

Saludos de Felipe :aplausos

Felipe; eso que escribes sobre tu Sony; es lo que dice el fabricante. Lo que Guillermo te ofrece es que averigües lo que es capaz de hacer tu cámara en concreto.
Aunque no va a cambiar nada, no creo que nadie cambie la cámara por los resultados que ofrezca el programa; es una buena forma de entretenerse y saber de qué dispones en tu cámara.
Yo de inglés se poco; pero de programación menos. Aunque le gustaría probarlo con mis cámaras, solo por curiosidad. Cuando se pueda, si me surgen dudas, le preguntaré al artífice de la criatura a ver si le apetece echarme una mano.

Bitxi2005
05/10/25, 14:56:08
Muy interesante, muchas gracias por la aportación al foro.

Saludos

Guillermo Luijk
05/10/25, 23:05:42
Una versión en plan gráfica minimalista impresa vintage del rendimiento de la Sony A7 IV.

Esta gráfica desprovista de colorines y detalle excesivo permite ver rápidamente varias cosas:

No hay diferencia en esta cámara entre ISO50 e ISO100, disparando en RAW son a efectos prácticos la misma cosa.
A partir de ISO400 se produce un cambio de comportamiento (Dual gain), haciendo que la degradación debida al ruido tarde más en llegar cuando se trabaja con niveles de exposición bajos.
Relacionado con lo anterior, la curva de ISO400 llega a cruzarse con la de ISO200 lo que quiere decir que este sensor a ISO400, incluso con un paso menos de exposición, rinde mejor que a ISO200 con un paso más de luz. Esta mejora es poco utilizable en la práctica porque se da en zonas de tan baja relación S/N que normalmente ni se consideran utilizables. Pero no deja de ser curioso.
El rango dinámico fotográfico a nivel de píxel a ISO50/ISO100 es de 11,4EV.


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5STGUmsj4DuOu7zuDDIwDPk5x7FaEY6N2jEE_xZ6Sb5 JFIyZ24l1ODs1_jRV5LNqBf8SeDHiOPkUZPgBEDjI6Xxa-aI_SXRW8aPaVGQS2mv4pSDkNBWpmvsYsxmOFVDJagqJLYmjhTe q8bqeEwyL5slFgrCo_YVY29916Bx3FQHhocvA72YGdOvbgtSRl/s1600/snrcurvesvintage.png

Salu2!

Guillermo Luijk
15/10/25, 01:33:29
Bueno esto es en parte mockup pero el 90% de las cosas ya funcionan y el GUI va tomando esta pinta:

De izq. a derecha:

Se suministran 2 archivos RAW darkframe y saturado para calcular los niveles de negro y saturación del sensor
Luego los archivos RAW con las capturas de las cartas
A la derecha parámetros del cálculo (con valores por defecto, no es preciso cambiarlos): margen de seguridad en los parches, normalización a determinada resolución (8Mpx es la que usa DxOMark), umbrales de relación S/N para los que se calcula el rango dinámico (0, 6 y 12 dB en el ejemplo), orden de los polinomios de interpolación (3 por defecto), canales RAW a estudiar
Elementos a plotear en las curvas: scatter de valores (EV, dB), curvas de relación S/N, etiquetas con el RD
La salida es una gráfica con una calidad brutal. Puede ser PNG (bitmap) o SVG (vectorial).


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSrDtxBmz47_0pZdpD1rHaxGcEKxbaAGI12KECKY5Xqc US_CbzN4ozggrC5MJ5FjzinrnNQjNTX0oFXREtbIQO6lFhyphe nhyphenMC6WDtT3I2MSenXgc51scOIAg1rfR_kilLSaDJRjbEc zuxpkwIRgiwfIk0oDKis13N92_1-GYq85cy0XEWtRGusdLcMt5S77kjt/s1600/rangoLab.png

Salu2!

Guillermo Luijk
20/10/25, 00:11:40
Va tomando forma la herramienta para medir el rango dinámico de una cámara digital, es decir la cantidad de pasos de luminosidad que es capaz de capturar su sensor.

La aplicación de línea de comandos, rango, se invoca con una serie de opciones parametrizables. El proceso a seguir es:

La aplicación de línea de comandos, rango, se invoca con una serie de opciones parametrizables. El proceso a seguir es:

Se le suministran al programa dos fotografías, una en negro y otra saturada, para calcular con precisión los niveles de negro y saturación del sensor, valores que son clave en todo el proceso
Además se le suministran fotos hechas sobre una carta con parches de colores de diferentes luminosidades, una para cada valor ISO que se quiera analizar
Sobre estas imágenes se realiza una corrección geométrica para eliminar la distorsión y a continuación se hacen lecturas de Señal y Ruido en cada uno de los parches
Recolectadas las anteriores series de valores de Señal y su correspondiente relación S/N, se obtienen por regresión las curvas de relación S/N que son la forma más potente de caracterizar el rendimiento de un sensor de imagen en lo que respecta al ruido
Finalmente por intersección de estas curvas de relación S/N con los umbrales de relación S/N escogidos como criterio de ruido, se obtiene la cifra de rango dinámico para cada valor ISO

El GUI está por pulir pero ya implementa de forma gráfica todas las funciones disponibles por línea de comandos. La detección de parches puede ser automática o manual. La salida en forma de curvas de relación S/N es configurable desde el máximo de información (scatter, curvas y rango dinámico de los 4 canales RAW a la vez), a una versión tan minimalista como se quiera, siempre con alta calidad en formato bitmap de alta resolución (PNG) o vectorial (SVG). El procesado completo de 10 archivos RAW, uno para cada ISO de la cámara, se realiza en aprox. 7s en un ordenador estándar.

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Qf7WoOpJJt-uj0l8i2x2ydnKA5MF5cxWQWdgA9pnxsl-P-D1yyxKlgLIowBx9ZpwEzLj1uzeYOF-Hy-hv3Q3dY4LH-Qj0yB0KrLm7Elxy87qE8vGZvkHeE9ze3dsZfQvkIETSI0bcCQY UAgB_7PZ6Iml4poMnA_gW1ACPlOzEEZCiF0gug4Xa3sYxFyZ/s1600/rango1.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbEtLteyGQHA4KhCJQ6yuvrK7MIV6dXL76IKxMZSPwqA GTe8oS81Xnz2xecxBVjW1Ww533NP0XhIQVwCXZcJqEM7I9zmuY 6Kc-73B1x86Tcinm9rltL-wx-WMYtVzfVHvBn1YjOi6kMPb6STLq0stMxKJ2QGS6KLi6z9dtwLM mHMAjtroDdFQkZJn-aqUk/s1600/rango2.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1UIirRQTzE0M_jF7L8llP7HAQx9HXRB63LmP-lQOiW77q-aD4-hIXEwsB81_0sVLrNtKEPpL0R7va7NwzXzZOhwYPkmOO_MQIrzi i933pWB3oq4sPV8selOb0IE3QtKdNBSubl-_SYTbfWDbtR95yAFQ65Z7R3GvASCpgAcMaEBbBhBDZ7MgIo4bQ xjy1/s1600/rango3.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6RDBea44Ly5i3rxQJNAXX-V7fOTAGGj9of-z6po2Cik7bunWItBCREtC-imVU__zEYwTTLp_J_Uvdp0x90dN3O37te0UxerCnFgH2Hn2AnM RoH4SgCuWskzs2ZZTu1cpQoydO3WsnEbBQHlTDmCX9Q5VVsLLD N6aJAP1xWrSPtrNdpsW5YsJTLlpIiq-1/s1600/rango4.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3FuB4p8X0Yw_Jm9C_kht3Jr_N8-G0p9v9H-uTlAhMqvHP3fpCqHCdHJr23WwZg6FRn8sjTbaRyMpEHAUey-SUIE0o3AWfOO4LdhATA_Aujps1kxkSfk9G64VxwGQrbWHWrrae yUQkSOZ0GogXtPb_1r1Pm5aNmWX3krrI72P8VzeFUu25EUUnan K4EFZU/s1600/rango5.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZsXgRC9ys0k8cCN2jigmEpLU3VBTMZgDQ9ZNKY9ZvfS 02fiugfBMr8tjuFGu9SNuhVuLS4C9aNh5vIutrIdBIU57IoA7i 4ru4WRU1Spas-qFBQkBXWEki4N7sRt0eYKJkmSL3CNdqzdBM02Z3iIY7A-tRr-JWEtm3QsTayUiq-9DQWidlA2fgOEgTwLt1/s1600/rango6.png

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiby36cLjW03dBJUKo6Oah9WMx2nGLI-q4u20ZJaKTcKTvtcGzy4bTcnJorV9W-DJ-iUR9o0n_qjmm88uIJ3NmB-f_aDwz-sYSunD64gaWnufKeMiHHPOTw12Fy8VZhCwcBVdAxZ54tjvcJvJ 5RcAG2XA3cXTQMt-qC8h9hAMEv24YtTb4WChni7HoGiRhP/s1600/rango7.png

Salu2!

Guillermo Luijk
24/10/25, 01:23:24
MEDICIÓN DE LA REDUCCIÓN DE RUIDO Y LA MEJORA DE RANGO DINÁMICO CON EL APILADO POR MEDIA

Otro ejercicio para poner a prueba el algorismo. La teoría dicta que cuando se promedian cuatro distribuciones normales con los mismos parámetros de media y varianza, la desviación estandar se reduce a la mitad. Aplicado a señales con ruido, esto significa que la relación S/N de una imagen se duplica (o lo que es lo mismo, el ruido visible se reduce a la mitad) si promediamos 4 versiones incorreladas de la misma.

Esto es de aplicación en fotografía para obtener imágenes más limpias cuando nos podemos permitir usar un trípode: se repite la misma foto varias veces y se promedian todas las tomas.

He calculado la mejora obtenida en la curva de relación S/N cuando hacemos un apilado de 4 tomas y otro de 16 tomas. Las nuevas curvas debieran ser gemelas de la curva S/N original pero desplazadas hacia arriba en 6dB (=20*log10(2)) y 12dB (=20*log10(4)) respectivamente, lo que equivale a reducciones de ruido a la mitad y a la 1/4 parte del original.

En las sombras profundas, donde la estadística gaussiana queda destruida por la cuantización que supone tener muy pocos niveles, la mejora no llega a esos 12dB (ver que la separación entre las curvas se hace menor a 12dB):

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4_gy25EGqmmBy1LDuh4LPFbQz9zCCl96NLb0Rg67_3r iRrOYxPxWudqVLbAOBPn-jpla8_UTWfqhQW63Q1lJ_QhmZnqp8aR7VH8UpqQMA6ewbv8M79 28W0AQ2LY1hdqx3j-465TvnmyVWzC_tT_hXk8Al4ddPOpBvsYQIHDT0O0Mb-_-iIiiH-QXLcIev/s1600/stacking4.png


En realidad esto es irrelevante porque son zonas no utilizables en fotografía. Donde el fotógrafo trabaja la mejora sí alcanza los 12dB. Visualmente una mejora en ruido de 12dB equivale a lo que puede verse en este apilado de Mazinger Z:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_IHBjXWP4opbouLt5yCIM_ZmnPawP6djG7M3iX1XDXq anUgQ6eOsMdPqY3XAxlgkjrbWI5LS6YcBUgrf-hostuKx_Gd7ap_AE2H5wigqusPXB-ZbicqQvzTfsWgc5xhesm6i8jDS9qolqpzkflxnH0CDbPlHLc1c L2pHcAW_umz4xsVxRI6gYmsHvKixn/s1600/compstacking.jpg


De las curvas anteriores puede verse que con los apilados logramos un aumento de rango dinámico muy notable: ganamos 1,2EV de RD con el apilado de 4 fotos y 2,0EV apilando 16 fotos.

El proceso como siempre consiste en hacer fotos a una cartar de parches:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWRpeAXRz1pdaZEqMyVf3tR26O26epZqssveipQ6VyjK swK-Hpjnm21vV9p0tQ4TRSalHpzUi212nelkkVaI4Zy6m7672BpuVE wi6cgqOo2jUZMzwC84Z64X01sK0g1HZ_6sKi3YuS3Oe5zOoyCz 4x8S92mYmZCtxP6UHkjXgJ0Nwsric5xSZUbka-Esfr/s1600/stacking1.png


Corregir su geometría detectando automáticamente las esquinas:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCqdN69kKEkToYxl056ZyzKkotGCfH2McAvLsARHzCGM l0s-YrREF4DcnL81qAuEZ5Axz7LiWRn5hyekrVs7kW7CnvFZ4pO5Xd rq1jB056kJvJwHvwZAkob0p7zJOHS3YHeo39fOdoan_iL7fhFU 2coj39ztD4ygOaSsmyfo0OrqEzJLkY3FDKXTjFu8Y-/s1600/stacking2.png


Y hacer la lectura de valores de señal y ruido:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuJ90570XQid8MWm7GP2ODd9Om5LJg6YlMgoLVcvsqYV I2A74tOx5yWAJhQmhpOIvSdqU5sd-QMrcaSLmyQfSENLwEeuTMEVO30jgO7mDoffUpt5Y_bMy6HYZiX V_hkdUTXO8aP0ZfiUT34BFiy9sJM8SpWuNx2MvVnrUSs2ljFpI WD-3jf6cxM2aELu1x/s1600/stacking3.png


Salu2!

Guillermo Luijk
27/10/25, 03:07:19
Otra prueba, esta vez con una Canon R5 II. Es sabido que los sensores Canon pierden bastante rendimiento al usar obturación electrónica. Esto se refleja en un empeoramiento de sus curvas de relación S/N y pérdida de rango dinámico. He usado la carta de parches de DPReview, versión ISO invariance test, ya que son capturas convenientemente subexpuestas para poder medir el rango dinámico:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrZkY3iAUGBjPiOXk_2r2L-XXXOoKSC9tBIvZkqMTjYxTRnkp5B9qs_CQ3DNMQbnufMRFcNkm Hsq1iD_mnNlZzuzWZPjOdwNWmsG4gw5kW2_f3ariQ2HGpyyLg6 6ytSVxT_hHTcRn__Sm3zvf_vpqLYxZ-BmXU2HVI5ZlhHPJnsP6iauPq1uSQLmt8H_16/s1600/canonr5ii_iso100_mecanico.jpg


Los parches son pequeños pero totalmente suficientes para tener muestra:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-mS1ZgLUqhmJFLxYSz_KINvdCSIWxTdX_Nnm3bZjzqjO26D1x8E Uhyphenhypheni7GIIbdkyM9sxcGeNjKZrSeOTPdMR6rV7VKcm aCsmgCFf47-GHFlbb8UZvymZtZW_9QpD_kmbnmoNUQt298EiJwz2NGMSMU5GZ IQ8BFKhYBT3QzXSBX7S5XtIgdbrr78V5lp-ZK/s1600/printpatches_R_iso100_mecanico.png


Las curvas de relación S/N que resultan, dejan claro el empeoramiento del rendimiento del sensor al usar obturador electrónico (es la curva inferior). La pérdida de rango dinámico se acerca a 0,5 pasos:

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgTftlrnR0YRSB6g2Tg_xqYt8UINHCnGNau6tJYhh-2l7becRXg9Bb6yqZguLge-uTI1RE8BEIYgqTBTvruMjSXTe-ZCRPbX79fCAh9OdteIE74N5RuVqa27oao7fq2x16ttmtllMCNT c8_Pgh0w9aZBaSdgia6vcVYfWWeAp6pYR1pevJXHTJjKpmjj14/s1600/SNRcurves_patchratio0.5_perpixel.png

RD iso100_mecanico: 10,83EV
RD iso100_electronico: 10,37EV
Dif.: 0,47EV


Las malas noticias son que esto es solo una estimación aproximada ya que la carta se fotografió enfocando los parches, lo que introduce textura de la impresión que se incorpora como un ruido adicional ficticio a la medición empeorándola. El comportamiento convergente de las curvas a priori no me gustaba demasiado, pero viendo que en zonas bien expuestas la obturación electrónica afecta poco o nada (Dpreview Studio Comparison), me hace pensar que quizá esas curvas sean más correctas de lo que parecen y la realidad práctica es que la pérdida de prestaciones por usar el obturador electrónico afecta principalmente en las sombras profundas, pero en zonas bien expuestas puede ni notarse.

Salu2!