Um einen Einstieg in die digitale Bildverarbeitung zu machen
sind grere Investitionen unvermeidlich. Das teuerste an 
der Ausrstung ist eine Kamera, deren Signal digitalisiert 
und in den Speicher eines Computers eingelesen wird. Ein 
gezielter Griff in die Grabbelkiste und die artfremde 
Verwendung eines dynamischen Speicherchips schafft hier 
Abhilfe

Die aufwendigste, qualitativ beste Methode zur Bilderfassung 
ist, das Ausgangssignal einer normalen Videokamera zu 
digitalisieren. Der Schaltungsaufwand dazu ist jedoch 
erheblich. Es mu ein schneller D/A-Wandler, gengend 
schneller Speicher und ein Interface zum Computer 
bereitgestellt werden. Fr einfache Experimente ist dieser 
Aufwand einfach zu hoch. Eine CCD-Kamera mit Computer-
Interface ist da schon um einiges billiger zu haben, doch 
sprengt auch sie mit Leichtigkeit das Hobby-Budget, wenn man 
bedenkt, da fr einfache Anwendungen in der Mustererkennung 
auch eine geringere Auflsung ausreicht.

Ein Ausweg aus diesem Dilemma bietet der unkonventionelle 
Einsatz eines Speicherchips. DRAMs knnen als optischer
Sensor mibraucht werden. Vor einigen Jahren hat die Firma
Micron Technology (ein amerikanischer Chiphersteller ) dies 
erkannt und eine spezielle Version eines 64k-DRAMS, mit 
einem Fenster versehen, als Image-Sensor verkauft. Da auch 
die Geometrie des Chips bekannt war, konnte man mit wenig 
Aufwand eine einfache Kamera bauen. Leider werden diese 
Chips nicht mehr angeboten, so da auch dieser Weg zu einer 
Computer-Kamera versperrt schien.

Doch eines Tages entdeckte ich beim Ausschlachten eines 
Computers eine Platine mit DRAMS, die in ein Keramikgehuse 
mit Metalldeckel verpackt waren. Der Deckel war schnell 
entfernt, ein Glasstck als Schutz angebracht, doch was nun? 
Um mit geringstmglichem Aufwand mit Experimenten beginnen 
zu knnen, modifizierte ich schnell denn Druckerport eines 
PCs (er hat genau die richtige Zahl von I/O-Leitungen) ein 
kleines bischen und schrieb zwei kleinere Assemblerprogramme 
zur Ansteuerung. Und - oh Wunder - nach einigen Versuchen 
konnte man tatschlich auf dem Computerbildschirm etwas 
erkennen.

Wie funktionierts ?

Ein 64k-DRAM enthlt 65536 Speicherzellen, die in Matrixform 
angeordnet sind, um einen einfachen Zugriff zu ermglichen. 
Im Falle des hier verwendeten D4164 von NEC sind es vier 
Matrizen zu je 64x256 Speicherzellen.

Jede Speicherzelle besteht aus einem Kondensator und einem 
Transistor. Im Kondensator wird Information in Form 
elektrischer Ladung gespeichert. Der Transistor dient dem 
Zugriff auf diesen Kondensator. Ist eine Zeile der Matrix 
selektiert, so schalten alle 256 Transistoren dieser Zeile 
durch und verbinden den jeweiligen Kondensator mit einem von 
256 Verstrkern. Liegt die Spannung an einem Verstrker  
oberhalb einer bestimmten Schwelle, so wird angenommen, da 
eine logische 1 gespeichert wurde, sonst erscheint am 
Ausgang des Vertrkers eine logische 0 (Die Interpretation 
von Ladung als logischer 1 und keiner Ladung als logischer 0 
ist willkrlich und kann - auch auf dem selben Chip - fr 
verschiedene Speicherzellen unterschiedlich sein).
Von den 256 Verstrkerausgngen wird durch die Zeilenadresse
einer ausgewhlt, dessen Signal dann am Ausgang des DRAM 
erscheint.

Da nun ein Kondensator auf einem Speicherchip nicht ohne 
Verluste ist - der Kondensator verliert langsam aber sicher 
die aufgebrachte Ladung - mu der Inhalt eines DRAMS 
regelmig aufgefrischt werden. Dazu wird beim Lesen einer 
Zeile das Ausgangssignal der Verstrker in die Kondensatoren 
zurckgeschrieben. Wird der Speicher nicht aufgefrischt, ist 
die Ladung irgendwann einmal verloren, das entsprechende Bit 
kippt.

