相机动态范围的原理是什么?
7260 263
[1 楼] 野治爱 [泡菜]
19-7-5 07:44
比如A,B两款相机,A的动态范围高,B的低。两款新机都欠曝光拍片,但是因为A的动态范围高,提亮之后暗部噪点少。
据我理解,相机拍出来的照片,本质上都是一堆二进制代码。那同样的一堆二进制代码,为什么会体现出提亮之后噪点的差异呢?求高人解惑。
本帖由 无忌论坛V3.1.0 iPhone6 iOS12.2 客户端发布
[264 楼] stevenkoh [泡菜]
1-6 21:33
娲姝 发表于 2019-07-08 18:46
各种不对
首先动态范围适用于幅度,比如光的亮暗、声音的声压、电流的强弱。频率的范围,叫做带宽。
其次,计算动态范围用 10 做底还 x2,是功率谱,因为功率 P 正比于 U 平方,所以 x2,如果不是功率谱,不是这样计算。


哈,只有你发现了各种不对。真的没有想到,这个专业论坛,对“动态范围”的理解竟然近似全军覆没。可见中文论坛技术讨论之艰难。

这个是佳能器材论坛。把一些知识点挪到“摄影后期”的理论贴去讨论。链接:“摄影后期”板块,动态范围与灰度级数的关系?》

我这里先说明一下,动态范围本质是灰阶,和噪点噪声是两个概念,切勿混淆!把两个有丁点儿物理关系,但数学上是完全不相干的两个概念混淆在一起,那么各种理解都错上加错。所以,我转移到动态范围与灰度级数的关系?》去阐述这个问题。
stevenkoh 编辑于 2026-01-06 21:40
[263 楼] iZaZaD [泡菜]
19-7-24 10:31
urin1010 发表于 2019-7-23 11:04
拿势阱容量/读取噪声(暗电流)就是实际灰阶(灰度级数),越接近对应数值实际效果越符合色深要求。实际上目前普通传感器都无法匹配对应的标定高色深,16bit色深需要2的16次方65536的灰度级数,对应电路需求,势阱容量/暗电流要达到65536才完全匹配。dr只是一个响应区间(或者说工作范围),而真正影响成像质量的恰恰是灰度级数,数字机的宽容度是基于dr下的对应灰度级数。不是固定值,而是一个可变函数。


有道理~  

我感觉前边讨论的,Blacklevel  Whitelevel 的限定相当于是扔掉了一部分原始灰度级数,然后重新定义了新的灰度级数。
[262 楼] urin1010 [泡菜]
19-7-23 11:04
拿势阱容量/读取噪声(暗电流)就是实际灰阶(灰度级数),越接近对应数值实际效果越符合色深要求。实际上目前普通传感器都无法匹配对应的标定高色深,16bit色深需要2的16次方65536的灰度级数,对应电路需求,势阱容量/暗电流要达到65536才完全匹配。dr只是一个响应区间(或者说工作范围),而真正影响成像质量的恰恰是灰度级数,数字机的宽容度是基于dr下的对应灰度级数。不是固定值,而是一个可变函数。 本帖最后由 urin1010 于 2019-7-23 11:06 编辑
[261 楼] rivershaw [泡菜]
19-7-22 18:55
iZaZaD 发表于 2019-7-22 17:11
我又想不通了。。。

能不能拿个实际例子给说一下转换过程?

比如,SONY的传感器IMX551 , 满肼容量52000,读出噪声1.762(姑且认为这个是所有噪声总和)。如果把这两个数字,对应为像素电路的输出电压数值,那么ADC采样怎么个过程呢?

我写一下,看看哪里有问题:

假设像素电路最大输出电压3.3V (对应相当于势肼量52500e-) ,最小0.7V (对应势肼量0e-) 。

ADC 最高输出数值 16384 ,对应势肼量3.3V / 54000e-;问题1:用数值512去对应0.7V / 0e-?

这样对应关系为:

512  ~~~ 0 e-
16384  ~~~ 52500e~

16228 ~~ 52000e~

归一化后,0~15716 对应整个数值范围 (0.7V / 0e-)  ~ (3.3V / 54000e-) ?


