Österreicher für Zürich

* Startseite   * Über...   * Archiv   * Gästebuch   * Kontakt   * RSS Feed

Österreicher für Zürich

Alter: 25
Beruf: Programmierer
aktuelles Lebensziel:
Mit Kühen reden können
Bester Song zZ:
September : Cry For You
beste TV Sendung zZ:
Karambolage @ arte

    follow me on Twitter






    VV klicken, mir Geld! VV
    ΛΛ klicken, mir Geld! ΛΛ


    Powered by Blogger



    [Insane C# Development] Decoding punch cards in .NET

    [UPDATE: Ich habe doch noch weitergearbeitet und die Verzerrungen des Scans entfernt, der Text ist jetzt vollständig abrufbar]

    Wie mehrere Leute in ihren Blogs berichten (Blog1, Blog2, Blog3, Blog4) erhalten viele Leute zur Zeit Lochkarten in Holzboxen zugeschickt. Dazu eine auf Schreibmaschine gedruckte Anweisung die "anderen Leute" zu finden um die Karten zu decodieren.

    Ich habe zwar keine dieser Karten erhalten, aber einer der Blogger war so freundlich uns allen einen Scan zur Verfügung zu stellen:

    lochkarte

    Ein kurzes Googeln ergab folgende Seite Doug Jones's punched card codes. Da ich natürlich nicht manuell die Karten dekodieren wollte, schrieb ich in .NET ein kleines Programm.

    Schritt 1: PSP7 nehmen, Bild nach Grayscale, Histogramm Anpassungen, und Contour Trace. Danach die nicht benötigten Stellen ausschneiden

    lochkarte

    Schritt 2: Nach 8bit Indexed Bitmap konvertieren und einige Farben zur Palette hinzufügen

    Schritt 3: Im .NET Programm das Raster ermitteln:

    grid

    Wie man sieht stimmt das ermittelte Raster ab der 30sten Spalte nicht mehr 100%ig, deswegen decodieren wir im ersten Schritt auch nur die ersten 30 Buchstaben.

    Schritt 4: Programm die Bounding Boxen nach markierungen scannen lassen:

    bounds

    Man sieht hier auch schon zwei Scanfehler, in den hinteren Reihen wurden zwei Boxen falsch erkannt. Dies könnte ich noch korrigieren, ist aber nicht notwendig wie man gleich sieht. [UPDATE: Ich habe doch noch weitergearbeitet und die Verzerrungen des Scans entfernt, der Text ist jetzt vollständig abrufbar]

    Schritt 5: Boxen in ushort Array überführen, die ersten beiden Zeilen sind Bits 12 und 11, die restlichen 0-9

    Schritt 6: Die Textbeschreibung von Doug's Seite textuell parsen und ebenso in ushort Array überführen, dabei eine Character-Map aufbauen

    Schritt 7: Ausgabe: UHGVFWKHQNJLADSWHHKHHETHUILGHQIWGYNAWIMJBAXZCNLKIOPXLEMVGLPBLNRMXJ

    Wie man sieht ergibt dies rein GAR NIX. Ein manueller Decodierversuch der ersten 4 Buchstaben kam leider zu exakt denselben Ergebnis, also hat das Program keinen Fehler gemacht.

    Einer der Blogger berichtete von einer ähnlichen Zeichenkette (er hatte jedoch eine leicht andere Karte).

    Was wohl das Geheimnis hinter diesen Karten ist? Eventuell muss man nur die gemeinsamen Löcher betrachten? Tja... virales Marketing eben.

    Wer will kann mir ja seine Karte scannen und schicken, ich lese sie dann auch im Programm ein!



    --
    Von [Stefan] am 2/05/2008 02:52:00 PM unter Insane C# Development veröffentlicht

    Labels:



    Ältere Artikel in den Archiven: 20060730 20060806 20060813 20060820 20060827 20060903 20060910 20060917 20060924 20061001 20061008 20061015 20061022 20061029 20061105 20061112 20061119 20061126 20061203 20061210 20061217 20061224 20061231 20070107 20070114 20070121 20070128 20070204 20070211 20070218 20070225 20070304 20070311 20070325 20070415 20070506 20070513 20070520 20070527 20070603 20070610 20070617 20070624 20070701 20070708 20070715 20070722 20070729 20070805 20070812 20070819 20070826 20070902 20070909 20070923 20070930 20071007 20071014 20071028 20071104 20071111 20071118 20071125 20071202 20071209 20071216 20071223 20071230 20080106 20080113 20080127 20080203 20080210 20080217 20080224 20080323 20080330 20080406 20080427 20080504 20080511 20080518 20080601 20080608 20080615 20080622 20080706 20080713 20080720 20080727 20080803 20080817 20080824 20080907 20080921 20080928 20081005 20081012 20081019 20081026 20081102 20081109 20081207 20081228 20090104 20090111 20090201 20090308 20090315 20090517 20090524 20090614 20090628 20090705 20090816 20090823 20090830 20090906 20090920 20091025 20091108 20091115 20100207 20100314 20100801 

    Acta est fabula,... plaudite!