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 的圆,并取半径的倒数,但我不明白为什么它给我曲率...
我用从蓝色到红色的颜色代码绘制曲率。
有人可以帮助我更好地理解我正在处理的事情!?
谢谢!
在向量微积分中,曲率与二阶导数有关。第一个是切线。您将不得不以神秘的方式反转该等式以显示它的推导;我做不到。但是,根据我已经知道的曲率,我已经多次得出那个公式和其他类似的公式。
这是关于该主题的微积分笔记。你看它与你的等式非常相似:
我找到了一个小数学表达式来计算沿有序周长的曲率。我使用函数 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 的圆,并取半径的倒数,但我不明白为什么它给我曲率...
我用从蓝色到红色的颜色代码绘制曲率。
有人可以帮助我更好地理解我正在处理的事情!?
谢谢!
在向量微积分中,曲率与二阶导数有关。第一个是切线。您将不得不以神秘的方式反转该等式以显示它的推导;我做不到。但是,根据我已经知道的曲率,我已经多次得出那个公式和其他类似的公式。
这是关于该主题的微积分笔记。你看它与你的等式非常相似: