Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OCR, Barcodes - Wie fängt man an? (https://www.delphipraxis.net/136974-ocr-barcodes-wie-faengt-man.html)

Spiderpig_GER_15 14. Jul 2009 21:49

Re: OCR, Barcodes - Wie fängt man an?
 
Hi,

was hältst du von dieser Idee:

Du gehst das ganze Bild durch (das original Bild (=farbig)) und setzt in einem neuen Bild überall dort einen schwarzen Punkt wo ein besonders staker unterschied vom Nachbarpixel (schwarz weiß[evt. toleeranzgrenze?] zum nächsten ist.
Das bedeutet das neue Bild gibt nach dieser Bearbeitung alle Umrisse wider.
Jetzt teilst du das ganze Bild in Quadrate. Quadrate die Teile des Strichcodes enthalten, haben immer (wenn die Quadrate groß genug gewählt sind)schwarz-weiß übergänge. Also ist überall da wo in unserem neuen Bild kein Übergang (= keine schwarzen Punkte) ist kein Barcode.
So kann man vermutlich schon eine Menge stellen ausschließen.

Jetzt muss man sich Charackteristische Merkmale für Quadrate heraussuchen die Barcode enthalten. (Man könnte alle weißen Pixel und alle schwarzen Pixel in noch Möglichen quadraten addieren und den Mittelwert Bilden, vielleicht erkennt man durch ausprobieren das quadrate aus der Mitte des Codes meistens ein verhältnis von 2:100 oder so ist.

Bei Potentielen Quadraten kann man sich überlegen ob man irgendwie die schwarzen Pixel darauf überprüfen kann, dass sie in einer Reihe sind (wenn auch gedreht). So könnte man zurückrechnen wie weit man das Bild drehen muss um alles grade zu haben. Jetzt geht man von diesem Quadrat aus Nach rechts und links und findet leicht den rand des barcodes, nämlich dann wenn kein schwaz weiß unterschied bei gewissen Abständen vorhanden ist.

Das als Denkanstoß

MfG

Spiderpig

PS:

echt interessantes Thema :D

Prototypjack 16. Jul 2009 12:57

Re: OCR, Barcodes - Wie fängt man an?
 
Moin,

Der Ansatz mit der Timing-Tabelle scheint wirklich der Richtige zu sein, danke dafür! Aber ich habe jetzt ein grundsätzliches Problem mit dem EAN-13 Standard.

Wie finde ich die erste Zahl heraus? Steht die irgendwo kodiert (muss sie ja, denn es gibt ja auch Barcodes ohne Zahlen)? Denn laut Wikipedia (und der Standard ist in meinen Augen mehr als verwirrt :shock: ) ist diese Zahl maßgeblich für das Lesen des Strichcodes.

Grüße,
Max

Alien_F 16. Jul 2009 14:09

Re: OCR, Barcodes - Wie fängt man an?
 
Die eigentliche Nr. ist tatsächlich 13-stellig ( inkl. Prüfziffer ). Falls du C1,C2,C3 meinst - die Dinger stellen keine Ziffern dar, sondern lediglich Markierungen.

Prototypjack 16. Jul 2009 14:51

Re: OCR, Barcodes - Wie fängt man an?
 
Zitat:

Zitat von Alien_F
Die eigentliche Nr. ist tatsächlich 13-stellig ( inkl. Prüfziffer ). Falls du C1,C2,C3 meinst - die Dinger stellen keine Ziffern dar, sondern lediglich Markierungen.

Ja, schon klar. Aber sieh' dir mal die Prüfziffer bzw. deren Bedeutung an. Diese kann von 0-9 variieren und verändert, je nach Zahl, die gesamte Struktur des Codes (ist im englischen Wiki-Artikel als R/G/B gekennzeichnet).

Damit ich jetzt den Code überhaupt lesen kann, muss ich die erste Zahl wissen, nur, wie mach' ich das?

Grüße,
Max

Alien_F 16. Jul 2009 15:30

Re: OCR, Barcodes - Wie fängt man an?
 
Ach so. Du meinst was völlig anderes.
Die erste Ziffer wird gar nicht kodiert, sondern ergibt sich aus dem Pattern der Kodierung der 1 6er-Gruppe. ( Deswegen druckt man wahrscheinlich die erste Ziffer vor die erste Markierung C1 - rein optisch betrachtet).
Du musst einfach die ersten 6 Zahlen hinter dem ersten Marker entziffern. In dem Artikel ist ein Beispiel mit einer führenden 8. Hat man erkannt, dass für die erste 6er-Gruppe das zugrundeliegende Pattern LGLGGL war, kann man in der Tabelle entsprechend nachschauen.

( um Verwirrungen vorzubeugen: die Prüfziffer (also die Checksumme des Codes) ist die allerletzte Ziffer und wird explizit kodiert. Berechnugsformel zur Verifizierung ist ja weiter unten im Artikel angegeben. )

Medium 16. Jul 2009 15:32

Re: OCR, Barcodes - Wie fängt man an?
 
Meinst du die Entscheidung ob das Odd- oder Even-Alphabet vorkommt? Wenn ja, hat die Prüfziffer nichts damit zu tun. Die Unterscheidung Even/Odd fällt auch nicht zwangsweise an, da ein Even-Code nie auch als Odd auftaucht - auch nicht rückwärts, weil das wäre genau die selbe Zahl im jeweils anderen Alphabet. Jede Linienkombination ist eindeutig genau einer Ziffer zuzuordnen, egal ob sie Even oder Odd codiert ist.
Die Prüfziffer ist doch letztlich nur eine Sicherheitsmaßnahme, mit der man nach der Lesung prüfen kann ob man auch alles richitg gelesen hat. Sie ändert nichts an der Interpretation des Codes. Da würde sich ja die Katze in den Schwanz beißen.

Alien_F 16. Jul 2009 16:24

Re: OCR, Barcodes - Wie fängt man an?
 
Vielleicht auch etwas hilfreich. Guckst du hier EAN13 Barcode Control

Prototypjack 16. Jul 2009 16:46

Re: OCR, Barcodes - Wie fängt man an?
 
Moin,

Danke für den Hinweis. Ich dachte irrtümlicherweise, dass sich die Codes innerhalb der 3-Sparten (LGR) wiederholen. Wenn jeder Code dagegen einzigartig ist, ist das, was ich vorher über die erste Ziffer gesagt / gedacht habe natürlich sinnlos.

Grüße,
Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz