[bezier] Échantillonnage Bezier et BezierAlign du modèle ABCNet et implémentation de python


avant-propos

Qu'est-ce qu'une courbe de Bézier ?

Une courbe de Bézier est une courbe mathématique utilisée dans les applications graphiques bidimensionnelles. Définition de la courbe : point de départ, point d'arrivée (également appelé point d'ancrage), point de contrôle. En ajustant les points de contrôle, la forme de la courbe de Bézier change. En 1962, le mathématicien français Pierre Bézier a été le premier à étudier cette méthode de dessin vectoriel de courbes, et a donné une formule de calcul détaillée, de sorte que la courbe dessinée selon cette formule porte le nom de son nom de famille, appelé Courbe de Bézier.
La formule mathématique la plus primitive sur laquelle les courbes de Bézier sont basées est le polynôme de Bernstein. En termes simples, les polynômes de Bernstein peuvent être utilisés pour prouver que toutes les fonctions continues sur l'intervalle [a, b] peuvent être approximées par des polynômes, et la convergence est très forte, c'est-à-dire une convergence uniforme. C'est une fonction continue, vous pouvez l'écrire comme l'addition de plusieurs polynômes de Bernstein, et, comme n→∞, ce polynôme convergera uniformément vers la fonction d'origine, c'est la propriété d'approximation des Bernstein.
En 1959, le mathématicien français Paul de Casteljau, qui travaillait alors chez Citroën, a commencé à essayer de visualiser les polynômes de Bernstein et a fourni un algorithme de Casteljau numériquement stable. Selon cet algorithme, seuls quelques points de contrôle peuvent être utilisés pour générer des courbes lisses complexes, c'est-à-dire des courbes de Bézier.
Le nom de la courbe de Bézier est attribué à Pierre Bézier, un ingénieur français qui a travaillé pour Renault en 1962. Il a utilisé cette méthode pour aider la conception industrielle de la carrosserie de la voiture et largement médiatisée, c'est pourquoi tout le monde l'appelle une courbe de Bézier.
Les courbes de Bézier sont des courbes appliquées aux graphiques bidimensionnels. La courbe est composée de sommets et de points de contrôle, et la forme de la courbe peut être modifiée en modifiant les coordonnées des points de contrôle.

1. Polynômes de Bernstein

insérez la description de l'image ici

2. Courbe de Bézier

1. Courbe de Bézier du troisième ordre

insérez la description de l'image ici

2. La formule de dérivation de la courbe de Bézier du troisième ordre

insérez la description de l'image ici

3. Résolution de la courbe de Bézier du troisième ordre

Résolvez la courbe de Bézier en utilisant la méthode des moindres carrés : ici B est la valeur du polynôme de Bernstein ci-dessus, qui peut être déterminée par t. Ici t est déterminé par le rapport de la longueur du segment de ligne segmentée de la courbe à la polyligne du quadrilatère externe. Ici, b est le point de contrôle et p est l'étiquette d'origine du texte. Pour le cadre incliné, les points de contrôle sont de 8 points sur le côté long (respectivement 4 points sur les deux côtés); Tout d'abord, utilisez ces 14 points pour calculer les 8 points de contrôle initiaux, quatre sur les côtés supérieur et inférieur, puis utilisez la méthode des moindres carrés pour trouver les meilleurs points de contrôle, ce qui équivaut à un processus d'approximation, et enfin obtenir les points comme points de contrôle finaux.
insérez la description de l'image ici

4. Implémentation du code de la solution de la courbe de Bézier

Seule la solution de la courbe de Bézier du troisième ordre est écrite ici, et ainsi de suite pour les autres ordres ;

def bezier_to_poly(bezier):
        # bezier to polygon, 修改600可以获取采样点数量
        u = np.linspace(0, 1, 600)
        bezier = bezier.reshape(2, 4, 2).transpose(0, 2, 1).reshape(4, 4)
        points = np.outer((1 - u) ** 3, bezier[:, 0]) \
            + np.outer(3 * u * ((1 - u) ** 2), bezier[:, 1]) \
            + np.outer(3 * (u ** 2) * (1 - u), bezier[:, 2]) \
            + np.outer(u ** 3

Je suppose que tu aimes

Origine blog.csdn.net/m0_37661841/article/details/108749177
conseillé
Classement