Kantenselektion mit Hilfe von x-z-Werten



  • Kannst du das ganze mal grafisch darstellen, vielleicht wird dann klarer, was du vorhast.

    Pack die Werte am besten in ein Array (oder noch besser: vector<>) von pair<double,double>, das kannst du dann problemlos mit std::sort() sortieren (aber wenn die Punkte in der richtigen Reihenfolge abgelesen wurden, sollten sie schon sortiert sein). Eine Kante im Objekt kannst du dann daran erkennen, daß die Steigung sich an einer Position ändert (die erhälst du, indem du die z-Werte von benachbarten Punkten subtrahierst).



  • wie kann ich hier einen anhang hinzufügen?



  • Gar nicht. Du mußt dir schon einen anderen Anbieter suchen, wo du die Datei hochladen kannst - und anschließend einen Link dorthin hier posten.
    (oder du nastelst dir eine ASCII-Art Grafik und fügst sie in code-Tags ein)



  • hier ist die verbindung, wo man die sachen sehen kann. http://www.ms-office-forum.net/forum/showthread.php?p=983684#post983684



  • PiotreD schrieb:

    also die werte sind leider so sortiert, dass ich halt für jeden punkt der laserlinie, einen x- und z-wert bekomme. die x-werte liegen in der regel von 18mm bis -20mm (also sind die doch irgendwie sortiert). und z-werte sind unterschiedlich (das stimmt schon). ich muss mir aber die werte (entweder 64,128,256,512 oder 1024) in ein array legen, um anschließend die werte zu vergleichen bzw. auszugeben. wie kann ich dies machen??

    Hallo, stell doch mal die Daten einer Kantenmessung in Form einer ascii x/y tabelle hier ein. vielleicht kann ich das dann mit einem Freund diskutieren, der sich seit einiger zeit mit kantenerkennung bei mechanischen teilen beschäftigt (ich hab dem dazu mal eine fft programmiert)
    mfg ney



  • hallo.also wie soll ich die daten in form einer ascii x/y-tabelle darstellen??im mom kann ich nur über eine demosoftware in form von .slk speichern. diese kann man aber mit excel öffnen..



  • hi, wenn du sie in excel öffnen kannst, dann muss es möglich sein, die beiden Spalten, die mit den x- und y-werten deiner tabellierten Funktion zu selektieren, als ascii text zu kopieren (ctrl c) und hier mit Paste (ctrl v)einzufügen.
    vg ney



  • ach so..hier sind dann die daten, die ich geliefert bekommen kann vom sensor:

    x-wert z-wert
    17,73 160,43
    17,435 160,445
    17,145 160,47
    16,855 160,5
    16,565 160,525
    16,27 160,555
    15,975 160,555
    15,68 160,55
    15,395 160,6
    15,1 160,6
    14,81 160,645
    14,51 160,62
    14,22 160,665
    13,93 160,72
    13,635 160,67
    13,34 160,7
    13,05 160,75
    12,76 160,75
    12,47 160,78
    12,175 160,81
    11,885 160,81
    11,595 160,83
    11,3 160,85
    11,01 160,87
    10,72 160,9
    10,425 160,875
    10,135 160,935
    9,845 160,965
    9,55 160,955
    9,26 160,955
    8,965 160,99
    8,675 161,005
    8,385 161,015
    8,09 161,035
    7,8 161,1
    7,505 161,095
    7,21 161,075
    6,92 161,115
    6,63 161,135
    6,335 161,14
    6,04 161,13
    5,9 166,73
    5,6 166,815
    5,295 166,81
    4,995 166,86
    4,69 166,84
    4,39 166,885
    4,085 166,9
    3,785 166,935
    3,485 167,005
    3,18 167,005
    2,875 167,06
    2,575 167,02
    2,27 167,02
    1,97 167,105
    1,665 167,105
    1,365 167,17
    1,06 167,215
    0,755 167,165
    0,455 167,205
    0,15 167,24
    -0,15 167,215
    -0,455 167,27
    -0,76 167,295
    -1,06 167,29
    -1,365 167,335
    -1,67 167,35
    -1,975 167,325
    -2,28 167,385
    -2,585 167,43
    -2,885 167,435
    -3,19 167,435
    -3,495 167,395
    -3,8 167,425
    -4,105 167,455
    -4,405 167,455
    -4,71 167,51
    -4,89 163,52
    -5,2 163,92
    -5,365 160,135
    -5,655 160,085
    -5,945 159,975
    -6,235 159,98
    -6,525 159,9
    -6,815 159,825
    -7,105 159,795
    -7,39 159,7
    -7,68 159,64
    -7,97 159,63
    -8,26 159,59
    -8,55 159,5
    -8,835 159,44
    -9,125 159,41
    -9,41 159,305
    -9,7 159,225
    -9,985 159,165
    -10,275 159,11
    -10,565 159,085
    -10,855 159,055
    -11,145 159,04
    -11,435 159,025
    -11,73 159,02
    -12,02 159,04
    -12,31 158,98
    -12,6 158,96
    -12,89 158,95
    -13,185 158,97
    -13,475 158,95
    -13,765 158,95
    -14,06 158,955
    -14,35 158,93
    -14,64 158,955
    -14,935 158,935
    -15,225 158,93
    -15,52 158,985
    -15,815 158,98
    -16,11 159,005
    -16,4 158,955
    -16,69 158,96
    -16,99 159,02
    -17,285 159,035
    -17,57 158,98
    -17,87 159,035
    -18,16 159,015
    -18,455 159,04
    -18,755 159,08
    -19,045 159,07
    -19,34 159,085

    wie könnte ich jetzt weiter vorgehen??



  • Das sieht zumindest so aus, als ob die x-Werte (fallend) geordnet sind. Damit kommen wir wieder zurück zu meinen letzten Beiträgen - bilde jeweils die Differenz benachbarter z-Werte und schau dir mal die herauskommende Liste an. Wenn diese Differenz deutlich größer als 1 oder kleiner al -1 ist, hast du an der Position deine Kante.

    (bei den gegebenen Daten hast du Kanten bei x =6.04, -4.71 und -5.2)

    PS: Allerdings mußt du noch definieren, was du als "Kante" ansiehst - treppenartige Kanten ( __-- ) erkennst du beim Vergleich der z-Differenzen, Knicke im Objekt ( __/ ) bei Vergleich der "Differenzen zweiter Ordnung" (Differenz der oben gebildeten Differenzwerte).



  • es sollen ja eigentlich alle kanten erkannt werden. ---- oder --\-- usw.



  • Du mußt jede Kante einzeln betrachten, damit bleiben nur noch zwei Kantenformen ürig 😉 (und eine Mischung daraus)

    Wie gesagt, bild die Differenzen erster (dz1[i]=z[i+1]-z[i];) und zweiter (dz2[i]=dz1[i+1]-dz1[i];) Ordnung benachbarter z-Werte und schau dir die Differenzenfolgen genauer an:

    • Sprungkanten (Treppe) erkennst du an einem dz1-Wert der betragsmäßig deutlich größer ist als sein linker und rechter Nachbar.
    • Knickkanten erkennst du an einem Sprung der dz1-Werte (bzw. an einem dz2-Wert, der betragsmäßig aus seinen Nachbarn herausragt)
    • bei Mischkanten kommt beides zusammen


  • hi, PiotreD,
    kannst du die x,z-daten mal hintereinander posten, zuerst die x-spalte, danach die z-spalte. dann kann ich sie bei mir durch ein programm laufen lassen.
    Kannst du noch etwas über die Messfehler sagen? Wie gut ist dein Sensor, ist der richtig kalibriert? Und was ist z genau: Helligkeit, Energie, Intensität? (hängt auch von der Kalibrierung ab)
    vg tesu



  • also hier mal die x-werte:

    17,73
    17,435
    17,145
    16,855
    16,565
    16,27
    15,975
    15,68
    15,395
    15,1
    14,81
    14,51
    14,22
    13,93
    13,635
    13,34
    13,05
    12,76
    12,47
    12,175
    11,885
    11,595
    11,3
    11,01
    10,72
    10,425
    10,135
    9,845
    9,55
    9,26
    8,965
    8,675
    8,385
    8,09
    7,8
    7,505
    7,21
    6,92
    6,63
    6,335
    6,04
    5,9
    5,6
    5,295
    4,995
    4,69
    4,39
    4,085
    3,785
    3,485
    3,18
    2,875
    2,575
    2,27
    1,97
    1,665
    1,365
    1,06
    0,755
    0,455
    0,15
    -0,15
    -0,455
    -0,76
    -1,06
    -1,365
    -1,67
    -1,975
    -2,28
    -2,585
    -2,885
    -3,19
    -3,495
    -3,8
    -4,105
    -4,405
    -4,71
    -4,89
    -5,2
    -5,365
    -5,655
    -5,945
    -6,235
    -6,525
    -6,815
    -7,105
    -7,39
    -7,68
    -7,97
    -8,26
    -8,55
    -8,835
    -9,125
    -9,41
    -9,7
    -9,985
    -10,275
    -10,565
    -10,855
    -11,145
    -11,435
    -11,73
    -12,02
    -12,31
    -12,6
    -12,89
    -13,185
    -13,475
    -13,765
    -14,06
    -14,35
    -14,64
    -14,935
    -15,225
    -15,52
    -15,815
    -16,11
    -16,4
    -16,69
    -16,99
    -17,285
    -17,57
    -17,87
    -18,16
    -18,455
    -18,755
    -19,045
    -19,34

    und hier nochmal die z-werte:

    160,43
    160,445
    160,47
    160,5
    160,525
    160,555
    160,555
    160,55
    160,6
    160,6
    160,645
    160,62
    160,665
    160,72
    160,67
    160,7
    160,75
    160,75
    160,78
    160,81
    160,81
    160,83
    160,85
    160,87
    160,9
    160,875
    160,935
    160,965
    160,955
    160,955
    160,99
    161,005
    161,015
    161,035
    161,1
    161,095
    161,075
    161,115
    161,135
    161,14
    161,13
    166,73
    166,815
    166,81
    166,86
    166,84
    166,885
    166,9
    166,935
    167,005
    167,005
    167,06
    167,02
    167,02
    167,105
    167,105
    167,17
    167,215
    167,165
    167,205
    167,24
    167,215
    167,27
    167,295
    167,29
    167,335
    167,35
    167,325
    167,385
    167,43
    167,435
    167,435
    167,395
    167,425
    167,455
    167,455
    167,51
    163,52
    163,92
    160,135
    160,085
    159,975
    159,98
    159,9
    159,825
    159,795
    159,7
    159,64
    159,63
    159,59
    159,5
    159,44
    159,41
    159,305
    159,225
    159,165
    159,11
    159,085
    159,055
    159,04
    159,025
    159,02
    159,04
    158,98
    158,96
    158,95
    158,97
    158,95
    158,95
    158,955
    158,93
    158,955
    158,935
    158,93
    158,985
    158,98
    159,005
    158,955
    158,96
    159,02
    159,035
    158,98
    159,035
    159,015
    159,04
    159,08
    159,07
    159,085

    der sensor ist schon vorkalibriert worden. was meinst du mit messfehler?

    und z ist einfach der wert bzw. abstand, vom sensor zur oberfläche bzw. dann ja in die kante mitein.



  • hallo.

    in wie weit kann ich eigentlich dann von den einzelnen werten die integration durchführen?


Anmelden zum Antworten