偏心率的数学定义
禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P312
区域的拟合椭圆看这里。
Rafael Gonzalez的二阶中心矩的表达不说人话。
我认为半长轴和半短轴不等于特征值,而是特征值的根号。我认为Rafael Gonzalez的图11.21和式(11-23)错了(请廖老师指正)。
因此,用特征值表示椭圆的离心率 e e e的表达式应该是:
e = c a = a 2 − b 2 a e = \frac{c}{a} = \frac{\sqrt{a^2 - b^2}}{a} e=ac=aa2−b2
这里, e e e是离心率, c c c是中心到焦点的距离,而 a a a和 b b b分别是椭圆的半长轴和半短轴的长度。
代入特征值:
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λ1−s2λ2=λ1λ1−λ2
λ 1 \lambda_1 λ1和 λ 2 \lambda_2 λ2分别为最大特征值和最小特征值。 s s s表示几个 σ \sigma σ,偏心率与这个尺度无关。
偏心率为:
e = 1 − λ 2 λ 1 e = \sqrt{1 - \frac{\lambda_2}{\lambda_1}} e=1−λ1λ2
离心率 e e e是衡量椭圆相对于圆的“拉伸”程度的一个量。离心率 e e e的范围是从 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给出的结果,看样子MATLAB给出了拟合椭圆是使用 2 σ 2\sigma 2σ。
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