阅读视图

发现新文章,点击刷新页面。
🔲 ⭐

LEGO 42083 Bugatti Chiron with PF+RC 乐高布加迪奇龙

我的拖延症又犯了,五月份拍的照片,一直到现在才把它们整理出来 😥 这盒布加迪也是我最近三年以来买的唯一一盒乐高了(好像还有 21309)。

这次的 Bugatti Chiron with PF+RC 当然是在官方套装 LEGO 42083 的基础上改装的啦,搭下来感觉中规中矩,仅仅是老老实实地使用 PF 件接替了动力、转向、变速箱的控制而已,而且我翻了翻官方的搭建手册,似乎原始结构设计中还有不少可玩性很高的细节?反正我在搭建这个 PF+RC 版本的过程中是没有感受到任何惊喜之处…… 更多具体的介绍和玩家评测可以到 Brickset 去参观,我这里仅把一些基本参数列一下,其他就不再啰嗦啦。

在开始贴照片前先放几张 Bugatti Chiron 的实物图吧 ↓

© SAUD AL-OLAYAN
© SAUD AL-OLAYAN
© Alex Holyoake

当然还有那段非常有名的「0-400-0 km/h」视频:


好了,背景交代完了,接下来我们就正式开始吧。以下图片有裁剪及压缩,原图请跳转至我的 Flickr

不能免俗的盒子照片 ▲▼
轮毂特写以及装上轮胎后的样子 ▲▼
说明书中在搭建手册之前的若干页宣传照 ▲▼
后桥模组
前桥+部分底盘。最前面的伺服舵机用于转向控制,替换了官方套装中的手动转向零件。前桥和底盘构成了一个整体,不像后桥那样可以模块化装卸
后桥+部分底盘。两个 XL 电机用于动力输出,四驱,不过并没有直接传递到四个轮子上,而是经过一个2速的变速器进行齿轮比调节
变速器部分,由一个手动拨杆控制齿轮比切换。不知道为什么对于这样一台超跑模型作者却选择把 XL 电机的功率全用在扭矩上了,即使是高速档也没比之前的 Marauder 快上多少
引擎部分。近端的那两个 L 型支架是我为了摆拍临时加上的
车身的前半部分。能看到大致的车舱框架了
车身的后半部分。四轮独立悬挂看得很清楚啦
前后部分组合完成
装上电池仓和两个红外接收器(图中被挡住了)。我手上没有原作中采用的 SBrick,只好用两个红外进行替代了
W16引擎的俯视角度
车屁股。尾翼可以手动抬升和降下。那一根红色的橡胶棍用来模拟真车的尾灯还是蛮传神的 ▲▼
正后方角度
座椅的拟真花了不少篇幅
装上前脸和车灯部分,外观基本就搭建完成了 ▲▼
个人感觉尾部的设计比前脸更加精彩 ▲▼
几张前后45度的定妆照 ▲▼
驾驶室的细节。可以看见方向盘下方的一组红外接收器

42083 本身就属于那种颜值大于结构的套装嘛,所以在入手之前我其实就已经对它的机械结构设计不抱太多的期望了。不过,就冲这个外形和配色,我还是给它4.5/5分的评价吧~

完。

🔲 ☆

数字图像传感器的噪声模型及标定

这篇文章里有超多公式,建议在横向分辨率大于 1920px 的屏幕上阅读。

目录

0. 写在前面

这篇文章应该是博客里到目前为止最枯燥的一篇了……

写这篇文章的原因有二:一是在我的学位论文中有一部分内容需要涉及图像噪声模型,正好这几天读完 Radiometric CCD Camera Calibration and Noise Estimation,权当记录备忘;二是因为搜了一圈发现目前网上基本没有对相机传感器噪声的数学模型进行详尽介绍的中文资料,所以也算是做一点微小的工作,填补这一块的空白吧 🙄

实际上,对于 CV 领域内大部分应用来说,$f=\mu+\epsilon$ 这种经典的模型已经足以对图像的像素值进行表征了。但是对于一些更偏工程、需要与相机硬件直接打交道的应用,往往还需要对成像过程中各阶段引入的噪声进行更加具体的建模和分析,从而将其最大程度抑制。正因如此,我默认阅读这篇文章的读者都具备辐射度学、相机成像原理、图像处理以及统计学的相关基础知识。

此外,图像噪声这一领域并不是我的研究方向,文中难免存在一些瑕疵或错误,欢迎指正。

1. 相机响应值构成模型

在分析信号中的噪声之前,我们当然首先需要搞明白信号究竟是如何构成的。

不管是 CMOS 也好 CCD 也好,图像传感器的本质都是将光信号转换为电信号。对于图像传感器上的单个感光单元(有叫作 collection site 的,或者 photosensory cell,或者 sensor element,总之指的是「单个像素」)来说,其感光后由光电效应释放出的电子个数 $I$ 可以表示为

\begin{equation} I = T\int_\lambda\int_x\int_y\,E(x,y,\lambda)\,S(x,y)\,q(\lambda)\,\textrm{d}x\,\textrm{d}y\,\textrm{d}\lambda \label{eq:electrons_num} \end{equation}

其中 $x$、$y$ 表示该单元的二维位置坐标,$\lambda$ 是波长,$T$ 为积分时间(假设所有的参数在快门帘开启的这段时间内均不随时间变化),$E(x,y,\lambda)$ 为该单元内光敏面处的光谱辐照度(incident spectral irradiance),$S(x,y)$ 表示感光单元的灵敏度空间波动,$q(\lambda)$ 为相机的光电转换函数。

从量纲角度分析会更好理解一些:积分时间 $T$ 的单位为 $s$,光谱辐照度 $E$ 的单位为 $W/(m^2\cdot{}nm)$,$S$ 无量纲,光电转换函数 $q$ 的单位为 $e^-/(J\cdot{}nm)$(在指定波长上每吸收1焦耳能量能释放出的电子个数),因此有 $s\cdot{}(J\cdot{}s^{-1}\cdot{}m^{-2})\cdot{}(e^-\cdot{}J^{-1})\cdot{}nm^{-1}\cdot{}m^2\cdot{}nm = e^-$。

我们注意到,式 \eqref{eq:electrons_num} 中的 $x$、$y$ 均被限制在了单个感光单元内,在这么小的面积内,可以认为各个参数均不随位置变化而变化,因此位置坐标 $x$、$y$ 可以被省略。式 \eqref{eq:electrons_num} 被简化为

\begin{equation} I = T\overline{S}A\int_\lambda\,E(\lambda)\,q(\lambda)\,\textrm{d}\lambda \label{eq:electrons_num_simple} \end{equation}

其中 $\overline{S}$ 表示 $S(x,y)$ 在单个感光单元内的期望值(均值),$A$ 表示单个感光单元的有效感光面积。

此外,感光单元内光谱辐照度和被摄物体表面的光谱辐亮度(spectral radiance)之间还满足如下关系:

\begin{equation} E(\lambda) = \frac{\pi}{4F^2}UL(\lambda)t(\lambda) \label{eq:radiance2irradiance} \end{equation}

其中 $F$ 是相机的相对孔径(也就是摄影领域中的那个光圈数 F),$L(\lambda)$ 为物方平面上被摄物体表面的光谱辐亮度,$t(\lambda)$ 为整个相机系统的光谱透过率函数(包括镜头、低通滤镜、Bayer filters 等等),$U$ 是一个由 vignetting、shading 等因素导致的空间非均匀性调制函数,无量纲。

式 \eqref{eq:electrons_num_simple} 的原理不展开说了,感兴趣的话可以简单参考一下下图。
单透镜理想光学系统成像模型
$\mathrm{d}A_o$ 表示物体表面微元, $\mathrm{d}A_s$ 表示 CMOS 平面上对应的像方微元

所以,联立式 \eqref{eq:electrons_num_simple} 与 \eqref{eq:radiance2irradiance},有:

\begin{equation} I = \frac{\pi}{4F^2}TS_rAU\int_\lambda\,L(\lambda)\,t(\lambda)\,q(\lambda)\,\textrm{d}\lambda \label{eq:formation} \end{equation}

式 \eqref{eq:formation} 就是数字相机将空间光信号转化为电荷信号的理想物理模型。

式 \eqref{eq:radiance2irradiance} 里的 $U$ 显然是一个偷懒的简化。

实际上,很多文献里都会提到,$L(\lambda)$ 与 $E(\lambda)$ 之间满足那个著名的 cos 四次方定理:

\begin{equation*} E(\lambda)\approx\frac{\pi}{4F^2}cos^4(\alpha)L(\lambda)t(\lambda) \label{eq:cos4} \end{equation*}

其中 $F$ 是光圈数(焦距/光阑直径),$\alpha$ 是某个像素对应的主光线相对于光轴的偏离角。这个照度的四次方衰减定律一般也称为自然渐晕(natural vignetting)。

然而,对于一个真实的相机系统来说,CMOS 平面上的照度非均匀性可不仅仅是 cos 四次方衰减那么简单,必然还包含了各种复杂的原因,比如光学渐晕(optical vignetting)、镜头设计时人为加入的照度调制等等(参考下图)。所以为了不失一般性(好吧说实话,其实是因为这种复杂的非均匀性基本不可能给出解析表达式),我直接简单粗暴地把 $cos^4$ 以及其他的非均匀调制统一丢到这个 $U$ 里去了。
Luminance shading

在这之后,感光单元内产生的电荷信号将经由放大电路(调 ISO 其实就是在调节放大电路的增益系数)进行放大,并经 ADC 转换为数字信号缓存在 RAM 中,待后续存储或调用:

\begin{equation} D = round\left(\frac{g^\prime{}I + V_\mathrm{offset}}{\eta}\right) \label{eq:amplify} \end{equation}

其中 $g^\prime$ 表示模拟电路的增益倍数,$V_\mathrm{offset}$ 是人为加入的一个偏置电压,通常可以通过这种方式来避免小于零的输出信号被 ADC 截零从而改变噪声分布的对称性(一些相机的暗电流就是这么来的),$\eta$ 是 ADC 中的量化步长(quantization step),单位为 $volts/DN$(DN 就是 digital number,表示数字信号的数值,理论上是无量纲的,但是为了表述方便通常会人为给它加上一个量纲),与相机所使用的位深(bit-depth,平时我们说一幅图像是8位的或者12位的或者14位的,指的就是这个位深)有关,$round(\cdot)$ 则表示 ADC 的取整过程。

最后这个输出的数字信号 $D$,我习惯称之为相机的原始响应值(raw response),也就是相机 raw 图像中可以直接读出的那个数字大小。一些资料里也习惯把它称作 DN (digital number) 或 ADU (analog-to-digital units)。

感光单元释放出的电荷如何进入 ADC 这一细节有待确定。老一些的相机,尤其是 CCD 相机,似乎会为传感器阵列的每一行配备一个寄存器,每个寄存器接收一整行感光单元传来的电荷后再统一传给放大器,各行间并行处理;但是对于新一些的 CMOS,甚至会为每一个像素单独配置一个寄存器和放大器,所有信号的处理以像素为单位并行,从而大幅缩短两次采集之间的间隔。此外,现在的一些相机还会为传感器配置两组具有不同电容的感光单元电荷输出电路,从而在电信号进入放大电路之前就有两组电压值可供切换,即所谓的 Dual Native ISO 技术。

最后,联立式 \eqref{eq:formation} 和 \eqref{eq:amplify},我们就得到了完整的光信号到数字信号的理想转换模型,或者说是理想的数字信号构成模型(response formation model):

\begin{equation} D = round\left[g\,TS_rAU\int_\lambda\,L(\lambda)\,t(\lambda)\,q(\lambda)\,\textrm{d}\lambda + D_\mathrm{offset}\right] \label{eq:response_model} \end{equation}

显然,这里有 $g=g^\prime/\eta$,$D_\mathrm{offset}=V_\mathrm{offset}/\eta$,我把它们分别叫作综合增益数字偏置量($D_\mathrm{offset}$ 基本就是相机的暗电流数值啦)。

2. 图像噪声来源

第一节中讲的一大堆内容都是理想情况下的成像过程,而在实际情况中,以上光信号 $\rightarrow$ 电信号 $\rightarrow$ 数字信号的过程中必然存在着噪声。

由于图像噪声中既存在空间无关噪声也存在空间相关噪声,所以在对图像传感器的噪声进行建模之前,我们需要把各感光单元所处的位置坐标也考虑进来。将式 \eqref{eq:response_model} 扩展到整个传感器平面上,可以写作〔其实就是在式 \eqref{eq:response_model} 的每个符号后面加上位置坐标 $(i,j)$ 而已~〕:

\begin{equation} \begin{split} D(i,j) = round\bigg[&Tg(i,j)S_r(i,j)A(i,j)U(i,j)\int_\lambda\,L(\lambda)\,t(i,j,\lambda)\,q(i,j,\lambda)\,\textrm{d}\lambda\bigg.\\[.5em] \bigg.& + D_\mathrm{offset}(i,j)\bigg] \end{split} \label{eq:spatial_response_model} \end{equation}

接下来,我们来看一下相机成像过程中存在的几类主要噪声:

● 像素响应非均匀性

由于制造加工过程中的一些原因,传感器各个感光单元之间在有效感光面积、光电转换效率、非均匀性、滤色片光谱透过率等指标上往往存在一定的差异。这种像素之间的差异通常被称为像素响应非均匀性(pixel response non-uniformity, PRNU)。严格意义上 PRNU 应该属于「系统误差」而不是「噪声」,但是出于表述方便的需求我仍然把它划分到传感器噪声的范畴里啦。

稍微做一些简化,如果不考虑波长 $\lambda$ 上的偏差,那么对于某一个感光单元,可以使用非均匀性分布函数

\begin{equation} K(i,j) = \frac{g(i,j)}{g_0}\frac{\overline{S}(i,j)}{\overline{S}_0}\frac{A(i,j)}{A_0}\frac{t(i,j)}{t_0}\frac{q(i,j)}{q_0} \label{eq:prnu} \end{equation}

来表征该感光单元的整体制造误差,其中 $g_0$ 表示一个理想的、无任何制造误差的感光单元所对应的综合增益,$\overline{S}_0$、$A_0$、$t_0$、$q_0$ 同理。在现有的半导体制造工艺下, $K$ 的数值仅在单位强度附近很小的一段区间内波动,因此有

\begin{equation} \overline{E}(K) = 1\,,\qquad\overline{\mathrm{var}}(K)\ll 1 \label{eq:prnu_prop} \end{equation}

这里的 $\overline{E}(\cdot)$ 和 $\overline{\mathrm{var}}(\cdot)$ 分别表示在空间维度上计算均值(mean)与样本方差(sample variance),下同。

💡 各个像素的 $K(i,j)$ 其实在相机出厂时就已经确定了,并不是一个随机变量,所以只能计算均值与样本方差,不存在数学期望或者方差之说;而后文中的一些噪声属于随机变量,因此可以计算数学期望与方差。期望与均值、方差与样本方差之间的区别需要特别注意一下。

把式 \eqref{eq:prnu} 代入式 \eqref{eq:spatial_response_model} 后,有

\begin{equation} D(i,j)=round\left[g_0K(i,j)U(i,j)I_0+D_\mathrm{offset}(i,j)\right] \label{eq:spatial_response_model_with_prnu} \end{equation}

其中

\begin{equation} I_0 = \frac{\pi{}T}{4F^2}\overline{S}_0A_0\int_\lambda\,L(\lambda)t_0(\lambda)q_0(\lambda)\,\mathrm{d}\lambda \label{eq:I0} \end{equation}

表示一个理想的、无任何制造误差的感光单元理论上释放出的电子数。这个 $I_0$ 在后文中会多次出现。

● 热噪声

光电转换器件的热效应将产生一定数量的服从泊松分布的自由电子,从而使信号出现一定程度的波动,因此此类噪声也被称为热噪声(thermal noise)$N_{Th}$ 。热噪声的强度仅取决于曝光时间 $T$ 以及环境温度,而与光电效应产生的电子数 $I$ 无关。

热噪声是一个随机变量,根据泊松分布的性质有

\begin{equation} E(N_{Th}) = \mathrm{var}(N_{Th}) = \mu_{Th} \label{eq:thermal_noise_prop} \end{equation}

其中 $\mu_{Th}$ 是一个与曝光时间及环境温度有关的变量,$E(\cdot)$、$\mathrm{var}(\cdot)$ 分别表示计算数学期望(expectation)与方差(variance),下同。

把热噪声考虑进来后,式 \eqref{eq:spatial_response_model_with_prnu} 就变成了

\begin{equation} D(i,j)=round\big\{g_0\left[K(i,j)U(i,j)I_0+N_{Th}(i,j)\right]+D_\mathrm{offset}(i,j)\big\} \label{eq:spatial_response_model_with_thermal_noise} \end{equation}

● 散粒噪声

根据量子理论,从感光单元中释放出的电子在数量上存在一个随机的涨落,该涨落即为散粒噪声(photon shot noise)$N_S$。散粒噪声是由大量单个事件的统计不确定性引起的,其中主要包括输入光子散粒噪声、光生电流散粒噪声与热效应散粒噪声。散粒噪声的存在使得感光单元最终释放出的有效电子数服从泊松分布:$(I^\ast+N_S)\sim{}Poisson(I^\ast)$,其中 $I^\ast=KUI_0+N_{Th}$ 表示在不考虑散粒噪声的情况下该感光单元应释放出的电子个数。

由于泊松分布有 $E(x)=\mathrm{var}(x)=\lambda$ 的性质,那么对于加入散粒噪声后的信号 $(I^\ast+N_S)$ 而言,有

\begin{equation} E(I^\ast+N_S) = \mathrm{var}(I^\ast+N_S) = I^\ast = KUI_0+N_{Th} \label{eq:signal_with_shot_noise_charact} \end{equation}

因此对于散粒噪声自身而言,有

\begin{equation} E(N_S) = 0\,,\qquad{}\mathrm{var}(N_S) = I^\ast = KUI_0+N_{Th} \label{eq:shot_noise_charact} \end{equation}

把散粒噪声考虑进来后,式 \eqref{eq:spatial_response_model_with_thermal_noise} 就变成了

\begin{equation} \begin{split} D(i,j)=round\Big\{&g_0\big[K(i,j)U(i,j)I_0+N_{Th}(i,j)+N_S(i,j)\big]\Big.\\[.6em] \Big.& + D_\mathrm{offset}(i,j)\Big\} \end{split} \label{eq:spatial_response_model_with_shot_noise} \end{equation}

● 固定模式噪声

对于 CMOS 来说,其各个感光单元所对应的模拟电路中有可能存在一定的噪声,此类噪声通常被称为固定模式噪声(fixed pattern noise, FPN)$N_{FP}$。固定模式噪声与像素响应非均匀性类似,均属于系统误差,两者的区别在于,固定模式噪声是由电路的制造误差引起的,与光电效应无关,且通常呈现出比较明显的空间分布规律。

把固定模式噪声考虑进来后,式 \eqref{eq:spatial_response_model_with_shot_noise} 就变成了

\begin{equation} \begin{split} D(i,j)=round\Big\{&g_0\big[K(i,j)U(i,j)I_0+N_{Th}(i,j)+N_S(i,j)+N_{FP}(i,j)\big]\Big.\\[.6em] \Big.& + D_\mathrm{offset}(i,j)\Big\} \end{split} \label{eq:spatial_response_model_with_fpn} \end{equation}

● 读出噪声

信号放大单元把模拟电压信号进行放大的过程中会引入一定的读出噪声(read-out noise)$N_R$。读出噪声的期望为零,其方差与放大单元的增益系数 $g$ 成线性正相关。

把读出噪声考虑进来后,式 \eqref{eq:spatial_response_model_with_fpn} 就变成了

\begin{equation} \begin{split} D(i,j)=round\bigg\{&g_0\Big[K(i,j)U(i,j)I_0+N_{Th}(i,j)+N_S(i,j)+N_{FP}(i,j)\Big.\bigg.\\[.2em] \bigg.\Big.& + N_R(i,j)\Big] + D_\mathrm{offset}(i,j)\bigg\} \end{split} \label{eq:spatial_response_model_with_readout_noise} \end{equation}

● 量化误差

由于 ADC 输出的数字信号需要以整数的形式存储在寄存器中,因此这一连续信号转化为离散信号的过程中必然会引入一定的量化误差(quantization error)$N_Q$(一些文献中也称为取整误差)。若进入模数转换单元的模拟电压信号等概率地分布于实数轴上,则量化误差将服从区间 $[-\tfrac{1}{2}, \tfrac{1}{2}]$ 内的均匀分布,即 $N_Q\sim{}\mathcal{U}(-\tfrac{1}{2}, \tfrac{1}{2})$,因此有

\begin{equation} E(N_Q) = 0\,,\qquad{}\mathrm{var}(N_Q) = \tfrac{1}{12} \label{eq:quantization_error_charact} \end{equation}

把量化误差考虑进来后,式 \eqref{eq:spatial_response_model_with_readout_noise} 就变成了

\begin{equation} \begin{split} D(i,j) & = g_0\Big[K(i,j)U(i,j)I_0 + N_{Th}(i,j) + N_S(i,j) + N_{FP}(i,j) + N_R(i,j)\Big]\\[.8em] & + D_\mathrm{offset}(i,j) + N_Q(i,j) \end{split} \label{eq:noise_model} \end{equation}

这个就是带有噪声项的数字相机原始响应值构成模型。再次注明一下,$I_0$ 代表的是一个完美的感光单元理论上释放出的电子数〔见式 \eqref{eq:I0}〕。

显然,由于热噪声、散粒噪声、读出噪声、量化误差均为随机变量,因此式 \eqref{eq:noise_model} 中的原始响应值 $D$ 也是一个随机变量。

把以上六种噪声或者误差的统计特性进行了一个简单的整理,如下表所示。

噪声来源符号分布类型期望/样本均值方差/样本方差
像素响应非均匀性$K$$\overline{\mu}_K=1$$\overline{\sigma}_K^2\ll{}1$
固定模式噪声$N_{FP}$$\overline{\mu}_{FP}$ 未知$\overline{\sigma}_{FP}^2$未知
热噪声$N_{Th}$泊松分布$\mu_{Th}$ 未知$\sigma_{Th}^2$ 未知
散粒噪声$N_S$泊松分布(有效信号+散粒噪声)$\mu_S=0$$\sigma_S^2=KUI_0+N_{Th}$
读出噪声$N_R$未知$\mu_R=0$$\sigma_R^2$ 未知
量化误差$N_Q$均匀分布$\mu_Q=0$$\sigma_Q^2=\tfrac{1}{12}$

3. 噪声估计与误差修正

如果只是要了解图像噪声的来源和大致特性的话,看完上面一节就够了。这一节谈一下如何对传感器的噪声进行参数估计,以及如何利用估计出的噪声参数对像素响应非均匀性(PRNU)以及固定模型噪声(FPN)这两类系统误差进行修正。

为什么我们需要大费周章地对图像传感器的噪声和误差进行分析呢?首先,在进行对成像精度有很高要求的图像处理时,我们希望能够把相机当作严格的测量仪器而不是一个简单的光信号传感器。既然是测量仪器,那么系统的可靠性和测量结果的可复现性自然是一个重要的性能评价指标,因此系统误差的标定和修正就成为了一个必不可少的步骤。其次,如果不通过建模的手段对噪声和误差的参数进行估计,那么当相机的拍摄参数改变时,或者当场景发生变化时(因为噪声与电子数有关,而电子数与场景自身的辐射特性有关),已有的标定信息将不可避免地失效。因此这一「建模+参数估计」的过程实际上是将相机的标定流程从离线切换至了在线,从而允许我们更加灵活地对系统进行修正。

不过呢,因为推导过程需要引入传感器平面的位置坐标,所以这一节里的各种公式可能看起来并不是那么友好 😳

这一节中所有与空间位置有关的参数都将显式地用 $(i,j)$ 进行表示。若不带该空间坐标则表示该参数为一位置无关的常量。

3.1 一点准备工作:噪声的分解

为了后续推导的需要,我们需要把式 \eqref{eq:noise_model} 中的原始响应值 $D(i,j)$ 拆解为两部分:第一部分 $\mu(i,j)$ 表示其中的直流项(也就是信号的期望),第二部分 $N(i,j)$ 表示由随机变量构成的噪声项:

\begin{equation} D(i,j) = \mu(i,j) + N(i,j) \label{eq:decomposition0} \end{equation} \begin{equation} \left\{ \begin{split} \mu(i,j) & = g_0\Big[K(i,j)U(i,j)I_0 + N_{FP}(i,j) + \mu_{Th}\Big] + D_\mathrm{offset}(i,j)\\[.5em] N(i,j) & = g_0\Big[N_{Th}(i,j) – \mu_{Th} + N_S(i,j) + N_R(i,j)\Big] + N_Q(i,j) \end{split} \right. \label{eq:decomposition} \end{equation}

显然,$N(i,j)$ 是一个期望为零的随机变量,且根据前文,它的方差可以表示为

\begin{equation} \sigma_N^2(i,j) = g_0^2\left[\sigma_S^2(i,j)+\sigma_R^2\right] + \sigma_Q^2 \label{eq:noise_variance} \end{equation}

💡 式 \eqref{eq:noise_variance} 中第二个等式里,热噪声 $N_{Th}$ 的方差正好等于它的期望(因为是泊松分布),因此两项相减恰好为零;读出噪声的方差 $\sigma_R^2$ 是一个全局常数,与感光单元所处的位置无关,因此可以省略位置坐标 $(i,j)$。

另外,既然都写到这里了,那就顺带推导一下信噪比的计算公式吧。

信噪比(signal-noise-ratio)定义为信号强度的平方 $\mu^2$ 与方差 $\sigma^2$ 之比,因此有

\begin{equation*} \begin{split} S/N & = 10\log_{10}\left[\frac{E\left(D^2\right)}{E\left(\sigma_N^2\right)}\right] = 20\log_{10}\left[\frac{\mu}{E(\sigma_N)}\right]\\[1em] & = 20\log_{10}\Bigg\{\frac{g_0\left(KUI_0 + N_{FP} + \mu_{Th}\right)}{E\left[\sqrt{g_0^2\left(\sigma_S^2+\sigma_R^2\right)+\sigma_Q^2}\,\right]}\Bigg\} \end{split} \label{eq:snr} \end{equation*}

计算信噪比的时候不妨忽略空间非均匀性调制函数 $U$ 和小量 $\sigma_Q^2$,也不考虑 PRNU 和 FPN 两种系统误差,并假设暗电流偏置为零,此时,上式可以简化为

\begin{equation*} \begin{split} S/N & = 20\log_{10}\bigg(\frac{I_0 + \mu_{Th}}{\sqrt{I_0 + \mu_{Th} +\sigma_R^2}}\bigg) \end{split} \label{eq:snr0} \end{equation*}

由此我们可以得出那个众所周知的结论:要提高图像的信噪比,只能增加传感器上收集的电子数。调节增益 $g_0$ 或者一味地增加位深都是没有任何帮助的(cf. Noise, Dynamic Range, and Bit Depth)。而要增加电子数,要么延长积分时间 $T$,要么改进光电转换函数 $q$ 使其具有更高的转换效率。

另外,从信噪比公式其实也可以得出结论:对于处理 raw 图像的同学来说,前期拉高 ISO(增大 $g_0$)和后期调节图像亮度其实并没有本质区别。

进一步地,根据噪声与电子数 $I$ 之间的相关性,式 \eqref{eq:decomposition} 中的噪声项 $N(i,j)$ 可以再被拆解为与电子数相关噪声 $N_I(i,j)$ 以及与电子数无关噪声 $N_C(i,j)$:

\begin{equation} \left\{ \begin{split} N_I(i,j) & = g_0N_S(i,j)\\[.8em] N_C(i,j) & = g_0\left[N_{Th}(i,j) + N_R(i,j) – \mu_{Th}\right] + N_Q(i,j) \end{split} \right. \label{eq:noise_decomposition} \end{equation}

根据散粒噪声的特性,有:

\begin{equation} \begin{split} \sigma_I^2(i,j) & = g_0^2\sigma_S^2(i,j)\\[.8em] & = g_0^2\left[K(i,j)U(i,j)I_0(i,j) + N_{Th}(i,j)\right] \end{split} \label{eq:photon_dependent_noise} \end{equation}

同时,根据前文还有

\begin{equation} \sigma_C^2(i,j) = g_0^2\left(\mu_{Th} + \sigma_R^2\right) + \frac{1}{12} \label{eq:photon_independent_noise} \end{equation}
正如上面提到的,热噪声的期望与读出噪声的方差均与感光单元所处的位置无关,因此 $\mu_{Th}$ 与 $\sigma_R^2$ 可省略位置坐标。此外,需要注意一下,$N_C(i,j)$ 的表达式 \eqref{eq:noise_decomposition} 中减号右边的那个 $\mu_{Th}$ 是一个常数项,所以在计算方差时得到的其实就是零。

3.2 整体噪声估计

在对图像传感器的系统误差进行估计之前,我们需要先对整体噪声水平 $N(i,j)$ 进行参数估计,而 $N(i,j)$ 的参数当然指的就是它的方差 $\sigma_N^2(i,j)$ 啦。

正如渐晕图片里显示的那样,即使对于完全均匀的场景,传感器不同区域也会对应于不同的照度,从而对应不同的释放电子数。对于位于传感器的中心与边缘的两个感光单元来说,两者有可能相差数倍以上。因此从这一小节开始,对于实际噪声的参数估计,若无特别说明,均指对于传感器某一特定区域进行计算。若要对整个传感器进行标定,可先分区域处理($5\times5$ 或者 $7\times7$ 一般就够了),最后再对各区域的参数进行插值从而得到全局的噪声参数估计。

对一台相机在原始响应值上的最终噪声进行估计通常有两种方法,一是采集两幅 raw 图像 $D_1(i,j)$ 及 $D_2(i,j)$,并在其差值图像的基础上进行噪声方差估计;二是采集多幅图像,然后在均值图像的基础上进行估计。第一种方法涉及的计算稍微麻烦一些,所以我就只介绍第二种方法啦。

在对整体噪声方差 $\sigma_N^2(i,j)$ 进行估计之前,我们需要先计算一下期望值 $\mu(i,j)$。显然,一种最简单的方法就是在时域上对带噪声的信号进行平滑。

假如我们对着同一固定场景使用完全相同的参数拍摄 $n$ 张图像,那么有

\begin{equation} \left\{\begin{split} D_1(i,j) & = \mu_1(i,j) + N_1(i,j)\\[.5em] & \vdots\\[.5em] D_{n}(i,j) & = \mu_{n}(i,j) + N_{n}(i,j) \end{split}\right. \label{eq:multiple_images} \end{equation}

由于噪声项 $N(i,j)$ 具有 $E\left[N(i,j)\right] = 0$ 的特性,而当图像数量 $n$ 足够大时,我们可以使用样本均值作为数学期望的一致性近似。因此,$\mu(i,j)$ 的一致性估计结果也就可以通过在时域上计算均值的方法得到:

\begin{equation} \begin{split} \widehat{\mu}(i,j) & \approx \widetilde{E\,}\left[\mu(i,j)\right]\\[.5em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}\mu_p(i,j)\\[.5em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_p(i,j) – \tfrac{1}{n}\sum\nolimits_{p=1}^{n}N_p(i,j)\\[.5em] & \approx \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_p(i,j) – E\left[N(i,j)\right]\\[.5em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_p(i,j) \end{split} \label{eq:mu_estimator} \end{equation}

式中的 $\widetilde{E\,}(\cdot)$ 表示在时域中计算均值(temporal mean),下同。

接着,我们使用 $\widetilde{\mathrm{var}}\left[N(i,j)\right]$ 作为 $\mathrm{var}\left[N(i,j)\right]$ 的近似,从而得到 $\sigma_N^2(i,j)$ 的一致性估计:

\begin{equation} \begin{split} \widehat{\sigma}_N^2(i,j) & \approx \widetilde{\mathrm{var}}\left[N(i,j)\right]\\[.8em] & = \widetilde{\mathrm{var}}\left[D(i,j)\right]\\[.8em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}\left[D_p(i,j)-\widehat{\mu}(i,j)\right]^2 \end{split} \label{eq:overall_noise_estimator} \end{equation}

式中的 $\widetilde{\mathrm{var}}(\cdot)$ 表示在时域中计算样本方差(temporal sample variance),下同。

我使用这种方法对 Nikon D3x 和 SONY A7 两台相机 G 通道的整体噪声方差 $\sigma_N^2(i,j)$ 进行了估计,结果如下图所示。实验时我使用均匀白板作为拍摄对象,并根据 ISO 的不同对光源的强度进行了调解以确保 raw 图像中的响应值尽可能占满有效位深,同时将拍摄张数 $n$ 设定为16。

Nikon D3x 的 $\widehat{\sigma}_N^2(i,j)$
曝光时间固定为 1/8s,14-bit 位深
SONY A7 的 $\widehat{\sigma}_N^2(i,j)$
曝光时间固定为 1/8s,12-bit 位深

3.3 综合增益系数的估计

接下来我们讨论一下如何通过拍照的方式对相机的综合增益 $g_0$ 进行估计。这部分的内容会稍微 tricky 一些~

由于 $N_I$ 与 $N_C$ 之间不存在相关性,因此整体随机噪声的方差 $\sigma_N^2$ 可被分解为两部分:

\begin{equation} \begin{split} \sigma_N^2(i,j) & = \sigma_I^2(i,j) + \sigma_C^2(i,j)\\[.6em] & = g_0^2\left[K(i,j)U(i,j)I_0 + N_{Th}(i,j)\right] + \sigma_C^2 \end{split} \label{eq:overall_noise_decomposition} \end{equation}

接下来要划重点啦~ 对于式 \eqref{eq:decomposition} 中的 $\mu(i,j)$,我们可以对等号两侧同时计算局部空间均值(local spatial mean),那么有

\begin{equation} \begin{split} \overline{E}^w\left[\mu(i,j)\right] & = g_0\left\{\overline{E}^w\left[K(i,j)U(i,j)\right]I_0 + \overline{E}^w\left[N_{FP}(i,j)\right] + \mu_{Th}\right\}\\[.6em] & + \overline{E}^w\left[D_\mathrm{offset}(i,j)\right] \end{split} \label{eq:mu_local_spatial_mean} \end{equation}

这里的符号 $\overline{E}^w\left[x(i,j)\right]$ 表示以 $(i,j)$ 坐标为中心,在 $w\times{}w$ 的窗口内对矩阵 $\mathbf{x}$ 进行空间均值滤波(在实际操作时其实就是用一个所有元素都相同的 $w\times{}w$ 核对 $\mathbf{x}$ 进行卷积)。

下面简单说一下这一步空间均值滤波的用处。我们知道,非均匀性函数 $U(i,j)$ 的空间变化整理来说是十分缓慢的(看上图),因此当窗口尺寸 $w$ 不是太大时,可认为该窗口内的 $U(i,j)$ 是一个常数,不妨就叫作 $\overline{U}^w$ 吧。另一方面,当 $w$ 比较大时,这一窗口内包含的像素数就足够多了,因此在一个足够大的窗口内对 $K(i,j)$、$N_{Th}(i,j)$ 以及 $D_\mathrm{offset}(i,j)$ 计算均值,得到的结果也可以认为是位置无关的,并且根据上文有

\begin{equation} \left\{ \begin{split} \overline{E}^w\left[K(i,j)\right] & \approx 1\\[.4em] \overline{E}^w\left[N_{Th}(i,j)\right] & \approx \mu_{Th}\\[.4em] \overline{E}^w\left[D_\mathrm{offset}(i,j)\right] & \approx \mu_\mathrm{offset}\\ \end{split} \right.\qquad{}\mathrm{if}\ w \mathrm{\ is\ large\ enough} \label{eq:local_spatial_means} \end{equation}

这里的 $\mu_\mathrm{offset}$ 表示响应值偏置量的期望值(暗电流!),可以从传感器的参数手册里查到,或者用 Dcraw 之类的软件获得。

同样的道理,对于式 \eqref{eq:overall_noise_decomposition},我们也可以对等号两侧同时同时计算局部空间均值,有

\begin{equation} \overline{E}^w\left[\sigma_N^2(i,j)\right] = g_0^2\left\{\overline{E}^w\left[K(i,j)U(i,j)I_0\right] + \overline{E}^w\left[N_{Th}(i,j)\right]\right\} + \sigma_C^2 \label{eq:overall_noise_local_spatial_mean} \end{equation}

所以,只要我们选取一个合适的不大不小的( 😳 )窗口尺寸 $w$,然后把式 \eqref{eq:local_spatial_means} 分别代入式 \eqref{eq:mu_local_spatial_mean} 和式 \eqref{eq:overall_noise_local_spatial_mean} 中,就可以得到

\begin{equation} \left\{ \begin{split} \overline{\mu}^w(i,j) & = g_0\left[\overline{U}^w(i,j)I_0 + \overline{N}_{FP}^w(i,j) + \mu_{Th}\right] + \mu_\mathrm{offset}\\[.5em] \overline{\sigma_N^2}^w(i,j) & = g_0\left[\overline{U}^w(i,j)I_0 + \mu_{Th}\right] + \sigma_C^2 \end{split} \right. \label{eq:mu_vs_overall_noise} \end{equation}

观察上式就会发现,如果把 $\overline{\mu}^w(i,j)$ 当作自变量 $x$,把 $\overline{\sigma_N^2}^w(i,j)$ 当作因变量 $y$,那么两者之间其实显然满足 $y=ax+b$ 的直线方程,其中斜率就是 $g_0$,而截距是 $\sigma_C^2 – g_0\mu_\mathrm{offset} – g_0^2\overline{N}_{FP}^w(i,j)$:

\begin{equation} \overline{\sigma_N^2}^w(i,j) = g_0\overline{\mu}^w(i,j) + \left[\sigma_C^2 – g_0\mu_\mathrm{offset} – g_0^2\overline{N}_{FP}^w(i,j)\right] \label{eq:mu_vs_overall_noise_formula} \end{equation}

所以呢,只要我们能够获得足够多的 $(x,y)$ 样本点,那么自然就可以通过直线拟合的方式确定斜率 $g_0$ 了。实际操作时,可以通过改变光源亮度的方式获得 $n$ 组不同的 $D(i,j)$,然后对式 \eqref{eq:mu_estimator} 和式 \eqref{eq:overall_noise_estimator} 进行卷积得到局部均值图像,从而得到 $n$ 组 $\left[\overline{\mu}^w(i,j),\ \overline{\sigma_N^2}^w(i,j)\right]$ 坐标,接着在使用最大似然估计对 $g_0$ 进行计算。

改变光源亮度这一操作对于实验环境的要求比较苛刻,因为大多数标准光源基本上都不允许对亮度进行调节,即使能够调节,也很难保证相对光谱功率不发生变化。此外再澄清一点,图像的张数 $n$ 和窗口尺寸 $w$ 这两个符号在上下文中可能会多次出现,我故意不对它们加以区分,否则公式读起来实在太不友好了…… 大家自行区分吧,它们在不同小节中都是独立存在的。

但是呢,用这种拟合的方式去估计 $g_0$ 会出现一个问题:式 \eqref{eq:mu_vs_overall_noise_formula} 中自变量和因变量都是带有位置坐标 $(i,j)$ 的,因此最终估计出的综合增益 $g_0$ 也必定是位置相关的。而在前文我们说了,$g_0$ 表示的是一个理想的、无任何制造误差的感光单元所对应的综合增益,所以我们还需要对估计出的 $g_0(i,j)$ 求一个平均值以获得最终的综合增益估计值 $\widehat{g}_0$。

对于 Nikon D3x 和 SONY A7 两台相机使用这种方法估计出的综合增益 $g_0$ 如下图所示。实验中我选取的窗口尺寸 $w=15$,光源等级数 $n=8$。

Nikon D3x 的三通道综合增益 $\widehat{g}_0$
SONY A7 的三通道综合增益 $\widehat{g}_0$

3.4 暗电流噪声的估计

在前文中我并没有严格地对「暗电流」这个名词进行定义,这里补充解释一下。

如果我们在完全黑暗(光子数为零)的条件下使用相机进行拍摄,那么式 \eqref{eq:decomposition} 可以改写为

\begin{equation} \left\{ \begin{split} \mu_\mathrm{dark}(i,j) & = g_0N_{FP}(i,j) + g_0\mu_{Th} + D_\mathrm{offset}(i,j)\\[.5em] N_\mathrm{dark}(i,j) & = g_0\Big[N_{Th}(i,j) + N_{S,\mathrm{dark}}(i,j) + N_R(i,j) – \mu_{Th}\Big] + N_Q(i,j) \end{split} \right. \label{eq:decomposition_dark} \end{equation}

显然,这里的 $\mu_\mathrm{dark}(i,j)$ 对应了相机在未接收到任何光信号情况下对应的数字响应值期望,因此也通常被称为暗电流(dark current)或者黑电平(black level)。在很多场合我们提起相机的暗电流通常指的是一个具体的数字,比如像下面这张图中 Dcraw 检测到的两台相机 darkness 分别为0和128,但是在需要严格标定的情况下,相机的暗电流噪声应该是一个关于各个像素坐标 $(i,j)$ 的函数,$\mu_\mathrm{dark}(i,j)$,而不是一个简单的常数。在这篇文章中,我认为相机的固定模式噪声 $N_{FP}(i,j)$ 和响应值偏置量 $D_\mathrm{offset}(i,j)$ 共同组成了暗电流噪声,当然,还包括热噪声期望 $\mu_{Th}$ 以及综合增益 $g_0$。

Dcraw 检测出的两台相机的暗电流数值大小

估计暗电流噪声 $\mu_\mathrm{dark}(i,j)$ 当然再简单不过啦,利用 $E\left[N_\mathrm{dark}(i,j)\right]=0$ 这个性质,我们只需要在全黑环境下拍摄 $n$ 幅图像然后取一下均值,就可以得到关于暗电流噪声的一致性估计:

\begin{equation} \begin{split} \widehat{\mu}_\mathrm{dark}(i,j) & \approx \widetilde{E\,}\left[\mu_\mathrm{dark}(i,j)\right]\\[.5em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_{\mathrm{dark},p}(i,j) – \tfrac{1}{n}\sum\nolimits_{p=1}^{n}N_{\mathrm{dark},p}(i,j)\\[.5em] & \approx \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_{\mathrm{dark},p}(i,j) – E\left[N_\mathrm{dark}(i,j)\right]\\[.5em] & = \tfrac{1}{n}\sum\nolimits_{p=1}^{n}D_{\mathrm{dark},p}(i,j) \end{split} \label{eq:dark_current_estimator} \end{equation}

下面两幅图是我使用这种方法对两台相机 G 通道估计出的暗电流噪声 $\widehat{\mu}_\mathrm{dark}(i,j)$,这里的拍摄张数 $n$ 我设定为16。由于暗电流噪声中包含了固定模式噪声,因此在下图中其实已经可以明显地看出 $\widehat{\mu}_\mathrm{dark}(i,j)$ 中的 pattern 是存在一定的空间规律的,比如 Nikon D3x 的噪声就呈现出纵向相似性和横向相异性。

Nikon D3x 的 $\widehat{\mu}_\mathrm{dark}(i,j)$
曝光时间固定为 1/8s,ISO100,$\mu_\mathrm{offset}=0$
SONY A7 的 $\widehat{\mu}_\mathrm{dark}(i,j)$
曝光时间固定为 1/8s,ISO100,$\mu_\mathrm{offset}=128$

3.5 像素响应非均匀性的估计

最后,我们再讨论一下如何对像素响应非均匀性 $K(i,j)$ 进行估计。

这一小节的方法其实和图像处理中的空间滤波有异曲同工之处,因为虽然 $K(i,j)$ 与 $U(i,j)$ 看似结合在了一起共同影响了最终的响应值,但我们可以利用它们空间频率存在差异这一性质对其进行解耦。

为表达方便起见,我首先令 $e(i,j) = K(i,j)U(i,j)I_0$。回想一下前文提到的一些性质,如果我们对 $e(i,j)$ 中各像素在一个 $w\times{}w$ 的邻域内计算均值,那么一方面,当 $w$ 足够小时,可认为在该窗口内的 $U(i,j)$ 为一常数〔因为 $U(i,j)$ 不含高频成分〕,不妨称作 $\overline{U}^w$;另一方面,当 $w$ 足够大时,该窗口内 $K(i,j)$ 的均值必定趋向于1〔因为 $K(i,j)$ 的数值总是在1附近浮动,可参考上文第2节〕。因此,我们只需要选取一个合适的窗口尺寸 $w$,就可以得到

\begin{equation} \overline{e}^w(i,j) = \overline{E}^w\left[e(i,j)\right] \approx \overline{U}^w(i,j)I_0 \label{eq:prnu_spatial_mean} \end{equation}

利用这个近似,就可以对 $K(i,j)$ 进行估计啦:

\begin{equation} K(i,j) \approx \frac{K(i,j)U(i,j)}{\overline{U}^w(i,j)} = \frac{e(i,j)}{\overline{e}^w(i,j)} \label{eq:prnu_estimator} \end{equation}

因此,和第3.3小节中 $g_0$ 的估计方法一样,只要获得足够多的 $x$ 和 $y$ 坐标〔也就是 $\overline{e}^w(i,j)$ 和 $e(i,j)〕$,我们就可以通过直线拟合的方式估计出一条斜率为 $K(i,j)$ 且经过原点的直线。实际操作时,仍然可通过改变光源亮度的方式获得 $n$ 组 $\left[\overline{e}^w(i,j),\ e(i,j)\right]$ 坐标。

为了避免拍摄物体表面存在的缺陷或污点对直线拟合造成干扰,可以在每次切换光源时稍微移动被摄物体,这样即使在 $n$ 组样本点中存在个别异常点,也很容易发现并剔除,从而保证结果的鲁棒性。

下面再讨论一下 $e(i,j)$ 的计算。

联立式 \eqref{eq:decomposition0} 和式 \eqref{eq:decomposition},有

\begin{equation} D(i,j) = g_0\left[e(i,j) + N_{FP}(i,j) + \mu_{Th}\right] + D_\mathrm{offset}(i,j) + N(i,j) \label{eq:response_reformula} \end{equation}

再一次地,利用 $E\left[N(i,j)\right]=0$ 这一性质,我们可以通过在同一条件下拍摄 $n$ 幅图像并计算均值的方式消去 $N(i,j)$:

\begin{equation} \begin{split} \widetilde{E}\left[D(i,j)\right] & = \tfrac{1}{n}\sum\nolimits_{p=1}^n{}D_p(i,j)\\[.6em] & \approx g_0\left[e(i,j) + N_{FP}(i,j) + \mu_{Th}\right] + D_\mathrm{offset}(i,j) \end{split} \label{eq:response_without_noise} \end{equation}

所以,联立式 \eqref{eq:response_without_noise} 和式 \eqref{eq:decomposition_dark} 就可以得到 $e(i,j)$ 的估计:

\begin{equation} \widehat{e}(i,j) \approx \frac{\tfrac{1}{n}\sum\nolimits_{p=1}^n{}D_p(i,j)-\widehat{\mu}_\mathrm{dark}(i,j)}{\widehat{g}_0} \label{eq:e_estimator} \end{equation}

下面两幅图是我对两台相机 G 通道中像素响应非均匀性 $K(i,j)$ 估计出的结果,这部分实验中我选用了 $n=16$ 以及 $w=15$。

Nikon D3x 的 $\widehat{K}(i,j)$
SONY A7 的 $\widehat{K}(i,j)$

References

🔲 ☆

LEGO Marauder 乐高掠夺者

好久没玩乐高啦,趁着这次国庆在家窝了七天把这款掠夺者给搭了出来。关于这个 Marauder 我事先其实并不了解,纯粹只是觉得外形挺酷的而且基本不需要补件所以就决定搭它了。更多的介绍可以跳转至维基百科,或者在 Top Gear 里搜 Marauder。

这款 Marauder 的零件组成对于科技玩家来说还是比较友好的,这次补件仅仅补了几个近几年新出的连接销,以及2个3×11的红色面板。当然还有一些特殊件比如扶梯这种,由于并不影响具体功能,而且淘宝上价格过于离谱,我也就直接放弃了。

简介:

图片有裁剪及压缩,原图请跳转至我的 Flickr

变速箱的搭建。这款变速箱只有两速(准确来说是2+N,允许切入空挡),非常紧凑,而且搭建过程中与底盘完全是一体的,并不像 Defender 110GT500 那样可以独立拆装。由于结构相对简单,调试难度也很小,搭完就能用
底盘框架。搭之前以为是刹车时自动亮灯,后来才知道是靠两个座椅间的那个 switch 开关 LED 灯组,感觉蛮鸡肋的…… 原图纸中共用了三组 LED,车尾2组+车头1组,由于缺件我只在车尾用了一组
车头。由于缺了几个2×1的红色斜砖,只能用透明砖替代了
▲▼ 前桥模组。结构非常紧凑和牢固。图中红色轴套+深灰色齿轮处是差速锁,把轴套往齿轮处拨动启用差速锁,此时左右两轮无法以不同转速转动;反之关闭。这是我第一次搭建这种结构的差速锁,之前一直以为差速锁是靠锁死两轮间的差速器来实现的。
装上前桥。比较费解的是这里居然为每边车轮使用了两个弹簧,导致最终的前轮避震非常硬。而且在后面会看到,这车的前部底盘设计得其实是比后轮更低的,这就导致在实际行驶过程中前轮的避震基本没什么用…… 建议使用灰色偏软的那套弹簧或者干脆改为一个轮子配一个弹簧
装上接收器后线束乱得不行。这套 MOC 的说明书有一个很大的问题就是搭建过程中不考虑走线次序,好几处都需要拆开才能把接收器连接线穿过去
▲▼ 底盘。后桥没有单独拍照,用的是跟前桥基本一样的差速锁结构
这里看得很清楚了,在设计阶段其实后轴就要比前轴低1个单位左右,但是由于后轮只使用了一个避震弹簧,所有落地之后这个高度差基本被平衡掉了。进入驾驶室的那个阶梯也被我魔改了一番……
6个轮子其实都不是说明书上的型号,原作的前后轮要比这张图中小一圈
▲▼ 落地之后底盘基本水平
方向盘可以活动,但并不是跟转向系统联动。从驾驶室中穿过的是驱动绞盘的 M 电机的连接线
这个就是驱动绞盘的轴了。这款的引擎盖打开方式蛮有意思,把那个黑色的键往下一压引擎盖就弹出来了
车屁股。那个阶梯我稍微改长了一点,原作只有两节
前脸。原作里绞盘拉着的是一个小的吊钩,我给换了个大的
前轮的独立悬挂。由于弹簧太硬了,可以看出悬挂基本都没有下沉,得用手用力压车身才能看出避震的效果
原作里前轮上方的那个三角形面板是红色的,我由于缺了一个,就干脆都改为黑色了……
底盘高度调节示意图。左右两侧各由一个 M 电机控制底盘升降,所以是可以单独调节两侧的底盘高度的
后轮的避震弹簧
前轮的避震弹簧
车尾 LED 灯组效果

简单说一下我对这个 MOC 的感想。这款 Marauder 在控制上并没有什么花哨的地方,而是采用了最稳妥的策略:一个电机控制一个动作。这种设计的好处是整车非常稳定,基本不需要任何的调校就可以跑起来,而且可以很容易地进行改造,即使关键部分缺件也总是能找到其他方式完成搭建;当然,坏处就是搭建的过程相对无趣,完全无法体会到像搭建 8043 或者 Defender 110 时那种被机构设计惊艳到的感觉。另外还有一点要提的就是,作者提供的搭建手册虽然印制非常精美,但是很多步骤却并不是最佳的搭建顺序,如果完全按手册上的顺序来搭建的话,简直就是变态级的难度(比如各个电机和接收器的控制线需要从车身中穿来穿去)。相比之下,我还是喜欢 Defender 110GT500 这种模块化的结构设计。

🔲 ⭐

Comparison of object-color and illuminant metamerism for digital image color correction

Paper (4,752K) Slides(6,547K)

Description

Metamerism is the phenomenon that two object colors, which are colorimetrically indistinguishable under one lighting and viewing condition, become distinguishable under another condition. Since the number of channels of an RGB camera is less than that required to represent the spectral information, the variation of either the captured object or the illuminant may introduce color reproduction errors when transforming device-dependent RGB values to device-independent stimuli. In this study, we collected and utilized a large spectral reflectance database to investigate the color reproduction errors corresponding to the object-color metamerism, and employed a spectrally tunable LED light source to generate spectral power distributions (SPDs) that were metameric to a specific illuminant to analyze the reproduction errors corresponding to the illuminant metamerism. The image quality assessment (IQA) metric was adopted to evaluate the degree of image distortion caused by the two types of metamerism. The IQA results indicate that, compared with the illuminant metamerism, the object-color metamerism has little impact on the accuracy of color correction, and consequently the acquisition of the SPD of the illuminant is the critical factor for high-fidelity color reproduction.

Figures

Figure 1. Schematic diagram of the reconstruction of the color corrected images $I_\textrm{ideal}$ as well as the distorted image $I_\textrm{OCM}^k$ by the object-color metamerism.
Figure 2.The SPDs of the 8 test illuminants (blue solid line) with the daylight metamers (black dashed line) and 4-channel LED metamers (red dotted line). From left to right, top to bottom: CIE-A, D50, D100, CWF, F8, TL84, LED, and iPhone Flash. Note that CIE-A and TL84 have no daylight metamer since their CCT are below 4000K.
Figure 3. The DCSCI scores of two degrees of the object-color metamerism and two types of the illuminant metamerism.

Publication

Reference

  • Andersen, C. F. and Connah, D. 2016. Weighted constrained hue-plane preserving camera characterization, IEEE Trans. Image Process, 25(9) 4329–4339.
  • Prasad, D. K. and Wenhe, L. 2015. Metrics and statistics of frequency of occurrence of metamerism in consumer cameras for natural scenes, J. Opt. Soc. Am. A., 32(7) 1390–1402.
  • Hung, P. 2002. Sensitivity metamerism index for digital still camera, Photonics Asia 2002, 4922(2002) 1–14.
  • Qiu, J. and Xu, H. 2016. Camera response prediction for various capture settings using the spectral sensitivity and crosstalk model, Appl. Opt., 55(25) 6989–6999.
  • Zhang, F., Xu, H. and Wang, Z. 2016. Spectral design methods for multi-channel led light sources based on differential evolution, Appl. Opt., 55(28) 7771–7781.
  • More…
Feel free to contact me with any suggestions/corrections/comments.
❌