54000e-是52500e-的笔误吗?

如果512对应0e-,16384对应52500e-,那么52000e-应该对应(16384-512)/52500×52000+512=16233,不是16228。

归一化公式:x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel),0e-对应Blacklevel=512,52000e-对应Whitelevel=16228。

不考虑噪声,x(n)在0.0-1.0之间,0.0对应0.7V,1.0对应3.3V。如果14位定点运算,x(n)是0-16383,如果16位定点运算,x(n)是0-65535。

考虑噪声,x(n)会有负值和大于1.0的值。

本帖最后由 rivershaw 于 2019-7-22 18:56 编辑
[260 楼] iZaZaD [泡菜]
19-7-22 17:11
rivershaw 发表于 2019-7-20 06:12
canon存的RAW的确是原始数据,但用原始数据还原出原始信号,是要做归一化处理的。
如果用浮点运算,归一化后的信号是x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)。
如果16bit定点运算,不做限幅处理是,x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)*32767,限幅处理是,x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)*65535,

sony的A7R3存的RAW是对原始的Whitelevel归一化的数据,假定原始数据是X(n),RAW存储的是x(n)=X(n)/原始Whitelevel*16383。
原始的Blacklevel=546,原始的Whitelevel=15360,处理后保存的RAW,Blacklevel=512,Whitelevel=16383。

Nikon以前有的照相机保存的RAW是归一化后的,x(n)=(X(n)-原始Blacklevel)/(原始Whitelevel-原始Blacklevel)*16383,处理后的x(n),Blacklevel=0,Whitelevel=16383,可以用直方图的色阶缺失推测出原始的Blacklevel、Whitelevel。


我又想不通了。。。

能不能拿个实际例子给说一下转换过程?

比如,SONY的传感器IMX551 , 满肼容量52000,读出噪声1.762(姑且认为这个是所有噪声总和)。如果把这两个数字,对应为像素电路的输出电压数值,那么ADC采样怎么个过程呢?

我写一下,看看哪里有问题:

假设像素电路最大输出电压3.3V (对应相当于势肼量52500e-) ,最小0.7V (对应势肼量0e-) 。

ADC 最高输出数值 16384 ,对应势肼量3.3V / 54000e-;问题1:用数值512去对应0.7V / 0e-?

这样对应关系为:

512  ~~~ 0 e-
16384  ~~~ 52500e~

16228 ~~ 52000e~

归一化后,0~15716 对应整个数值范围 (0.7V / 0e-)  ~ (3.3V / 54000e-) ?

[259 楼] iZaZaD [泡菜]
19-7-21 06:00
rivershaw 发表于 2019-07-20 14:17
不是!

归一化是还原原始信号的过程,是线性的转换,而Gamma是非线性的。...


一觉醒来,突然想明白了。
本帖由安卓客户端发布
[258 楼] rivershaw [泡菜]
19-7-20 14:17
iZaZaD 发表于 2019-7-20 07:02
这样做的结果,相当于是在原有数据曲线中间截取一段,然后暗部压黑,亮部提亮,实质上是做了一次gamma校正?


不是!

归一化是还原原始信号的过程,是线性的转换,而Gamma是非线性的。
[257 楼] iZaZaD [泡菜]
19-7-20 07:02
rivershaw 发表于 2019-07-20 06:12
canon存的RAW的确是原始数据,但用原始数据还原出原始信号,是要做归一化处理的。
如果用浮点运算,归一化后的信号是x(n)=(...


这样做的结果,相当于是在原有数据曲线中间截取一段,然后暗部压黑,亮部提亮,实质上是做了一次gamma校正?

本帖由安卓客户端发布
[256 楼] 1400700226 [泡菜]
19-7-20 06:25
围观
[255 楼] rivershaw [泡菜]
19-7-20 06:12
iZaZaD 发表于 2019-7-20 05:35
感觉上当了…

原以为RAW存了A/D转换的原始数据,实际显示出来的却是掐头去尾重新整编了的…


canon存的RAW的确是原始数据,但用原始数据还原出原始信号,是要做归一化处理的。
如果用浮点运算,归一化后的信号是x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)。
如果16bit定点运算,不做限幅处理是,x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)*32767,限幅处理是,x(n)=(X(n)-Blacklevel)/(Whitelevel-Blacklevel)*65535,

sony的A7R3存的RAW是对原始的Whitelevel归一化的数据,假定原始数据是X(n),RAW存储的是x(n)=X(n)/原始Whitelevel*16383。
原始的Blacklevel=546,原始的Whitelevel=15360,处理后保存的RAW,Blacklevel=512,Whitelevel=16383。

Nikon以前有的照相机保存的RAW是归一化后的,x(n)=(X(n)-原始Blacklevel)/(原始Whitelevel-原始Blacklevel)*16383,处理后的x(n),Blacklevel=0,Whitelevel=16383,可以用直方图的色阶缺失推测出原始的Blacklevel、Whitelevel。
[254 楼] iZaZaD [泡菜]
19-7-20 05:35
rivershaw 发表于 2019-07-20 04:17
反复说归一化,你还是没明白,

BlackLevel对应最小信号0.0,WhiteLevel对应最大信号1.0,在...


感觉上当了…

原以为RAW存了A/D转换的原始数据,实际显示出来的却是掐头去尾重新整编了的…
本帖由安卓客户端发布
[253 楼] rivershaw [泡菜]
19-7-20 04:17
iZaZaD 发表于 2019-7-19 21:21
有点儿不明白,BlackLevel=512 = 2^9 , WhiteLevel=16000 ≈2^14 ,意思是说,实际只采样了大约5EV的动态范围?


反复说归一化,你还是没明白,

BlackLevel对应最小信号0.0,WhiteLevel对应最大信号1.0,在不考虑量化噪声的情况下,1.0/0.0,可测出的动态范围是无穷大。

考虑到14bit量化的量化噪声,动态范围才有14-15EV的限制。

量化台阶数是16000-512=15488,大约13.9EV,

[252 楼] iZaZaD [泡菜]
19-7-19 21:21
rivershaw 发表于 2019-07-19 14:11
假定CMOS的输出电流为0.0-1.0mA,对其A/D首先要确定边界,0.0mA对应Blacklevel,1.0mA对应Whitel...


有点儿不明白,BlackLevel=512 = 2^9 , WhiteLevel=16000 ≈2^14 ,意思是说,实际只采样了大约5EV的动态范围?
本帖由安卓客户端发布
[251 楼] 无际 [泡菜]
19-7-19 19:46
iZaZaD 发表于 2019-7-19 19:02
相当老师?多累啊,不拿出点知识来别人不一定认。我觉得您不如一边找个凉快地儿,时不时上来窥探一下我的回帖里有没有漏儿,然后当个笑话笑一下,这多轻松。

现在到了打趣时间吗?

我偷窥到了您的无知!哈哈哈哈

知之为知之 不知为不知 是知也
[250 楼] iZaZaD [泡菜]
19-7-19 19:02
无际 发表于 2019-07-19 18:13
我斗胆再批评一次吧

您还在概念混用 这是懂和不懂的区别 不是思考够与不够的事情 在不懂的路上继续思考 只会更加不懂

学生表扬...


相当老师?多累啊,不拿出点知识来别人不一定认。我觉得您不如一边找个凉快地儿,时不时上来窥探一下我的回帖里有没有漏儿,然后当个笑话笑一下,这多轻松。
本帖由安卓客户端编辑于:2019-07-19 19:02:50
[249 楼] 无际 [泡菜]
19-7-19 18:13
iZaZaD 发表于 2019-7-19 17:37
您终于说点有用的话了,口头表扬一下。

您说的这个概念混用问题,回头我思考思考。

欢迎继续讨论类似内容。

我斗胆再批评一次吧

您还在概念混用 这是懂和不懂的区别 不是思考够与不够的事情 在不懂的路上继续思考 只会更加不懂

学生表扬老师?笑话!一件小事 就看出你品格
[248 楼] iZaZaD [泡菜]
19-7-19 17:37
无际 发表于 2019-07-19 17:23
忍不住又要厚着脸皮帮你了

严格说来 A /D转换器的精度和分辨率 是两个慨念 精度是A/D转换器的误差 分辨率是才是你要用的词
...


您终于说点有用的话了,口头表扬一下。

您说的这个概念混用问题,回头我思考思考。

欢迎继续讨论类似内容。
本帖由安卓客户端发布
[247 楼] rivershaw [泡菜]
19-7-19 17:33
iZaZaD 发表于 2019-7-19 14:38
输出结果肯定是两个系统叠加的效果。 所以我才有最初的疑问,14位采样的“万用表” 这么去测量15位动态范围的“电压” 。 我自己的结论前边也说了,现在重新再表述一下你看对不对:  结合数学统计方法,14位的“万用表”可以测出来15位动态范围的“电压”,但是只对一次测量的数据只能有14位的精度;也就是一张14位采样的照片文件里,只能有14级的亮度色阶,出不来15档。


对!
[246 楼] rivershaw [泡菜]
19-7-19 17:31
iZaZaD 发表于 2019-7-19 14:31
这么说就理解的透彻多了。

不过,A/D电路输出的应该是电压信号,不是电流,跟CCD不一样。

JPG图片输出的应该是归一化的数值,也就是第三张图这样的,是不是意味着拿jpg图片的μ、σ计算信噪比是不恰当的?


如果统计JPEG的信噪比,也是用均值、标准差,但JPEG的噪声与动态范围完全没有关系,

RAW到JPEG经过了许多线性、非线性的运算,原来的RAW噪声,特性已经发生了变化,相关原理可以参考噪声通过系统后的分析,简单说,可能就不是均匀分布的噪声了,所以统计JPEG噪声意义不大,但有人就这么做,还发表了不少论文。

[245 楼] 无际 [泡菜]
19-7-19 17:23
iZaZaD 发表于 2019-7-19 14:38
输出结果肯定是两个系统叠加的效果。 所以我才有最初的疑问,14位采样的“万用表” 这么去测量15位动态范围的“电压” 。 我自己的结论前边也说了,现在重新再表述一下你看对不对:  结合数学统计方法,14位的“万用表”可以测出来15位动态范围的“电压”,但是只对一次测量的数据只能有14位的精度;也就是一张14位采样的照片文件里,只能有14级的亮度色阶,出不来15档。

忍不住又要厚着脸皮帮你了

严格说来 A /D转换器的精度和分辨率 是两个慨念 精度是A/D转换器的误差 分辨率是才是你要用的词

同理 14bit照片的色阶是2的14次方 也就是16384级 不是14级

先把基础概念弄懂多么重要 不然没法交流

[244 楼] iZaZaD [泡菜]
19-7-19 14:38
rivershaw 发表于 2019-7-19 14:19
严格来说,被测电压可以看成是一个系统的输出,肯定有它的动态范围。

而万用表作为一个系统,也有自己的动态范围。


输出结果肯定是两个系统叠加的效果。 所以我才有最初的疑问,14位采样的“万用表” 这么去测量15位动态范围的“电压” 。 我自己的结论前边也说了,现在重新再表述一下你看对不对:  结合数学统计方法,14位的“万用表”可以测出来15位动态范围的“电压”,但是只对一次测量的数据只能有14位的精度;也就是一张14位采样的照片文件里,只能有14级的亮度色阶,出不来15档。
[243 楼] iZaZaD [泡菜]
19-7-19 14:31
rivershaw 发表于 2019-7-19 14:11
假定CMOS的输出电流为0.0-1.0mA,对其A/D首先要确定边界,0.0mA对应Blacklevel,1.0mA对应Whitelevel。

就是说,当CMOS的输出电流为0.0mA时,A/D(14bit)转换出来是512(Blacklevel),1.0mA转换出来是16000(Whitelevel)。

未出校门的大学生可以会设计A/D的Blacklevel=0,Whitelevel=16383,

叠加噪声后,0.0mA可能变成-0.01mA到+0.01mA随机变化,A/D出来就是在512附近波动,均值μ=512,噪声是σ。



对Blacklevel、Whitelevel归一化后,分布规律不变,均值μ=0,噪声还是σ。



如果对负值限幅为0,分布规律变了,均值μ不再是0,噪声也不是σ了。这种情况就不能用μ、σ计算信噪比了。



