Bezier曲线反求控制点

2024-03-22 10:50
文章标签 曲线 bezier 控制点 反求

本文主要是介绍Bezier曲线反求控制点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bezier曲线反求控制点

做曲线拟合的时候,往往希望拟合的曲线通过数据点,这个推导一下Bezier曲线控制点的计算过程.

曲线公式

曲 线 : C ( u ) = ∑ i = 0 n B n , i ( u ) P i 基 函 数 : B n , i = n ! i ! ( n − i ) ! u i ( 1 − u ) n − i 曲线:C(u) = \sum^n_{i=0}B_{n,i}(u)P_i\\ 基函数:B_{n,i}=\frac{n!}{i!(n-i)!}u^i(1-u)^{n-i} 线C(u)=i=0nBn,i(u)PiBn,i=i!(ni)!n!ui(1u)ni

这里求解控制点,即C为已知信息,求解式中的P.

计算3次Bezier曲线控制点

曲线多项式:

C ( u ) = ∑ i = 0 3 B 3 , i ( u ) P i = ( 1 − u ) 3 P 0 + 3 ( 1 − u ) 2 u P 1 + 3 ( 1 − u ) u 2 P 2 + u 3 P 3 , 0 ≤ u ≤ 1 C(u) = \sum^3_{i=0}B_{3,i}(u)P_i=(1-u)^3P_0+3(1-u)^2uP_1+3(1-u)u^2P_2+u^3P_3,\quad 0\le u \le 1 C(u)=i=03B3,i(u)Pi=(1u)3P0+3(1u)2uP1+3(1u)u2P2+u3P3,0u1

写成矩阵方式:

C = B ∗ P C=B*P C=BP
式中:

B = [ 1 0 0 0 8 27 4 9 2 9 1 27 1 27 2 9 4 9 8 27 0 0 0 1 ] C = [ P 0 P 1 P 2 P 3 ] B = \left[ \begin{matrix} 1 & 0 & 0 & 0\\ \frac{8}{27} & \frac{4}{9} & \frac{2}{9} & \frac{1}{27}\\ \frac{1}{27} & \frac{2}{9} & \frac{4}{9} & \frac{8}{27}\\ 0 & 0 & 0 & 1\\ \end{matrix} \right]\\ C = \left[ \begin{matrix} P_0\\ P_1\\ P_2\\ P_3\\ \end{matrix} \right] B=1278271009492009294002712781C=P0P1P2P3
 
则 得到;
B − 1 C = B − 1 B ∗ P P = B − 1 C B^{-1}C=B^{-1}B*P\\ P = B^{-1}C B1C=B1BPP=B1C
即可计算得到相应的样条曲线控制点.

Python验证

取点位 C0(0,0) C1(0,2) C2(2,2) C3(2,0)

计算控制点P后,画出如下Bezier曲线:
在这里插入图片描述

黑色点为原始数据点;
红色点为计算得到的控制点;
蓝色曲线为由原始数据点直接拟合的Bezier曲线;
橘黄色为由控制点拟合的Bezier曲线;

这篇关于Bezier曲线反求控制点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/835154

相关文章

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

Matlab中BaseZoom()函数实现曲线和图片的局部放大

BaseZoom工具下载链接: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd=9dyl 提取码:9dyl 下载完之后将工具包放置合适的路径下,并在matlab中“设置路径”中添加相应的路径; 注:可以先运行如下图片中的语句,看看是否报错;如果报如下错误,说明matlab未安装“Image Processing Toolbox”工

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案,旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型,通过其强大的目标检测能力,能够实时识别并标记出包装盒纸板上的各种破损缺陷,如划痕、撕裂、孔洞等。 在系统中,首先需对包含破损缺陷的包装盒纸板图像进行数据采集和标注,形成训练数据集。随后,利用这些数据进行模型训练,使

基于yolov8的NEU-DET钢材缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的NEU-DET钢材缺陷检测系统是一种创新的解决方案,旨在通过深度学习技术实现对钢材表面缺陷的自动检测和识别。该系统利用YOLOv8算法,该算法以其高效、准确和实时检测的特点著称。 NEU-DET数据集为该系统提供了丰富的训练资源,涵盖了热轧带钢的六种典型表面缺陷,包括轧制氧化皮、斑块、开裂、点蚀表面、内含物和划痕,每种缺陷均有大量样本,确保了模型的全面性和准确性

基于yolov8的电动车佩戴头盔检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的电动车佩戴头盔检测系统利用了YOLOv8这一先进的目标检测模型,旨在提高电动车骑行者的安全意识,减少因未佩戴头盔而导致的交通事故风险。YOLOv8作为YOLO系列的最新版本,在检测速度和精度上均进行了优化,特别适用于处理复杂场景中的小目标检测。 该系统通过收集并标注包含电动车骑行者图像的数据集,对YOLOv8模型进行训练,使其能够准确识别骑行者是否佩戴头盔。在实

基于yolov8的西红柿缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿缺陷检测系统是一个利用深度学习技术的创新项目,旨在通过自动化和智能化的方式提高西红柿缺陷检测的准确性和效率。该系统利用YOLOv8目标检测算法,该算法以其高效性和准确性在目标检测领域表现出色。YOLOv8不仅继承了YOLO系列模型的优势,还引入了新的骨干网络、Anchor-Free检测头以及优化后的损失函数,这些改进使得模型在复杂环境下的检测性能更加优越。

基于yolov5的西红柿成熟度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的西红柿成熟度检测系统是一个利用先进深度学习技术的创新项目,旨在提高西红柿成熟度检测的准确性和效率。该系统以YOLOv5为核心算法,该算法由Ultralytics公司于2020年发布,并在YOLOv3的基础上进行了显著改进。YOLOv5以其高效性和准确性在实时目标检测领域备受关注,特别适用于农业视觉检测任务。 该系统通过收集并预处理大量不同成熟度的西红柿图像数据,

vs2022 如何去掉 错误|警告的波形曲线 绿色波浪线

如图: 去不去都一样,只是看着不舒服,相当不爽 工具→选项→文本编辑器→显示错误波形曲线,把前的√去掉,按确定 清爽多了,虽然没啥卵用 。。。

基于yolov8的水面垃圾水面漂浮物检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的水面垃圾与漂浮物检测系统是一种高效、智能的监测解决方案。该系统利用YOLOv8这一前沿的深度学习模型,结合智能视频分析技术,对河道、湖泊等水面的垃圾漂浮物进行实时监测与识别。 YOLOv8作为YOLO系列的最新迭代,以其高准确度和实时检测能力著称。通过复杂的网络架构、优化的训练流程和强大的特征提取能力,YOLOv8能够在各种光照和水质条件下,准确识别包括生活垃圾

C#中chart绘制曲线

官网资料:Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn 类的 Chart 两个重要属性是 Series 和 ChartAreas 属性,这两个属性都是集合属性。 Series集合属性存储Series对象,这些对象用于存储要显示的数据以及该数据的属性。 ChartAreas集合属性存储Char