Nikon Kamera - Nikon Camera: Difference between revisions

From IMT-Wiki
Jump to navigationJump to search
mNo edit summary
(Ergänzung zum allgemeinen Code-Ablauf)
Line 8: Line 8:


Ein Beispiel-Code mit ausführlichen Kommentaren für die Verwendung der SDK in C# befindet sich auf dem Röntgenoptik-Sharepoint. Zugriff auf diese Dateien hat jedes Mitglied der Röntgenoptik Gruppe.
Ein Beispiel-Code mit ausführlichen Kommentaren für die Verwendung der SDK in C# befindet sich auf dem Röntgenoptik-Sharepoint. Zugriff auf diese Dateien hat jedes Mitglied der Röntgenoptik Gruppe.

'''Grundsätzliche Funktionsweise:'''
* Die von Nikon bereitgestellte Bibliothek exportiert eine einzelne Eingangsfunktion
* Dieser Eintrittsfunktion werden zwei Parameter übergeben
** Hexadezimale Kennzfiffer: Zur Defintion welche Funktion der Bibliothek aufgerufen werden soll (Bsp.: Vorschaubilder abrufen, Bildinformationen liefern,....)
** C-Struktur: Diese enthält je nach aufgerufenen Befehl die notwendigen Parameter für den Befehlt (Bsp.: Pfad zur *.nef Datei)
* Es besteht ein festgelegter Ablauf, wie schlussendlich die Daten aus der *.nef Datei abgerufen werden können:
** Öffnen der Bibliothek
** Starten einer Session (wobei eine Session das lesen von einer *.nef Datei ist)
** Bildinformationen abrufen (z.B. Höhe, Breite, Bit-Tiefe)
** Dateiinformationen abrufen (welche Codierung haben die Bildinformationen: jpeg, tiff, ...)
** Vorschaubilder abrufen (optional): Jede *.nef Datei speichert gleichzeitig drei Vorschaubilder in unterschiedlichen Größen in jpgeg Komprimierung. Die Bibliothek liefert die Bilddaten in einem ByteArray, das direkt in eine Datei geschrieben werden kann (24 bit RGB, little-Endian).
** Bild abrufen (optional): ruft die eigentlichen Bildinformationen aus der *.nef Datei ab. Die Bibliothek liefert hier ebenfalls die Bilddaten in einem ByteArray, das direkt in eine Datei geschrieben werden kann (48 bit RGB, little-Endian).
** Beenden der Session (n.B. wenn die Session nicht geschlossen wird, kann die Bibliothek nicht erneut angesprochen werden, das heißt es kann keine weitere *.nef Datei bearbeitet werden)
** Schließen der Bibliothek


'''Anmerkungen:'''
'''Anmerkungen:'''

Revision as of 15:00, 6 November 2013

English version

Nikon Kamera

Nikon Kamera Dateiformat

Nikon verwendet für seine Kameras das sogenannte Nikon Electronic File Format (*.nef). Das *.nef Dateiformat wird von diversen Anwendungen unterstützt (z.B. Photoshop). Falls man aber eine große Anzahl Dateien verarbeiten will ist dieser Weg ungeeignet. Glücklicherweise bietet Nikon auf seiner Webseite die Möglichkeit an die Software Developtment Kit (SDK) herunterzuladen. Die in diesem Paket enthaltene Programmbibliothek (dll) exportiert funktionen, die die Verarbeitung von *.nef Dateien erlaubt.

Ein Beispiel-Code mit ausführlichen Kommentaren für die Verwendung der SDK in C# befindet sich auf dem Röntgenoptik-Sharepoint. Zugriff auf diese Dateien hat jedes Mitglied der Röntgenoptik Gruppe.

Grundsätzliche Funktionsweise:

  • Die von Nikon bereitgestellte Bibliothek exportiert eine einzelne Eingangsfunktion
  • Dieser Eintrittsfunktion werden zwei Parameter übergeben
    • Hexadezimale Kennzfiffer: Zur Defintion welche Funktion der Bibliothek aufgerufen werden soll (Bsp.: Vorschaubilder abrufen, Bildinformationen liefern,....)
    • C-Struktur: Diese enthält je nach aufgerufenen Befehl die notwendigen Parameter für den Befehlt (Bsp.: Pfad zur *.nef Datei)
  • Es besteht ein festgelegter Ablauf, wie schlussendlich die Daten aus der *.nef Datei abgerufen werden können:
    • Öffnen der Bibliothek
    • Starten einer Session (wobei eine Session das lesen von einer *.nef Datei ist)
    • Bildinformationen abrufen (z.B. Höhe, Breite, Bit-Tiefe)
    • Dateiinformationen abrufen (welche Codierung haben die Bildinformationen: jpeg, tiff, ...)
    • Vorschaubilder abrufen (optional): Jede *.nef Datei speichert gleichzeitig drei Vorschaubilder in unterschiedlichen Größen in jpgeg Komprimierung. Die Bibliothek liefert die Bilddaten in einem ByteArray, das direkt in eine Datei geschrieben werden kann (24 bit RGB, little-Endian).
    • Bild abrufen (optional): ruft die eigentlichen Bildinformationen aus der *.nef Datei ab. Die Bibliothek liefert hier ebenfalls die Bilddaten in einem ByteArray, das direkt in eine Datei geschrieben werden kann (48 bit RGB, little-Endian).
    • Beenden der Session (n.B. wenn die Session nicht geschlossen wird, kann die Bibliothek nicht erneut angesprochen werden, das heißt es kann keine weitere *.nef Datei bearbeitet werden)
    • Schließen der Bibliothek

Anmerkungen:

  • In den *.nef Dateien sind immer vorschaubilder in Unterschiedlichen Auflösungen enthalten (*.jpg Kompression). Diese können mit der SDK ebenso extrahiert werden. Die erhaltenen Daten sind im 24 bit RGB (8 bit Rot, 8 bit Grün, 8 bit Blau) little-Endian Format und können z.B. mit ImageJ über File->Import->Raw mit eben erwähnten Einstellungen importiert werden.
  • Die eigentlichen Bildinformationen liegen im 48 bit RGB (16 bit Rot, 16 bit Grün, 16 Bit Blau) little-Endian Format vor. Bis zum erstellen dieses Artikels ist kein Programm bekannt, dass dieses Dateiformat selbstständig lesen kann. Man kann sich jedoch z.B. mit Matlab behelfen:
function displayNEF(width, height)

% open file
fileHandle = fopen('FullPic_4928_3280.raw');
% read in 16 bit values in little-Endian
test = fread(fileHandle,inf,'*uint16','l');
% get first (=red) layer of image and reshape to a matrix with |height|
% rows and |width| columns
I1 = reshape(test(1:3:end),height,width);
% display red layer
figure, imagesc(I1), colormap('gray');
% close file
fclose(fileHandle);

end
  • Die Dokumentation und der Bedienkomfort der NIKON SDK ist nicht sehr hoch. Es lohnt sich in den oben erwähnten Beispiel-Code auf dem Röntgenoptik-Sharepoint zu schauen.

Nikon Kamera Ansteuerung

TODO: Wird noch ergänzt

Kategorie:Kategorie - Category