这么说就理解的透彻多了。

不过,A/D电路输出的应该是电压信号,不是电流,跟CCD不一样

JPG图片输出的应该是归一化的数值,也就是第三张图这样的,是不是意味着拿jpg图片的μ、σ计算信噪比是不恰当的?
[242 楼] rivershaw [泡菜]
19-7-19 14:19
iZaZaD 发表于 2019-7-19 09:41
我觉得这个说法不太对。。。

用万用表去测量电压,动态范围是被测电压的,而不是万用表的,万用表只有量程和精度; 同样道理,温度计也是测量工具,只有量程和精度,动态范围是被测物体的温度波动范围。如果温度计的输出值是14位采样数字,那么14位只代表它的测量精度,而且是对它自己量程的换算精度,跟被测物体的温度范围没什么关系。 被测物的温度变动范围有可能大于温度计的测量范围,也可能小于。

同样道理,CMOS传感器的动态范围,是指传感器中用于感应光线并把光线转换成电信号的那部分器件的动态范围 ,而不是测量输出这个信号的A/D模块的测量范围。 早期的A/D转换器是设置在CMOS传感器外部的,CMOS输出的只是模拟量信号,也就是像素把光信号转换后的电压幅值信号。 A/D转换电路只有量程和精度。 现在的CMOS大多数都把A/D转换电路做到CMOS半导体上了,再提CMOS的动态范围就是A/D转换电路的动态范围。

ADC电路跟温度计不一样的是,它只有一个用途和专门的被测对象,所以它的量程设计成跟被测量变量的变化范围很接近。 所以14位的采样精度的这个“温度计”,可以用于测量12.6  13.7 14.8 15EV 这些“被测量” ...


严格来说,被测电压可以看成是一个系统的输出,肯定有它的动态范围。

而万用表作为一个系统,也有自己的动态范围。
[241 楼] 无际 [泡菜]
19-7-19 14:16
iZaZaD 发表于 2019-7-19 14:15
喜欢围观别人胡扯?有毛病啦,注意身体。

我还会继续回帖的。

我担心的是您的心理健康 才斗胆冒犯

认真是好事 但认真不等于正确 我会继续关注的
[240 楼] iZaZaD [泡菜]
19-7-19 14:15
无际 发表于 2019-7-19 14:09
你胡扯 我当笑话看 何来不舒服?


喜欢围观别人胡扯?有毛病啦,注意身体。

我还会继续回帖的。
[239 楼] rivershaw [泡菜]
19-7-19 14:11
iZaZaD 发表于 2019-7-19 08:19
我这脑子有点儿转不过来,能否详细解释一下?


假定CMOS的输出电流为0.0-1.0mA,对其A/D首先要确定边界,0.0mA对应Blacklevel,1.0mA对应Whitelevel。

就是说,当CMOS的输出电流为0.0mA时,A/D(14bit)转换出来是512(Blacklevel),1.0mA转换出来是16000(Whitelevel)。

未出校门的大学生可以会设计A/D的Blacklevel=0,Whitelevel=16383,

叠加噪声后,0.0mA可能变成-0.01mA到+0.01mA随机变化,A/D出来就是在512附近波动,均值μ=512,噪声是σ。



对Blacklevel、Whitelevel归一化后,分布规律不变,均值μ=0,噪声还是σ。



如果对负值限幅为0,分布规律变了,均值μ不再是0,噪声也不是σ了。这种情况就不能用μ、σ计算信噪比了。


[238 楼] 无际 [泡菜]
19-7-19 14:09
iZaZaD 发表于 2019-7-19 14:01
是不是让你感觉非常不舒服?

你胡扯 我当笑话看 何来不舒服?
[237 楼] urin1010 [泡菜]
19-7-19 14:08
dr并不等于宽容度,各位先去了解这个基本概念,后面的问题就会逐渐清晰。dr是一个工作范围,正确理解只是一个响应区间而已,但是干的好不好不是看有没有响应。
[236 楼] iZaZaD [泡菜]
19-7-19 14:01
无际 发表于 2019-7-19 13:55
说了你不是理科生 你非要硬撑着


是不是让你感觉非常不舒服?