Durch Belichten des Kondensators wird dieser Effekt 
verstrkt, der Kondensator entldt sich schneller, das Bit 
kippt frher. Die Zeit in der der Kondensator entladen wird 
ist also ein direktes Ma fr die Lichtintensitt an dieser 
Stelle.


Um diesen Effekt zu nutzen, wird wie folgt vorgegangen:

- Zuerst werden alle Kondensatoren des Speichers mit Ladung 
versehen.

- Jetzt wird gewartet, bis die Belichtungszeit verstrichen 
ist.

- alle Speicherzellen werden ausgelesen. Jede Zelle, deren 
Zustand sich gendert hat wird als hell angenommen, die 
anderen als dunkel.

Ein DRAM ist ein Speicherbaustein, deshalb ist die Zuordnung 
einer logischen Adresse zu einem physikalischen Ort nicht 
trivial. Um diese Zuordnung herauszufinden sind einige 
Versuche vonnten.

Bei einem DRAM, dessen Adressen in zwei Portionen als 
Zeilen- und Spaltenadresse angelegt werden, kann man davon 
ausgehen, da sich dies auch in der physikalischen Struktur 
des Chips wiederspiegelt. Wie sich gezeigt hat, ist es 
tatschlich so, da logische Zeilenadressen physikalischen 
Zeilen und logische Spaltenadressen physikalichen Spalten
entsprechen.
Die logischen Adressen innerhalb einer Zeile entsprechen 
allerdings nicht dem physikalischen Ort der Speicherzelle 
auf dem Chip. Im ausgelesenen Bild zeigt sich diese falsche 
Zuordnung durch vertauschte Zeilen und Spalten. Durch 
Vertauschen von Adressbits lsst sich dieser Fehler beheben, 
dazu ist jedoch einiges Experimentieren erforderlich.
Die Geometrie von Chips verschiedener Hersteller kann 
natrlich vllig anders sein. Die Schaltung und die 
dazugehrende Programme funktionieren so nur mit dem NEC 
4164. Fr andere Speicherbausteine mssen sie wahrscheinlich 
gendert werden, das Prinzip ist jedoch dasselbe.

Nun wird deutlich, da unser Chip aus vier Matrizen besteht, 
die nebeneinander liegen. Die zwei ueren Matrizen sind von 
den zwei mittleren durch einen relativ groen Zwischenraum 
getrennt; es fehlt ein Stck des Bildes. An dieser Stelle 
befindet sich wahrscheinlich die Dekodierlogik. Die zwei 
mittleren Matrizen sind durch einen viel kleineren 
Zwischenraum getrennt, so da sie als eine 128x256-Matrix 
angesehen werden knnen. Aus diesem Grund werde nur die
beiden mittleren Matrizen als Sensor benutzt, die toten 
Zonen sind relativ strend. Ein Blick mit einer Lupe auf den 
Chip lt die Matrixstruktur deutlich erkennen. 

Jetzt ist die Mglichkeit da, das Objektiv scharfzustellen. 
Bei genauem Hinsehen (und einigem Nachdenken) fllt auf, da 
immer noch einige Zeilen und Spalten lokal vertauscht sind. 
Zwei Zeilen werden korrekt abgebildet, die nchsten zwei 
sind dann miteinander vertauscht. Die Leseroutine korrigiert 
diesen Fehler. Als letztes erfolgt noch die Korrektur der 
Spaltenadressen, von denen vier richtig, die nchsten vier 
in der falschen Reihenfolge sind. 

Das Herausfinden der korrekten Zuordnung ist nicht ganz 
einfach, da eine einigermaen solide Optik notwendig ist, 
die mglichst scharf abbildet. Ob die Abbildung scharf ist 
sieht man wiederum nur dann, wenn die Zuordnung richtig ist! 

Am besten beginnt man zunchst mit einer weien Flche, auf 
der dann einfache Objekte angebracht und bewegt werden. 
Durch sorgfltiges Beobachten, messerscharfes Schlieen und
einige Geduld ist es dann mglich, zuerst die groben 
Strungen und dann die lokalen Eigenheiten des Chips 
herauszufinden. Die groben Strungen findet man am 
einfachsten mit schwarzen Linien, die lokalen mit einem 
Kreis, der etwas hin- und hergeschoben wird. 



Um den Drucker-Port des PCs zum Anschlu des DRAMS benutzen 
zu knnen, sind einige Modifikationen ntig. Viele 
Druckerports sind mit Parallelkondensatoren und 
Serienwiderstnden ausgestattet, die wohl die steilen 
Schaltflanken etwas abrunden sollen; diese Bauteile knnen 
wir hier nicht brauchen, sie werden rigoros entfernt bzw. 
brutal kurzgeschlossen. Bei einfachen Karten mit einem 
hochintegrierten Baustein sind die CMOS-Ausgnge manchmal 
direkt mit den Druckeranschlssen verbunden, kein sehr 
feiner Zug, denn hier mu ein Treiber zwischengeschaltet 
werden.

Nun werden die Druckeranschlsse mittels eines Kabels mit
der IC-Fassung verbunden, auf die spter das DRAM gesteckt 
werden soll. Diese Fassung sollte eine gute Qualitt haben 
(vergoldete, gedrehte Kontakte oder eine ZIF-Fassung), da 
der Chip ja doch fters gewechselt wird. Das DRAM bentigt 
auch eine Versorgungsspannung; diese kann ber einen nicht 
benutzen Pin des Druckeranschlusse zugefhrt werden. Ein 
Drucker sollte dann dort aber nicht mehr angeschlossen 
werden!


Sehr wichtig ist auch der Entkopplungskondensator zwischen 
Pin 8 und Pin 16 des DRAM, da es beim Zugriff einen hohen 
Strom bentigt (ca. 100 mA). Dieser Kondensator wird direkt 
an der IC-Fassung angeltet (Polung beachten! Pin 8 ist +5 
Volt, Pin 16 ist Masse). Ohne diesen Kondensator 
funktioniert berhaupt nichts!



Mechanischer Aufbau der Optik

Die nutzbare Flche des NEC 4164 betrgt etwa 1.2 * 6 mm2, 
wenn man auf die ueren beiden Matrizen verzichtet. Die 
Optik sollte dieser Tatsache Rechnung tragen und 
entsprechend ausgewhlt werden.
Ein Objektiv mit 8 mm Brennweite entspricht etwa einem 50 mm 
Standardobjektiv an der Kleinbildkamera. In Frage kommen 
also Brennweiten von 5 bis 35 mm.
Es lohnt sich, sich nach einem billigen gebrauchten Objektiv 
umzusehen. In Frage kommen Optiken aller Art; wir verwenden 
ein Objektiv, das fr eine Super-8-Kamera gedacht war (f = 
25mm). Besser ist ein Objektiv noch krzerer Brennweite 
(alte Schmalfilmkamera, defekte Videokamera etc.). Der 
Fotohndler um die Ecke hat vielleicht etwas passendes.
Aber auch ohne hochwertiges Objektiv lassen sich durch 
Verwendung einer Linse kurzer Brennweite gute Ergebnisse 
erzielen. Die Abbildungsqualitt einer einfachen Linse mu 
nicht hinter der eines richtigen Objektives zurckstehen, da 
der "Film", also der Speicherchip ohnehin nicht das 
Auflsungsvermgen einer Fotoemulsion hat.
Eine Standardbauanleitung kann wegen der Vielzahl der 
mglichen Optiken nicht gegeben werden; es geht einfach
darum, das Objektiv im richtigen Abstand vor dem Chip zu 
plazieren. Es ist darauf zu achten, da der Aufbau gut 
zentriert ist und das die Optik genau auf die "Filmebene" 
abbildet.

Lichtempfindlichkeit

Der Chip ist nicht auf eine hohe Lichtempfindlichkeit hin 
entwickelt worden, so da die Belichtungszeiten deutlich 
lnger ausfallen, als bei einer CCD-Kamera.
Die Zeiten bewegen sich (je nach Beleuchtung) zwischen 
einigen Hundertstel und 20 Sekunden. Lngere Zeiten sind 
nicht mglich, da sonst das Bild zu sehr verrauscht.
Durch diese langen Belichtungszeiten ist die Verwendung 
eines Statives dringend angeraten, zumal man die Hnde frei 
haben sollte, um auf der Tastatur die Belichtungszeit zu 
korrigieren und gelungene Bilder abzuspeichern.
Der Chip ist im roten Bereich deutlich empfindlicher als im 
blauen, mglicherweise reicht die spektrale Empfindlichkeit 
bis ins Infrarote.

Software

Das Initialisieren und Auslesen des Speicherchips wird von 
Assembler-Routinen erledigt, die in ein Turbo-Pascal-
Programm eingebunden sind.

