Mittwoch, 29. März 2017

März 2017 - Multimedia (Fotografie)

Das Modul 152 - "Multimedia-Inhalte in Webauftritt integrieren" ist eines der letzten Module, das ich in der Schule absolvieren muss. Wie der Name schon sagt, geht es in einem Teil darum, eine ansprechende Website zu erstellen, in der Multimedia-Inhalte wie Fotos, Videos etc. eingebunden werden.
Die Website an sich ist grundsätzlich keine so grosse Herausforderung, da kaum etwas Neues dazukommt. Jedoch müssen die Inhalte selber erstellt werden. Das bedeutet, wir müssen in Teams eigene Fotos und Videos aufnehmen sowie diese dann bearbeiten. Da dies für mich eher neu ist, schreibe ich in diesem Blogeintrag ein wenig über die Fotografie.


Allgemeines

Die Fotografie ist ein Medium, dass in sehr verschiedene Zusammenhänge gebracht wird. Sie kann unter anderem nach künstlerischen, technischen, ökonomischen, gesellschaftlichen oder sozialen Aspekte betrachtet werden. Grundsätzlich geht es in der Fotografie darum, etwas - z.B. ein Objekt oder eine Landschaft - fotografisch abzubilden.
Die analoge Fotografie wurde zu Beginn des 21. Jahrhunderts durch technologische Weiterentwicklungen von der Digitalfotografie allmählich abgelöst. Das war ein Auslöser, dass die Fotografie immer mehr aus kulturwissenschaftlicher sowie kulturhistorischer Sicht erforscht wurde, da die Industrie für analoge Fotografie zusammenbrach.

Fototechnik

Eine Fotografie ensteht im Prinzip dadurch, dass mit Hilfe eines optischen Systems, etwa einem Objektiv, das Licht eingefangen wird. Dieses Licht wird dann auf die lichtempfindliche Schicht der Kamera weitergeleitet, zum Beispiel auf eine Fotoplatte, einen Film oder einen fotoelektrischen Wandler (Bildsensor). Zur Aufnahme von Fotos wird natürlich eine Kamera eingesetzt. Je nach Kamera kann der Fotograf das optische System so manipulieren, dass ihm unterschiedliche Gestaltungsmöglichkeiten zur Verfügung stehen. Das ist unter anderem die Einstellung der Blende, Belichtungszeit etc., später mehr dazu. Die am weitest verbreitete Kamera ist die Spiegelreflexkamera (analog sowie digital).
Die Entwicklung erfolgt bei der analogen Fotografie auf chemischem Wege. Bei der digitalen Fotografie ist eine Entwicklung grundsätzlich nicht nötig, da die Daten elektronisch gespeichert werden. Eine Ausnahme sind hierbei jedoch Fotos im Rohdatenformat (.raw-Dateien). Diese müssen zuerst mit einer Entwicklungssoftware (z.B. Adobe Lightroom) oder RAW-Konvertern in nutzbare Formate gebracht werden, JPG, PNG etc. Diese Umwandlung wird als digitale Entwicklung bezeichnet.
Ein weiterer Begriff, der vor allem in der analogen Fotografie Verwendung findet, ist der Abzug. Der Abzug ist das Ergebnis einer Kontaktkopie, Vergrösserung oder einer Ausbelichtung. Abzüge sind also aus der Vorlage bearbeitete Kopien. Sie können aus einem Film (Negativ oder Dia) oder von digitalen Dateien erstellt werden.


Belichtungsdreieck

Das Belichtungsdreieck beschreibt den Zusammenhang zwischen Blende, Verschlusszeit und Empfindlichkeitseinstellung. Folgende Begriffe sind wichtig, damit man die Zusammenhänge besser erkennen kann:

ISO-Wert:
Der ISO-Wert gibt die Empfindlichkeit an. Das bedeutet, er definiert, wie Lichtempfindlich ein Medium, Filmmaterial oder Sensor ist. Je höher der ISO-Wert, desto weniger Licht benötigt der Bildsensor. Häufig vorkommende Werte sind etwa 25, 50, 100, 200, 400, ... 12'800 usw.

Verschlusszeit:
Mit der Verschlusszeit kann definiert werden, wie lange ein Medium dem Licht ausgesetzt wird. Es wird hier auch von der Belichtungszeit gesprochen. Gängige Verschlusszeiten (in Sekunden) sind 30, 15, 8, 4, 2, 1/2, 1/4, ... 1/2000 usw.


Blende:
Die Blende befindet sich im Objektiv. Mit dem Blendenwert wird eingestellt, wie weit die Blende geöffnet ist. Je weiter sie geöffnet ist, desto mehr Licht fällt auf das Medium. Ist die Blende nur wenig geöffnet, fällt in der gleichen Zeit auch weniger Licht auf das Medium. Die Blendenwerte sind folgendermassen definiert: f/1, f/1.4, f/2, f/2.8, f/4,... f/32 usw. Wobei ein tiefer Wert (f/1) bedeutet, dass die Blende weit geöffnet ist und ein grosser Wert (f/32), dass die Blende nur ganz klein ist.



Blendenöffnung


Macht man ein einfaches Foto, reicht es aus, bei der Kamera den Automatikmodus zu wählen. Will man hingegen qualitativ hochwertige Fotos erzielen, ist es einen Versuch wert, an den eben genannten Einstellungen zu schrauben, um das bestmögliche Resultat erzielen zu können.

Ist der ISO-Wert, also die Empfindlichkeit, tief, erhält man eine bessere Bildqualität. 
Der ISO-Wert muss aber unter Umständen erhöht werden, falls die Belichtungszeit für ein Foto zu hoch sein sollte, man aber lieber eine kurze Belichtungszeit haben möchte. Die Belichtungszeit kann sich unter Umständen verlängern, wenn z.B. das Objekt schlecht beleuchtet sein sollte.
Hat man einen tiefen ISO-Wert eingestellt, so sind die Farben grundsätzlich kräftiger und das Bild wird schärfer.

Die Verschlusszeit bestimmt die Zeit, in welcher Licht auf das Medium einfällt. Eine kurze Verschlusszeit lässt den Verschluss nur kurz offen, was bedeutet, das weniger Licht einfallen kann, als wenn der Verschluss länger offen und somit die Verschlusszeit höher ist. Eine kurze Verschlusszeit sorgt dafür, dass sich Objekte in Bewegung einfacher scharf stellen lassen. Beispielsweise bei einem vorbeifahrenden Auto wird etwa eine Verschlusszeit von 1/2000s verwendet. Möchte man das Fliessen eines Bachs festhalten, bietet sich eine längere Verschlusszeit an (z.B. 1/15s). Wendet man eine kurze Verschlusszeit an, wird das Wasser auf dem Foto sehr starr aussehen.

Mittels Blendenöffnung wird das Licht, das auf das Medium fällt, reguliert. Bei einem kleinen Blendenwert (z.B. f/1.4 -> Blende weit offen) können Motive isoliert werden. Dadurch werden Vorder - und Hintergrund unscharf und nur das Motiv scharf. Mit einem grossen Blendenwert (f/22 -> Blende wenig offen) wird eine grössere Schärfentiefe erreicht, was sich bei Landschaftsaufnahmen gut eignet, da so Vorder- und Hintergrund scharf abgebildet werden.

Je nachdem, wie die Lichtverhältnisse sind, können die eben genannten Einstellungen manipuliert werden, um bessere Ergebnisse zu erzielen. Wenn wenig Licht vorhanden ist, hat man die Möglichkeit, die Verschlusszeit zu verlängern, die Blende weiter zu öffnen oder den ISO-Wert zu erhöhen. Wie vorhin beschrieben, bringt jede dieser Einstellungen noch andere Vor- bzw. Nachteile mit sich. Es kommt daher immer darauf an, was und wie man etwas fotografieren will, um die richtige Einstellung vorzunehmen.

