Autor Beitrag
daywalker0086
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


Delphi 2005 Architect
BeitragVerfasst: Do 03.07.14 16:23 
Hallo Community,
ich habe ien Frage bzg. Bilderkennung.
Um was es geht:
Ich habe eine 7 Segmentanzeige die getestet werden soll. Also jedes Segment wird angesteuert und sollte leuchten.
Dies kann in einem dunklen Raum ohne Fremdlicht passieren. Dies soll mit einer Kamera aufgenommen werden und wenn es nicht leuchtet oder fälschlicherweise 2 leuchten soll ein Fehler ausgegeben werden.

Kann man das mit Delphi realisieren?
Hat jemand Tips oder links wo man was dazu findet oder sowas schonmal umgesetzt? Der Abstand und die Position der Anzeige zur Kamera ist immer gleich (+/-1mm).
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.07.14 17:56 
Die Segmente leuchten NIE gleichzeitig, sondern werden einzeln angesteuert.
Stromersparnis -> Zeitmultiplex

de.wikipedia.org/wiki/Segmentanzeige

www.rodrigo-groener.de/7SegmentAnzeige/
www.rodrigo-groener....zeige/bcd_seg_a.html

Bei ELEKTOR wurde mal eine Schaltung vorgestellt, die in einem Flugzeug-Cockpit eine 7-Segment-LED-Anzeige überwachte.


Zuletzt bearbeitet von hathor am Do 03.07.14 18:11, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18730
Erhaltene Danke: 1630

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 03.07.14 18:01 
Das sollte relativ einfach machbar sein. Man legt fest in welchen Bereichen die einzelnen Segmente liegen (da reicht ja auch ein Teil davon) und geht dann mit ScanLine einer TBitmap alle Pixel dieser Bereiche durch und berechnet deren Durchschnittswert. Liegt er unter einem bestimmten Wert, ist das Segment aus, liegt er darüber, ist es an.
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


Delphi 2005 Architect
BeitragVerfasst: Fr 04.07.14 08:02 
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Die Segmente leuchten NIE gleichzeitig, sondern werden einzeln angesteuert.
Stromersparnis -> Zeitmultiplex


Na das ist nicht allgemein gültig. Erstens werden die Segmente in dieser Anwendung nicht gemultiplext sondern einfach linear angesteurt.
Zweitens ist es ein Testaufbau zum testen derselben. Wenn durch eine Lötbrücke am Widerstandsnetzwerk zwei Eingänge gebrückt sind, dann leuchten zwei obwohl nur eine Leuchten sollte, dieser Fehler muss erkannt werden.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1576
Erhaltene Danke: 277


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 04.07.14 08:11 
Nur so eine Idee, aber ein ganz anderer Ansatz um das Problem zu lösen.

Wenn 2 Elemente gleichzeitig leuchten, müsste die Gesamthelligkeit ja höher sein. Also müsstest Du nur einen Dämmerungsschalter bauen, der ab einer bestimmten Helligkeit ein Signal (1/0) ausgibt. Das könntest Du in den Rechner geben und entsprechend reagieren.
Es gibt z.B. von Vellemann Boards, die Du per USB anschließen kannst. Dort kannst Du sowohl analoge Signale, als auch digitale Signale reingeben und in Delphi auswerten.

Ein anderer Ansatz wäre, die Stromaufnahme des Bauteils zu messen. Die müsste ja höher sein, wenn 2 Elemente leuchten. Da gibt es Multimeter mit USB-Schnittstelle. An die Werte kommt man sicher auch mit einem Delphiprogramm ran.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.07.14 08:51 
Wenn das nur ein Testaufbau in einer dunklen Kammer ohne Fremdlicht ist, dann kann man das mit einem LDR (light-dependent resistor, in Fensterkomparatorschaltung) - evtl. hinter einer Streulichtscheibe (Opalglas, Milchglas) - machen.
Bei einem leuchtenden Segment ist der Widerstand annähernd gleich - bei deutlicher Abweichung: FEHLER!

Übrigens:
Jede LED kann nicht nur Licht aussenden, sondern auch als Fotodiode arbeiten:
Licht senden - Spiegel reflektiert Licht - Licht empfangen
www.merl.com/reports/docs/TR2003-35.pdf
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


Delphi 2005 Architect
BeitragVerfasst: Fr 04.07.14 11:41 
Es ging mir darum es mit einem Bild auszuwerten um diesen Weg einfach mal zu probieren. Es wird zur Zeit mit einer für die Wellenlänge besonders empfindlichen Photodiode und einem Transimpedanzverstärker gemssen.

Übrigens, wenn 2 Segmente lecuhten und die Lötbrücke hinter dem Widerstand ist, wird der Strom nicht größer, er teilt sich auf und die Segmente leuchten einfach dunkler.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1576
Erhaltene Danke: 277


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 04.07.14 12:41 
Geht es Dir denn darum, genau zu erkennen, welche Segmente leuchten? Oder soll nur erkannt werden, dass 2 Elemente leuchten?
Im 2. Fall würde ich das Bitmap durchgehen, und anhand eines Schwellwertes definieren, ob das Pixel als "Leuchtet" oder "Leuchtet" nicht gezählt wird. Nun musst Du nur noch definiere, wie viele Pixel maximal den Status "Leutet" haben dürfen, damit Du davon ausgehst, dass nur ein Segment leuchtet.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 868
Erhaltene Danke: 145

Win7
VS 2013, VS2015
BeitragVerfasst: Sa 05.07.14 00:25 
Ich habe schon viel Bildverarbeitung gemacht, und würde dir eine andere Sprache empfehlen. Konkret Python oder Matlab. Beide kommen bereits mit umfangreichen Computer Vision Funktionen daher.

Ansonsten: Für jedes Segment eine Bitmaske anfertigen, mit dem Bild ver-und-en und den Mittelwert über das Bild berechnen. Dieser sagt aus, wie stark dieses Segment leuchtet.
Lakeri
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 16.07.14 10:39 
Bei Bildverarbeitung arbeite ich eigentlich meist mit Python. Das ist recht zuverlässig und eignet sich wirklich ganz gut, muss ich zustimmen!