Matlab - 计算沿有序周长的曲率

Matlab - calculate curvature along an ordered perimeter

我找到了一个小数学表达式来计算沿有序周长的曲率。我使用函数 bwboundaries 获得有序周长。

为了使用它,我开始定义三个坐标 p1、p2 和 p3,它们是列向量 x、y。

    % the part above extract the three coordinates into row vectors y,x.
    % That's why I flip and transpose them.

    p1=outlineCoords(i,:);
    p2=outlineCoords2;
    p3=outlineCoords3;

    p1 = fliplr(p1);
    p2 = fliplr(p2);
    p3 = fliplr(p3);

    p1 = p1.';
    p2 = p2.';
    p3 = p3.';

这是数学表达式:

curVec(i) = 2*det([p1-p3,p2-p1])/(norm(p1-p3)*norm((p2-p1)*norm(p2-p3)));

我不喜欢使用我不理解的东西。我认为对于我轮廓的每个点,它都适合一个通过 p1、p2 和 p3 的圆,并取半径的倒数,但我不明白为什么它给我曲率...

我用从蓝色到红色的颜色代码绘制曲率。

有人可以帮助我更好地理解我正在处理的事情!?

谢谢!

在向量微积分中,曲率与二阶导数有关。第一个是切线。您将不得不以神秘的方式反转该等式以显示它的推导;我做不到。但是,根据我已经知道的曲率,我已经多次得出那个公式和其他类似的公式。

这是关于该主题的微积分笔记。你看它与你的等式非常相似:

Calculus III - Curvature