Nachfolgend wird mit dem Belichtungsdreieck grafisch festgehalten, wie sich die drei Werte zueinander verhalten.



Belichtungsdreieck



Ein letztes Beispiel soll nochmals zeigen, wie die drei Werte eingesetzt werden können. Angenommen man möchte bei eher schlechteren Lichtverhältnissen und einer windigen Umgebung eine Blume resp. deren Blüte fotografieren. Das Foto soll möglichst scharf werden, da nur die Blüte darauf zu sehen sein soll. Also wird man als erstes eine wenig geöffnete Blende wählen, das heisst einen hohen Blendenwert, etwa f/11. Weil der Wind die Blüte bewegt, muss die Belichtungszeit möglichst klein sein, z.B. 1/2000s. Da die Lichtverhältnisse nicht optimal sind und nur noch der ISO-Wert übrig bleibt, wird dieser hochgeschraubt auf z.B. 3200. Beim ISO-Wert gilt immer, so tief wie möglich und so hoch wie nötig einstellen. Mit diesen Einstellungen sollte es gelingen, eine gute Nahaufnahme mit hoher Bildqualität zu erreichen.

Diese Techniken setzten wir im Modul 152 ein, um möglichst gute Fotos zu machen. Danach werden die Fotos (im .raw-Dateiformat) noch mit Adobe Lightroom bearbeitet, um Eigenschaften wie Lichtverhältnisse, Sättigung, Kontrast, Körnung etc. anzupassen. Zum Schluss werden die fertigen Bilder dann auf einer eigens kreierten Website hochgeladen.

Mittwoch, 1. März 2017

Februar 2017 - Assembler

Wie in jedem neuen Semester haben wir in der Schule im achten und letzten Semester einige neue Module begonnen. Das Modul "121 Steuerungsaufgaben bearbeiten" behandelt vor allem das Thema Assembler, daher werde ich in diesem Blogeintrag darüber schreiben.

Assembler

Zunächst muss man unterscheiden zwischen Assembler und Assemblersprache. Beim Assembler spricht man von einem Computerprogramm, das die Assemblersprache in eine für Maschinen verständliche Maschinensprache übersetzt. Die Assemblersprache wird von Entwicklern verwendet, um die Programme für Maschinen zu schreiben. In der Praxis wird oft von Assembler gesprochen, wenn eigentlich die Assemblersprache gemeint ist.
Assembler bzw. die Assemblersprache wird dazu benötigt, um direkt auf Mikroprozessorebene zu programmieren. Das heisst, es wird kein Betriebssystem, Compiler, Interpreter etc. benötigt (was bei höheren Programmiersprachen der Fall ist), um Befehle ausführen zu können. Beispielsweise werden Ampeln mit Mikroprozessoren und folglich auch mit Assembler betrieben. 
Die Assemblersprache unterscheidet sich von der Maschinensprache insofern, als die Befehle hier immer noch in einer verständlichen Textform und nicht etwa in einer binären Schreibweise dargestellt werden. Die Assemblersprache gilt als Programmiersprache der zweiten Generation, da sie Nachfolger der direkten Programmierung mit Zahlencodes ist. Die Übersetzung mittels Assembler von Assemblersprache in Maschinensprache ist 1:1. Die Assemblersprache wird im Alltag häufig fälschlicherweise auch als Maschinensprache bezeichnet.

Programme, die mit einer Assemblersprache geschrieben sind, zeichnen sich dadurch aus, dass alle Verarbeitungsmöglichkeiten des Mikroprozessors genutzt werden. Weiterhin können solche Programme auch Hardwarekomponenten direkt ansteuern. Die Nutzung von Assemblersprachen ist heutzutage kaum mehr erforderlich, da auch die höheren Programmiersprachen sehr hardwarenah eingesetzt werden können. Je nach System macht es aber durchaus Sinn, Assembler zu verwenden. Beispielsweise bei zeitkritischen oder sehr hardwarenahen Programmen oder auch falls für die Programme nicht sehr viel Speicherplatz zur Verfügung steht. Ältere technische Anlagen werden noch häufig damit gesteuert.

Da jede Computerarchitektur unterschiedlich ist, hat auch jede Computerarchitektur ihre eigene Assemblersprache. Sie unterscheiden sich in Anzahl und Typ der Operationen.
Die grundlegenden Operationen sind bei allen alle Assemblersprachen gleich:
- Daten lesen & schreiben aus/in den Prozessor von/nach Hauptspeicher
- einfachste logische Operationen - AND/OR/NOT/SHIFT
- einfache Kontrolle des Programmflusses (durch Flags -> Sprünge, Overflow etc.)
- einfache arithmetische Operationen (Additionen, Vergleiche etc.)


Bei Steuerungsaufgaben wird nach dem EVA-Prinzip gearbeitet, Eingabe, Verarbeitung, Ausgabe.
Konkreter bedeutet dies, dass ein Sensor, für die Eingabe, ein Prozessor zur Verarbeitung, und ein Aktor für die Ausgabe verwendet werden. 

Ein einfaches Beispiel kann etwa der Taschenrechner sein. Als Eingabe wird der Tastendruck des Benutzers registriert. Der Prozessor verarbeitet diese Eingabe, indem er den entsprechenden Befehl ausführt. Zum Beispiel "Speichere die Zahl 2 und zeige sie an". Anschliessend wird der Prozessor dem Bildschirm eine 2 zurückgeben, die er anzeigen soll.






Programmierung mit Assembler

Der wohl am häufigsten genutzte Befehl in der Assemblersprache ist der mov-Befehl. Er wird verwende um den Wert des einen Operanden in den anderen Operanden zu kopieren. Der mov-Befehl sieht folgendermassen aus:


mov op1, op2

"op1" und "op2" stellen die Operanden dar und haben je nach System einen anderen Namen. Bei diesem Befehl wird der erste Operand auch als Zieloperand bezeichnet und der zweite als Quelloperand. Da der Wert kopiert wird, müssen auch beide Operanden derselben Grösse entsprechen. Hat der Quelloperand 8 Bit, so muss auch der Zieloperand 8 Bit gross sein.

Ein weiterer oft benutzter Befehl ist der xchg-Befehl. Dieser wird gebraucht, um die Werte der angegebenen Operanden zu vertauschen. Die Syntax ist gleich dem vorherigen Befehlt und sieht folgendermassen aus:

xchg op1, op2


Um einen besseren Einblick darüber zu erhalten, was es alles für Register, Flags, Pointer etc. gibt, ist nachfolgend ein Teil des Debuggers vom Assembler abgebildet.



Hier sind alle Register etc., die ein Assemblersystem verwendet, aufgelistet. Die erste Zeile stellt das Daten- sowie Stackregister dar. Je nach Aufruf unterscheidet sich der Inhalt der Register. Ausnahme ist das BX-Register, welches immer auf null gestellt ist. Das CX-Register gibt die Grösse des Programmcodes an.
Die nächste Zeile zeigt die Segmentregister an. Diese beinhalten Daten wie Programmcode, konstante Daten etc. Das IP-Segment (Instruction Pointer) zeigt an, an welcher Stelle sich das Programm im Code befindet. Dahinter kommen verschiedene Flags, Overflow Flag, Sign Flag, Interrupt Flag, Zero Flag etc.
In der letzten Zeile sieht man links zuerst die Adresse des Befehls und danach, welcher Befehl als nächstes folgt.
In diesem Beispiel sieht man, dass als Befehl "mov AX, 5522" folgen wird. Das Ergebnis sieht dann folgendermassen aus:



Man kann nun sehen, dass das Register AX,  oben links, nun den Wert 5522 angenommen hat. Man kann mit der Assemblersprache natürlich viel umfangreichere Programme erstellen, z.B. auch ein klassisches "Hello World". Dazu werden natürlich entsprechende Ausgabegeräte gebraucht (z.B. Monitor).