Français
Forum

Kurve glätten

 

Walter
Köhler
allô Profaner j'ai un Problem et encore keinen Lösungsansatz. Problembeschreibung: j'emmène einer caméra un bewegtes objet sur, et registriere qui X/Y Koordinaten en dans einer liste. ensuite bilde Je l' Weg des objet mittels "Lineto" pour. So large si bien. Problem: qui Objektverfolgung ist pas très oui c'est ca, qui ligne number ist daher quelque chose tremblotant. j'ai einiges sur "glätten" gegoogelt, (Bezier etc, ) mais c'est mir de qui natte her trop hoch; sorry. Hat quelqu'un une concept comment je une unregelmäßige "zitterige" Kurve glätten peux Walter Profan 11.2

127 kB
Hochgeladen:21.09.2018
Downloadcounter107
Download
 
WKS Win XP Xprofan 10 AMD 1.6GHz 1GB Ram
21.09.2018  
 




RAW
Salut,

sans maintenant sur Execl o. ä. trop verweisen, bleibt avec profanen Mitteln seulement qui Possibilité, une eigenen filtre trop écrivons. Um Kurvenwerte trop glätten (engl. smooth) voulons wir maintenant la fois smoothen:

qui einfachste Weg est un gedachtes Quadrat, zum Beispiel 3 x 3 Kästchen (ou bien 5 x 5, usw.), ab dem aktuellen Wert pour vorne sur qui mögliche Kurve trop poser et den Mittelwert qui linken Reihe - qui mittleren Reihe et qui rechten Reihe auszurechnen. So volonté Ausreißer (pour +y / -y) geglättet. dans cette Kästchen peut aussi encore spezielle Filterwerte hinzugerechnet volonté (z. B. -2,-1,0,+3,+3), so cela allg. Prinzip. Den aktuellen Mittelwert erhält on, si z.B. qui letzten (hinteren) 3 Werte gemittelt volonté.

filtre peut plusieurs fois verwendet volonté. Je glatter wird qui Kurve...
 
21.09.2018  
 




p.specht

Ist large entfernt en, une Solution pour cela Problem trop son, weil on là viel anpassen muss, z.B. x et y vertauschen. mais cela Prinzip serait denke je passen. cela partie ist pas de mir, et allfällige Rechte Dritter müssten seulement geprüft volonté. alors: sans jedwede garantie et rein trop Demonstrationszwecken:
Titre de la fenêtre "Interpolation zw. Stützwerten par Polynomkoeffizienten-Anpassung"
Fenêtre Style 24:randomize:CLS rnd(8^8):font 2:set("decimals",18)
'{********************************************************
'*       Polynomial Interpolation or Extrapolation       *
'*              of a Discreet Function F(x)              *
'* ----------------------------------------------------- *
'* SAMPLE RUN:                                           *
'* (Example: Function sin(x) - 2*cos(x) is given by 12   *
'*          points à partir de x=0 to x=1.1.                    *
'*          Extrapolate for x=1.255).                    *
'*                                                       *
'*  For X             =  1.255                           *
'*  Estimated Y value =  .3294023272245815               *
'*  Estimated Error   = -8.273064603451457E-11           *
'*  Exact Y value     =  .3294023272200048               *
'*                                                       *
'* ----------------------------------------------------- *
'* REFERENCE: "Numerical Recipes, The Art of Scientific  *
'*             Computing By W.H. Press, B.P. Flannery,   *
'*             S.A. Teukolsky and W.T. Vetterling,       *
'*             Cambridge University Press, 1986"         *
'*                                                       *
'*                  Basic Release By J-P Moreau, Paris.  *
'*                           (www.jpmoreau.fr)           *
'*********************************************************
'*                                                       *
'*      XProfan-Version  2014-10 by P.Specht, vienne       *
'*                                                       *
'*********************************************************
'}
' PROGRAM TEST_POLINT
Var n&=12' Number of points
Déclarer X![N&],Y![N&],C![N&],D![N&]
Déclarer i&,x1!,xx!,fct!,yy!,DY!

REPEAT

    ' qui Stützwerte müssten NICHT absolument dans gleichen Abständen liegen!
    ' define tables X and Y 'ACHTUNG: ARRAY WIRD MIT BASISINDEX 1 GEFÜHRT!
    X![1] = 0.0
    X![2] = 0.1
    X![3] = 0.2
    X![4] = 0.3
    X![5] = 0.4
    X![6] = 0.5
    X![7] = 0.6
    X![8] = 0.7
    X![9] = 0.8
    X![10]= 0.9
    X![11]= 1.0
    X![12]= 1.1

    Whileloop n&:i&=&Boucle

        X1! = X![I&]
        FCT!=FCT(X1!)
        Y![I&] = FCT!

    Endwhile

    proc FCT :parameters x1!

        ' FUNCTION FCT(X1) ' Statt Tabelleneingabe qui Y-Stützwerte
        ' wird ici une bekannte Funktion herangezogen.
        ' cela erlaubt une Prüfung qui Genauigkeit qui Interpolation
        FCT! = SIN(X1!) - 2.0 * COS(X1!)
        RETOUR FCT!

    endproc

    ' ANWENDUNG DES GEFUNDENEN POLYNOMS
    ' Vorgabe eines X-Wertes et Abfrage qui interne gefundenen Interpolationsformel
    imprimer "\n EINGABE:  X-Wert, pour den Y trop interpolieren ist "
    imprimer " (chez X=0 wird eingebauter Testwert 1.255 verwendet) X = ";
    input xx! : cas xx!=0 : XX! = 1.255
    ' INTERPOLATION
    yy!=POLINT(X1!,N&,XX!,YY!)
    ' AUSGABE
    cas %csrlin>20:cls rnd(8^8)
    PRINT
    PRINT "     Pour cela gesuchte X = ";format$("%g",XX!)
    PRINT "  Interpolierter Y-Wert = ";format$("%g",YY!)
    PRINT "       dernier Correction = ";format$("%g",DY!)
    X1! = XX! : FCT!=FCT(X1!)
    PRINT " Exakter Vergleichswert = ";format$("%g",FCT!)
    PRINT "--------------------------------------------------\n"

UNTIL 0

proc STOP :sound 2000,100: waitinput:FIN

endproc

Proc POLINT :parameters X!,N&,XX!,YY!

    '*****************************************************
    '  Origianl-Subroutine: POLINT(X,Y,N,XX,YY,DY)       *
    '*****************************************************
    '*     Polynomial Interpolation or Extrapolation     *
    '*            of a Discreet Function                 *
    '* ------------------------------------------------- *
    '* INPUTS:                                           *
    '*    X:    Table of abscissas (N)                   *
    '*    Y:    Table of ordinates (N)                   *
    '*    N:    Number of points                         *
    '*   XX:    Interpolation abscissa value             *
    '* OUTPUT:                                           *
    '*   YY:    Returned estimation of function for X    *
    '*   DY:    Estimated error for YY                   *
    '*****************************************************
    Déclarer NS&,dif!,dift!,C![n&],D![n&],m&,ho!,hp!,w!,den!
    NS& = 1
    DIF! = ABS(XX! - X![1])

    whileloop n&:i&=&Boucle

        DIFT! = ABS(XX! - X![1])

        IF DIFT! < DIF!

            NS& = I&'index of closest table entry
            DIF! = DIFT!

        ENDIF

        C![I&] = Y![I&]'Initialize le C"s and D"s
        D![I&] = Y![I&]

    endwhile

    YY! = Y![NS&]'Initial approximation of Y
    NS& = NS& - 1

    whileloop n&-1:m&=&Boucle

        whileloop n&-m&:i&=&Boucle

            HO! = X![I&] - XX!
            HP! = X![I& + M&] - XX!
            W! = C![I& + 1] - D![I&]
            DEN! = HO! - HP!

            IF DEN! = 0

                PRINT
                PRINT " *** FEHLER: ZWEI STÜTZWERTE WIDERSPRECHEN SICH! *** "
                STOP

            ENDIF

            DEN! = W! / DEN!
            D![I&] = HP! * DEN!'Update le C's and D's
            C![I&] = HO! * DEN!

        endwhile

        IF (2*NS&) < (N&-M&)' After each column dans le tableau XA is completed,

            DY! = C![NS&+1]' we decide which correction, C or D, we want to

        ELSE' add to our accumulating value of Y, i.e. which

            DY! = D![NS&]' path to take through le tableau, forking up or
            NS& = NS& - 1' down. We do this dans such a way as to take le

        ENDIF' most "straight line" route through le tableau to

        ' its apex, updating NS accordingly to keep track
        YY! = YY! + DY!' of where we sont. This route keeps le partial

    endwhile' approximations centered (insofar as possible) on

    ' le target X.The charge DY added is thus le error
    RETOUR YY!' indication.
    endpro

important: pas trop viele Stützwerte, sonst wird qui l'affaire plutôt encore zittriger!
qui manuelle Contribution-Boucle wäre ensuite par qui gewünschten Zwischenwerte trop ersetzen et comme Punkte avec kurzen Lineto-Stücken einzutragen. Alternativ pourrait on aussi une "gleitenden Durchschnitt" aus 3 jusqu'à 5 Punkten bilden.
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
21.09.2018  
 




RAW
ici un simple Praxis-Beispiel aus obigem Beitrag, um Ausreißer dans einer Kurve trop glätten:

Beispielwerte einer ansteigenden Kurve (y-Werte):
114, 116, 120, 123, 124, 127, 129, 150, 133, 136 / Ausreißer 150

prenons à, wir stehen am Punkt 127 (dans x-direction qui 6. Punkt).
qui Mittelwert qui vorderen 3 Werte de 129, 150, 133 lautet: 137 / Ausreißer 150
qui größte Wert de 150 wird maintenant trop 137.
Répétition qui vorderen 3 Werte de 129, 137, 133 ergibt 133.

eh bien ersetzen wir qui vorderen 3 Werte avec dem Wert 133 - voila... / glattere Kurve

comme Lösungsansatz pourrait cet Beispiel vollends suffire.
 
22.09.2018  
 



Unterthema: Kurve glätten gelöst  [...]  erzeugt.
 
24.09.2018  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

5.310 Views

Untitledvor 0 min.
ecki10.02.2023
Rolf Koch13.02.2022
Normann Strübli31.03.2020
p.specht05.09.2019
plus...

Themeninformationen

cet Thema hat 3 participant:

Walter Köhler (2x)
RAW (2x)
p.specht (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie