我谈区域偏心率——Gonzalez错了

我谈区域偏心率——Gonzalez错了

偏心率的数学定义

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P312


区域的拟合椭圆看这里。


Rafael Gonzalez的二阶中心矩的表达不说人话。

半长轴和半短轴正比于特征值的根号。Rafael Gonzalez的图11.21和式(11-23)错了。

因此,用特征值表示椭圆的离心率e ee的表达式应该是:

e = c a = a 2 − b 2 a e = \frac{c}{a} = \frac{\sqrt{a^2 - b^2}}{a}e=ac=aa2b2
这里,e ee是离心率,c cc是中心到焦点的距离,而a aab bb分别是椭圆的半长轴和半短轴的长度。

代入特征值:

e = s 2 λ 1 − s 2 λ 2 s λ 1 = λ 1 − λ 2 λ 1 e = \frac{\sqrt{s^2\lambda_1 - s^2\lambda_2}}{s\sqrt{\lambda_1}} = \frac{\sqrt{\lambda_1 - \lambda_2}}{\sqrt{\lambda_1}}e=sλ1s2λ1s2λ2=λ1λ1λ2

λ 1 \lambda_1λ1λ 2 \lambda_2λ2分别为最大特征值和最小特征值。s ss表示几个σ \sigmaσ,偏心率与这个尺度无关。

偏心率为:
e = 1 − λ 2 λ 1 e = \sqrt{1 - \frac{\lambda_2}{\lambda_1}}e=1λ1λ2

离心率e ee是衡量椭圆相对于圆的“拉伸”程度的一个量。离心率e ee的范围是从 0(对于圆形)到接近但小于 1(对于非常扁平的椭圆)。对于圆形区域,λ 1 = λ 2 \lambda_1 = \lambda_2λ1=λ2,离心率为 0。对于直线,λ 2 = 0 \lambda_2 = 0λ2=0,离心率为 1。因此,这个描述符的值范围是[ 0 , 1 ] [0, 1][0,1]


马氏距离、PCA相同的理论基础

这与马氏距离、PCA本质上是一样的。相同的理论基础。


MATLAB的regionprops函数

MATLAB给出了拟合椭圆是使用2 σ 2\sigma2σ,为什么是2?





以下是MATLAB给出的结果。

ecc=sqrt(stats.MajorAxisLength^2-stats.MinorAxisLength^2)/stats.MajorAxisLength ecc=0.8416

验证

C=cov(samples);[U,D]=eig(C);d=diag(D);[~,order]=sort(d,'descend');U=U(:,order);d=d(order);% D = diag(d(order));sqrtd=sqrt(d);4*sqrtd ans=499.5233269.8259

为什么椭圆的协方差矩阵等于S \boldsymbol{S}S

在构造椭圆时,特意取了半轴a = 2 λ 1 , b = 2 λ 2 a=2\sqrt{\lambda_1}, b=2\sqrt{\lambda_2}a=2λ1,b=2λ2,这个系数2就是用来保证“椭圆内部”的协方差矩阵正好等于原协方差矩阵的。

a = c λ 1 , b = c λ 2 a=c\sqrt{\lambda_1}, b=c\sqrt{\lambda_2}a=cλ1,b=cλ2,那么椭圆内部协方差矩阵为:
Σ = c 2 4 S \boldsymbol{\varSigma} = \frac{c^2}{4}\boldsymbol{S}Σ=4c2S

只有当c = 2 c=2c=2时,才等于S \boldsymbol{S}S


一句话总结

c = 2 c=2c=2时椭圆区域的协方差矩阵等于原区域的协方差矩阵——这正是构造系数选择2 22的原因。