去年年初有一段时间在做线激光测距的事情, 当时发现线激光成像质量不高 (事后发现是使用不当), 激光线光强不是呈现正态分布, 而是更接近于均匀分布, 遂考虑换一种线激光建模方式, 以期更精确地找到线激光中心, 最后通过调研了解到 "平顶激光" 的概念和一个平顶线激光中心检测算法. 该算法中需要求解一个 "平顶激光截面的数学模型", 论文中直接给出了结论. 我做了一番推导, 得出与论文一致的答案, 但略感方法有点笨拙, 不妨发布出来, 做抛砖引玉之用.
平顶激光截面数学模型
平顶激光截面的数学模型:
$$B(x) = {\begin{cases}
I_1 & {x \in \left[ 0, x_1 \right]} \\
I_2 & {x \in \left[ x_1, x_2 \right]} \\
I_1 & {x \in \left[ x_2, 1 \right]}
\end{cases}}$$
式中 $B(x)$ 为截面强度函数, $I_1$ 为背景的亮度, $I_2$ 为平顶激光的亮度 (显然有 $I_2> I_1$), $x_1$ 和 $x_2$ 为激光条纹的两侧坐标.
利用上述模型计算平顶激光截面的 1,2,3 阶灰度矩, 其中 $d = x_2 - x_1 > 0$:
$$\begin{cases} {\int_0^1 B \left( x \right){\text{d}}x = {I_1}\left( {1 + x_1 - x_2} \right) + {I_2}\left( {x_2 - x_1} \right)} = I_1\left( 1 - d \right) + I_2d\\ {\int_0^1 {{B^2}} \left( x \right){\text{d}}x = I_1^2\left( {1 + x_1 - x_2} \right) + I_2^2\left( {x_2 - x_1} \right)} = I_1^2\left( 1 - d \right) + I_2^2d\\ {\int_0^1 {{B^3}} \left( x \right){\text{d}}x = I_1^3\left( {1 + x_1 - x_2} \right) + I_2^3\left( {x_2 - x_1} \right)} = I_1^3\left( 1 - d \right) + I_2^3d \end{cases}$$
上面是理想模型的 1,2,3 阶灰度矩, 还可以直接在数字图像上求得平顶激光截面的 1,2,3 灰度矩, 不妨记为 $M_1, M_2, M_3$, 令两者相等可得:
$$ {\begin{cases} M_1 / w = I_1\left( 1 - d \right) + I_2d \\ M_2 / w = I_1^2\left( 1 - d \right) + I_2^2d \\ M_3 / w = I_1^3\left( 1 - d \right) + I_2^3d \end{cases}} $$
上式中 $w$ 为平顶激光截面的窗口宽度, 不妨记 $m_1 = M_1 / w, m_2 = M_2 / w, m_3 = M_3 / w$, 于是有:
$$ {\begin{cases}
m_1 = I_1\left( 1 - d \right) + I_2d \\
m_2 = I_1^2\left( 1 - d \right) + I_2^2d \\
m_3 = I_1^3\left( 1 - d \right) + I_2^3d
\end{cases}} $$
上式中 $m_1, m_2, m_3$ 是已知的, $I_1, I_2, d$ 是未知量. 三个方程, 三个变量, 可以求得:
$${\begin{cases}
I_1 = \frac{ - b - \sqrt {b^2 - 4ac }}{2a} \\
I_2 = \frac{ - b + \sqrt {b^2 - 4ac }}{2a} \\
d = x_2 - x_1 = \frac{m_1 - I_1}{I_2 - I_1}
\end{cases}}$$
其中,
$$\begin{cases}
{a = {m_2} - m_1^2} \\
{b = {m_1}{m_2} - {m_3}} \\
{c = {m_1}{m_3} - m_2^2}
\end{cases}$$
平顶激光截面数学模型参数求解
上面结论的推导颇有技巧性, 如下 (不知有无更简便的解法).
由 $m_1 = {I_1}\left( {1 - d} \right) + {I_2}d$, 可得 $d = \frac{m_1 - I_1}{I_2 - I_1}$.
将 $d = \frac{m_1 - I_1}{I_2 - I_1}$ 代入 $m_2 = I_1^2\left( 1 - d \right) + I_2^2d$, 可得:
$$\begin{aligned} m_2 &= I_1^2\left( {1 - \frac{m_1 - I_1}{I_2 - I_1}} \right) + I_2^2 \left(\frac{m_1 - I_1}{I_2 - I_1}\right) \\ &= I_1^2\left( {\frac{I_2 - m_1}{I_2 - I_1}} \right) + I_2^2 \left(\frac{m_1 - I_1}{I_2 - I_1}\right) \\ \end{aligned}$$
继续推得,
$$\begin{aligned} m_2 \left( I_2 - I_1 \right)
&= I_1^2\left( I_2 - m_1 \right) + I_2^2 \left( m_1 - I_1 \right) \\
&= I_1^2 I_2 - m_1 I_1^2 + I_2^2 m_1 - I_2^2 I_1 \\
&= m_1\left( I_2^2 - I_1^2 \right) -I_1 I_2 \left(I_2 - I_1\right)
\end{aligned}$$
因为 $I_1 \neq I_2$, 所以,
$$ m_2 = m_1 \left( I_1 + I_2 \right) - I_1 I_2 \tag{1}
$$
将 $d = \frac{m_1 - I_1}{I_2 - I_1}$ 代入 $m_3 = I_1^3\left( 1 - d \right) + I_2^3d$, 可得:
$$\begin{aligned} m_3 &= I_1^3\left( 1 - \frac{m_1 - I_1}{I_2 - I_1} \right) + I_2^3 \left(\frac{m_1 - I_1}{I_2 - I_1}\right) \\ &= I_1^3\left( {\frac{I_2 - m_1}{I_2 - I_1}} \right) + I_2^3 \left(\frac{m_1 - I_1}{I_2 - I_1}\right) \\ \end{aligned}$$
继续推得,
$$\begin{aligned} m_3 \left( I_2 - I_1 \right)
&= I_1^3\left( I_2 - m_1 \right) + I_2^3 \left( m_1 - I_1 \right) \\
&= I_1^3 I_2 - m_1 I_1^3 + I_2^3 m_1 - I_2^3 I_1 \\
&= m_1\left( I_2^3 - I_1^3 \right) - I_1 I_2 \left(I_2^2 - I_1^2\right)
\end{aligned}$$
因为 $I_1 \neq I_2$, 所以,
$$\begin{aligned} m_3
&= m_1 \left( I_1^2 + I_2^2 + I_1 I_2 \right) - I_1 I_2 \left(I_1 + I_2\right) \\
&= m_1 \left( \left(I_1 + I_2\right)^2 - I_1 I_2 \right) - I_1 I_2 \left(I_1 + I_2\right)
\end{aligned} \tag{2}$$
由式 (1) 和式 (2) 可得:
$$\begin{aligned}
I_1 + I_2 &= \frac{m_3 - m_1 m_2}{m_2 - m_1^2}\\
I_1 \times I_2 &= \frac{m_1m_3 - m_2^2}{m_2 - m_1^2}
\end{aligned}$$
令,
$$\begin{cases}
{a = {m_2} - m_1^2} \\
{b = {m_1}{m_2} - {m_3} } \\
{c = {m_1}{m_3} - m_2^2 }
\end{cases}$$
则
$$\begin{aligned}
I_1 + I_2 &= -\frac{b}{a}\\
I_1 \times I_2 &= \frac{c}{a}
\end{aligned}$$
又因为 $I_2> I_1$, 所以
$${\begin{cases}
I_1 = \frac{ - b - \sqrt {b^2 - 4ac }}{2a} \\
I_2 = \frac{ - b + \sqrt {b^2 - 4ac }}{2a} \\
\end{cases}}$$
参考
- [2017] 平顶线结构光的中心检测算法及光刀平面标定
更新历史
- 20210221 初版
- 20220321 更新