Initialisieren
Die Routine INITRAM initialisiert den Speichechip. Da dem 
Vorhandensein von Ladung in den von uns genutzten 
Speicherzellen des NEC 4164 einer logischen "1" entspricht, 
werden alle Speicherzellen mit einer "1" beschrieben. Zur 
Ansteuerung des Chips mu das etwas komplizierte DRAM-Timing 
eingehalten werden.
Zuerst wird die Zeilenadresse an die Adresseingange des 
Speicherbausteins gelegt. Der Eingang RAS wird anschlieend 
auf "0" gezogen, das DRAM bernimmt die Zeilenadresse. Dann 
wird die Spaltenadresse angelegt, DIN auf den gewnschten 
Pegel (hier eine logische "1") gesetzt, danach CAS auf "0" 
gezogen. Das DRAM hat nun die Spaltenadresse und das 
Datenbit bernommen. Dieser Vorgang wird fr alle 32768 
benutzte Speicherzellen wiederholt; jetzt ist das DRAM
initialisiert, alle Kondensatoren sind mit einer Ladung 
versehen.

Entsprechend der gewnschten Belichtungszeit wird nun das 
Auslesen der Information verzgert. Whrend dieser 
Belichtung geht die Ladung der Speicherzellen entsprechend 
der Intensitt des einfallenden Lichtes verloren und der 
logische Inhalt wechselt.

Auslesen der Information
Ausgelesen wird der Speicherchip mit der Prozedur LESERAM. 
Es wird wie bei INITRAM vorgegangen. Die Inhalte der 
Speicherzellen werden einzeln hereingeholt, um in 
Bildinformation umgewandelt zu werden. Dabei werden auch die 
lokalen Zuordnungsfehler korrigiert. Jeweils 8 Bit werden in 
einem Byte abgelegt. Ein Bild bentigt also 4096 Byte, da 
nur der halbe Speicherchip benutzt wird. Diese Daten werden 
dann dem Hauptprogramm bergeben.

Eine Korrekturroutine gleicht unterschiedliche Empfindlich-
keiten einzelner Pixel aus. (Die Speicherzellen am Rande
einer Matrix sind empfindlicher als die im Zentrum)

Da auch zwischen den beiden mittleren Matrizen (NEC4164 !) 
ein kleiner Zwischenraum ist, ist noch eine zweite 
Korrekturroutine vorhanden. Diese zieht die beiden Hlften 
des Bildes um 5 Pixelbreiten auseinander und fllt den 
entstehenden Zwischenraum (einigermaen) sinnvoll aus. Unter 
Umstnden ist es sinnvoll, auf diese Korrektur zu 
verzichten, oder den Fllalgorithmus zu verbessern.

Die drei Routinen INITRAM, LESERAM und die Korrekturen sind 
in der Prozedur "Belichte" zusammengefasst und werden mit 
Angabe der Belichtungszeit und eines Feldes zur Aufnahme der 
Bildinformation aufgerufen.
Die Prozedur "ANZEIGE" dient zur schnellen Ausgabe des 
Bildes auf VGA-Karten. Dabei wird die Bildinformation direkt 
in den Bildspeicher geschrieben, was eine wesentliche 
Beschleunigung zur Folge hat. Die vertikalen Abstnde der 
einzelnen Speicherzellen sind leider doppelt so gro wie die 
horizontalen, das wird in der Anzeigeroutine dadurch 
ausgeglichen, da die Zeilen doppelt dargestellt werden.
Zur Anpassung an andere Bildschirmadapter mu dieses 
Unterprogramm angepasst werden.

Die Prozeduren "SPEICHERN" und "LESEN" schreiben bzw. lesen 
ein Bild im .BMP-Format auf bzw. von der Festplatte.

Weitere Programme

