Neues Tutorial: Dateien analysieren
Schick! Gutes Zeug.
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von GoDot am
Neues Tutorial: Dateien analysieren
Schick! Gutes Zeug.
Es gab doch bei der Kaufversion von GoDot ein Handbuch. Ist dies noch irgendwo verfügbar ?
Handbuch
Die Webseiten von GoDot sind das *viel* bessere Handbuch! Erstens, weil sie ständig aktuell sind, und zweitens, weil sie auch Module behandeln, die es in der Kaufversion noch gar nicht gab (einschließlich der Tutorials). Geh mal hin (unten in meiner Signatur ist der Link). Oder meinst du das Programmier-Handbuch? Das ist zum Download vorhanden. Irgendwo weiter vorne in diesem Thread müsste auch ein Link dahin sein. Ansonsten:
Update
Der zweite Teil des "Untersuchen"-Tutorials ist fertig. Da geht es darum, wie man mit GoDot unbekannte Dateien so untersuchen kann, dass man dennoch rausfindet, wozu sie gut sein sollen.
Arndt
Ich Meint schon das Handbuch, da mein so langsam in die Jahre gekommen ist. Ich find es besser ein Handbuch zur hand zu haben, wenn ich am C64 sitze.
Dacht es gebe eventuell noch einpdf zum ausdrucken
Dacht es gebe eventuell noch einpdf zum ausdrucken
Muss ich dann mal hochladen. Mal sehen, vielleicht komm ich morgen dazu.
Arndt
Muss ich dann mal hochladen.
Ist online. Das PDF ist rund 1 MB groß, Inhaltsverzeichnis ist anklickbar. (Version von 1995, aber mit heutiger Rechtschreibung)
Arndt
Hallo vielen Dank
Zwischenbericht
Ich hab jetzt die Vorarbeiten zum svr.PETSCII soweit abgeschlossen. Zuerst ging es darum, den geeignetsten Weg zu finden, in einer (beliebigen) Grafik die festgelegten Grafik-Zeichen des PETSCII-Zeichensatzes wiederzuerkennen. Die Brute-Force-Methode wäre, jede Kachel der Grafik mit jedem Zeichen des Charsets zu EORen und zu sehen, bei welchem Zeichen die wenigsten Pixel übrigbleiben. Weil GoDot aber in diesem Jahrhundert noch fertig werden soll, kann das nicht Methode der Wahl sein.
Darum hab ich mich dazu entschlossen, aus dem Charset nur bestimmte Zeichen zu verwenden (insgesamt 60 und ihren Inversen, zusammen also 120). Als nächstes hab ich diese Zeichen statistisch erfasst. So:
Vorarbeit 1: Jedes der 120 Zeichen eingeteilt in vier Quadranten zu je 16 Pixel, die Pixel ausgezählt, in eine Tabelle geschrieben und diese dann nach Häufigkeit geordnet.
Vorarbeit 2: Das Bild im GoDot-Speicher so aufbereiten, dass es überhaupt algorithmisch bearbeitet werden kann (abhängig von einer wählbaren Hintergrundfarbe wird das Bild erstmal komplett monochrom gerendert, das erzeugt die zählbaren Pixel).
Vorarbeit 3: Entscheiden, welches Bildmaterial besonders geeignet ist, so einen Saver zu testen: Ich fange mit Bildern an, die selbst bereits PETSCII-Bilder waren, wie sie vom Modifier PrintTo4Bit erzeugt werden können (wenn du dem Link folgst: die unteren Beispiele angucken). Wenn solche Bilder rekonstruiert werden können, ist der Algorithmus ok.
Probleme kommen auf jeden Fall dadurch, dass eine ganze Reihe der Zeichen statistisch identisch sind, und ich dafür noch Unterscheidungsmerkmale definieren muss.
An der Stelle stehe ich gerade.
Arndt
Ich stelle gerade fest, dass ich gerade dabei bin, das Thema "Mustererkennung" neu zu erfinden! Na, herzlichen Glückwunsch...
Arndt
(Das kann dauern...)
Zwischendurch:
Habe gerade ein Modul zum Anzeigen eines (beliebigen) Bildes in Multi-FLI fertig (Beschreibung im Online-Handbuch kommt noch), ist eine Ableitung des Moduls für Multi-IFLI.
Dabei ist mir aufgefallen, dass die Darstellung der Bilder manchmal waagerechte Farbbänder aufweist, nicht immer gleich aussehend und nicht immer überhaupt sichtbar (ab und zu aber auch immer wieder gleich). Ein Timing-Problem?
Arndt
Hab das DisplayFLI noch mal erweitert. Jetzt kann man wahlweise Multicolor- oder Hires-FLI aktivieren. Hier die Beschreibung. Mir ist noch ein zweiter Fehler (zu dem bereits im vorigen Post genannten) aufgefallen: die untersten vier Scanlines sind fehlerhaft (Beschreibung auf der GoDot-Seite). Über Anregungen zum Debuggen würde ich mich freuen. Ich finde einfach die Ursache nicht.
Arndt
Ich finde einfach die Ursache nicht.
Ha! CodeBase64 ist dein Freund! Der Fehler ist hardwarebedingt und war mir noch nie wirklich bewusst. Hab gleich die FLI-Routine von Manfred Trenz rausgeschmissen und die von Graham eingebaut.
Also: DisplayFLI für beliebige Bilder, wahlweise als Multi- oder als Hires-FLI. Jetzt zu meiner Zufriedenheit fertig.
Dann kann ich ja wieder an die Mustererkennung gehen...
Schon mal weihnachtliche Grüße in die Runde
Arndt
Dann mal ein Zwischenbericht:
Im Post 157 machte Drachen die harmlos klingende Anregung, mal ein Grafikbild in ein PETSCII-Bild (Textmodus) umzuwandeln. In unbedarfter Euphorie hab ich das gleich als neue Aufgabe betrachtet und hier den Saver PETSCII in Aussicht gestellt. Anfang Dezember ging mir dann langsam auf, dass so eine Konversion ein Problem der Mustererkennung und nicht mal so nebenbei hingecodet ist... In Post 169 kann man nachlesen, wie ich da eingestiegen bin.
Das Ganze hat sich inzwischen zu einem veritablen Projekt entwickelt. Mir ist zum Beispiel bei dieser Arbeit zum ersten Mal wirklich bewusst geworden, dass GoDot nicht nur Dateiformatkonvertierungen kann, sondern (na klar!) auch Grafikmoduskonvertierungen, und zwar schon immer. War mir - wie gesagt - nur gar nicht richtig klar. Was mich aber sofort dazu brachte, die entsprechenden Module zu überarbeiten: Smooth und seine beiden Komponenten Average und VSmooth und das Modul, auf dem die Farbumwandlungen darin überhaupt beruhen: Tint. Daraus entwickelte sich das neu gecodete Modul ForceMulti, das aus jedem beliebigen Bild ausdrücklich ein Multicolorbild berechnet (Bildbeispiele hier).
Und um die ganzen neuen Erkenntnisse zu Papier zu bringen, hab ich dann noch das Tutorial zum Thema Konvertieren auf den Weg gebracht.
Heute ist noch ein Modul, das dieses Thema abrundet, dazugekommen: ForceHires. Zwar konnte man schon immer (eben!) ein beliebiges Bild in Hires anzeigen lassen (und es auch in einem Hiresformat abspeichern), dabei blieben aber GoDots Bilddaten unbeeinflusst. ForceHires wandelt sie nun tatsächlich um in Hires (mit allen Nachteilen natürlich). Aber diese eben beschriebenen fünf Module mussten für das eigentliche Ziel (den Saver für PETSCII nämlich) erst einmal abgeschlossen sein.
Ihr seht also: ich bin immer noch am Ball, es dauert aber noch was. Wer weiß, worüber ich noch alles stolpere...
Arndt
Das finde ich echt Spitze von Dir.
Das du dein Projekt immer wieder überarbeitest.
Gruß Drachen
Mir gefallen die PETSCII Bilder total!!
Wäre ne neuauflage für den Tapeport mit 200 PETSCII Bildchen ganz nett...
Vorarbeit 1: Jedes der 120 Zeichen eingeteilt in vier Quadranten zu je 16 Pixel, die Pixel ausgezählt, in eine Tabelle geschrieben und diese dann nach Häufigkeit geordnet.
Warum erfolgt eigentlich die Aufteilung in vier Quadranten? Welchen Vorteil hat das?
vier Quadranten? Welchen Vorteil hat das?
Der Grund ist Differenzierbarkeit, ich suche nach einem (einfachen) Weg, die Zeichen vorweg erst einmal zu beschreiben, ohne in Brute-Force-Manier beim Suchen immer wieder alle Zeichen einzeln zu vergleichen:
- Auf dieser Wiki-Seite ist schon mal ein Hinweis auf den grundsätzlichen Aufbau der C=-Textgrafikzeichen (hinter Low). Die meisten Grafikzeichen benutzen die vier Quadranten so, dass entweder immer einer die Vorlage für einen, zwei oder alle drei anderen Quadranten ist, oder so, dass mehrere gleich sind, aber einige dafür leer bleiben (bei dem Beispiel im Wiki sind der erste und der vierte gefüllt, der zweite und dritte sind dagegen leer. Die meisten Zeichen lassen sich durch Pixelzählung in den vier Quadranten unterscheiden. Die brauche ich nicht mehr komplett zu vergleichen, Ähnlichkeiten in den vier Quadranten reichen dann.
- Natürlich kommen Zeichen vor, die unterschiedlich aussehen, aber gleiche Zählergebnisse aufweisen. Dann soll der zweite Beschreibungsschritt vorgenommen werden: Wo häufen sich die Pixel (oben, unten, links, rechts)? Dann kann ich wiederum Zeichen direkt finden, ohne viel weitersuchen zu müssen.
- Bleiben die symmetrischen Zeichen (sowas wie Shift-W, das ist der Kringel, Shift-S, die Kugel). Erst die muss ich nun komplett vergleichen, damit ich sie unterscheiden kann.
Inzwischen ist mir aufgefallen (beim PC-Programm PETSCII, das die Brute-Force-Methode anwendet, so ein PC hat ja genug Ressourcen), das auch Zeichen wie Punkt oder Minus oder sogar manchmal Buchstaben (E, F...) Sinn machen. Da muss ich mir aber noch was überlegen.
Durch die Module, die ich jetzt upgedatet habe (siehe vorherige Posts), ist jetzt aber schon mal klar, wie ich die Farbzuweisung vornehmen muss. PETSCIIs sind ja im Ergebnis Hires-Bilder.
Arndt
Zwischendurch:
Ich hab denn mal wieder nebenbei was anderes gemacht, diesmal einen Lader für das C128-Basic8-Format (Basic8 ist eine super Basic-Erweiterung für den C128, vor allem zum Beschicken des VDC mit Grafik). Basic8-Bilder sind grundsätzlich in Hires (VDC eben), können aber sehr vielfarbig aussehen, da man vom Basic aus festlegen kann, wie groß eine Kachel sein soll: die kleinste ist 8x2 Pixel groß, fast Standard-FLI also. Ein Basic8-Bild kann dabei beliebig groß sein, man kann ja den VDC zu allem Möglichen zwingen. Es muss halt nur (samt Farben) in einen 64K-VDC reinpassen.
Na, jedenfalls, diese erste Version des Laders holt nur den Monochromanteil (der ist bei allen Bildern gleich). Er holt dabei immer nur als größtmöglichen Ausschnitt 320x200 Pixel.
So sieht das dann aus. Übrigens ist IPaint ein Ableger von Basic8, ein Grafikprogramm, das den VDC im Interlace arbeiten lässt. Standard-Bildgröße ist dort 640x400 Pixel (monochrom und farbig).
Einen Saver für Basic8 wird es ebenfalls geben (ist schon in der Mache).
Arndt
Frohe Ostern! (Osterhasen gibt's hier nicht...)
Zur Ergänzung meines letzten Posts: Link zur Manual-Seite.
Arndt