Die oben erluterten Routinen, werden von verschieden 
Anwendungsprogrammen genutzt.
Das Programm "KUCKUCK" ist das wichtigste davon; mit ihm 
knnen einzelne Aufnahmen sowie Bildserien mit 2, 4 oder 10 
Graustufen aufgenommen werden. Das aktuelle Bild wird immer 
auf dem Monitor dargestellt und kann mit Druck auf die 
Leertaste abgespeichert werden.
Prinzipiell kann die Kamera natrlich nur Bilder mit 2 
Helligkeitswerten aufnehmen, jedoch lassen sich durch 
Mehrfachbelichtungen auch Bilder mit Grauwerten erzeugen.
Die Einzelbelichtungen der Halbtonbilder werden in einer 
groen Datei (".3" bzw ".9") hintereinander abgespeichert 
und mssen zur weiteren Verarbeitung mit den Programmen
"Grau3", "Grau4" und "Dither" umgewandelt werden:
Das Programm "Grau3" erzeugt aus 3 Einzelbelichtungen eine 
Bitmap-Datei mit 4 Graustufen. (4 Bit/Pixel Information, 
genutzt werden nur die Farben 0,7,8 und 15 entsprechend 
schwarz, hellgrau, dunkelgrau und wei auf der VGA-Karte)
Fr eine schnelle Bildschirmausgabe der Halbtonbilder ist 
eine andere Umwandlung ntig: "Grau4" wandelt die gleichen 
Eingabedaten wie "Grau3" in ein anderes Format um: Eine 
Datei, deren 4 Einzelteile den 4 Bitplanes der VGA-Karte 
entsprechen, wird erzeugt.
Die neun Einzelbelichtungen der ".9"-Dateien werden mit dem 
Programm "Dither" in ein Schwarzwei-Bild (jeweils 3 mal so 
breit und hoch wie ein Original) umgewandelt. Je nach Anzahl 
belichteter Pixel in den neun Einzelbildern wird fr jeden 
Bildpunkt eine 3*3-Matrix mit Zufallspunkten gedithert.
Das Programm "FilmAb" dient zum Abspielen fertiger 
Bildsequenzen, die mit "KUCKUCK" erstellt worden sind. So 
knnen kurze "Videoclips" mit 2 oder 4 Graustufen erstellt 
und abgespielt werden. Die Abspielgeschwindigkeit kann dabei 
frei gewhlt werden.
Da das Format 128*256 Bildunkte ungewohnt hoch ist, zumal
der Abstand der Zeilen doppelt so gro ist wie der der 
Spalten knnen Bilder auch im "Halbformat" mit 128*128 
Pixeln aufgenommen werden. Vor allem beim Anfertigen von 
"Videoclips" ist es sinnvoll diese Option zu beanspruchen, 
um Plattenplatz zu sparen.
Die einzelnen Bilder knnen mit Windows-Programmen 
weiterverarbeitet werden, die Bitmap-Dateien lesen knnen 
(z.B. Paintbrush).

Liste der einzelnen Programme und Routinen:

  - VIDEO.INC enthlt Low-Level-Routinen:

    - INITRAM, INITRAM2:	Initialisierung des D4164 im Voll-
					bzw Halbformat
    - LESERAM, LESERAM2: Lesen der Bildinformation
    - ANZEIGE: schnelle Bildschirmausgabe auf VGA-Karten
    - LESEN:	Bitmap-Datei mit 2 Farben, Gre 128*256 und 
			128*128 Pixel
    - SPEICHERN: Bitmap-Datei, Format wie bei Lesen
    - etc.

  - KUCKUCK:	Aufnahme in zwei Formaten, in 2, 4 oder 10 
			Graustufen
  - GRAU3:	Generieren einer 4-Farb .BMP-Datei aus 3 
			Einzelbelichtungen (".3" --> ".BMP")
  - GRAU4:	Generieren einer Datei mit Information fr 
			die 4 Bitplanes der VGA-Karte (".3" --> ".4")
  - DITHER:	aus 9 Einzelbelichtungen wird ein gedithertes 
			2-farbiges Bild (".9" --> ".BMP")
  - FILMAB:	2 oder 4 farbige Bitmaps werden als Film 
			abgespielt (gleicher Name: "NAMEnn.BMP")




Literatur
- Datenblatt IS 32 Optic Ram, Micron Technology
- Datenblatt 4164 DRAM, NEC
- c't 6/88 PC-Bausteine, Details ber die Centronics-
parallele-Schnittstelle
- Byte September / Oktober 1983
  Steve Ciarcia: "Build the Micro D-Cam Solid-State Video 
Camera"
- Electronics & Wireless World April / Mai / Juni 1987
  G.J. Avcock, F.W. Stone, R. Thomas: "Image aquisition
system"
- Programming Windows: Charles Petzold, Microsoft Pres


Diagramme und Bilder:

  - Ladungsabbau einer Speicherzelle
  - Verbindung der parallelen Schnittstelle zum DRAM
  - Aufbau einer einzelnen Speicherzelle
  - Timing beim Lesezugriff





