Difference between revisions of "Exif"

From ElphelWiki
Jump to: navigation, search
Line 1: Line 1:
 
[[Category:Development Topics]]
 
[[Category:Development Topics]]
In 353 camera in JPEG images we use standard EXIF fields (EXIF 2.2 specification from exif.org) for image description. All JPEG images have mentioned below fields (you can check this with any program what have support of Exif, in Linux with "exif" command line program, for example):
+
Images and videos from Elphel 353/363 cameras are tagged with EXIF data (we use standard EXIF fields (EXIF 2.2 specification from exif.org)).
 +
 
 +
= Reading EXIF from Images =
 +
Basically any standard software that can read EXIF data from JPEG images should work.
 +
 
 +
[http://www.exiv2.org/ exiv2] allow you to add, delete and modify metadata.
 +
 
 +
Though the [http://en.wikipedia.org/wiki/Makernote#MakerNote_data | makernote] is an EXIF field that is different (structure as well as content) for every camera manufacturer.
 +
 
 +
= Reading EXIF from Videos =
 +
Each frame of Elphel generated MJPEG / (OGM or MOV) videos also contain EXIF data.
 +
 
 +
See examples of how to read them below.
 +
 
 +
== GSTreamer metadatademux ==
 +
[http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-plugins/html/gst-plugins-bad-plugins-metadatademux.html GSTreamer metadatademux] — element that parse or demux metadata from image files, we need to make it work with MJPEG video files.
 +
 
 +
To test it on single image:
 +
gst-launch -v -m filesrc location=./test.jpeg ! metadatademux ! fakesink silent=TRUE
 +
 
 +
The idea is to be able to parse a video in realtime, use metadatademux plugin to extract needed EXIF field and pipe them to another plugin such as [http://gstreamer.freedesktop.org/data/doc/gstreamer/0.10.4/gst-plugins-base-plugins/html/gst-plugins-base-plugins-plugin-subparse.html subparse] or [http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-plugins/html/gst-plugins-base-plugins-textoverlay.html textoverlay] to include those data on the video or a custom plugin to write KML/KMZ files for google earth.
 +
 
 +
== OGG subtitles ==
 +
OGG has a provision to include [http://en.wikipedia.org/wiki/Ogg#Metadata metadata]. It can be interesting as many players have support for subtitles.
 +
 
 +
==MOV EXIF Data Extraction Example Script==
 +
 
 +
[[Image:PHP-geo-test.tar.gz | Download the Script]]
 +
 
 +
This example script was written by Konstantin Kim in PHP and based on PEL ([http://pel.sourceforge.net/ PHP Exif Library]) from Martin Geisler.
 +
 
 +
Both are released under GNU GPL V3.
 +
 
 +
The script extracts EXIF data from a MOV file and writes it to a KML file. It's easy to modify to do something else.
 +
 
 +
Though the script has a design error, it needs to load the entire MOV file into RAM. So dont use it with 32GB files ;)
 +
 
 +
==MOV EXIF Data Extraction Script (NASA)==
 +
 
 +
[[Image:Extract_exif.tar.gz | Download the Script]]
 +
 
 +
This script was modified by Scott Janz based on the work by Konstantin Kim in PHP and based on PEL ([http://pel.sourceforge.net/ PHP Exif Library]) from Martin Geisler.
 +
 
 +
This includes the PEL distribution as well since one file had to be modified.
 +
 
 +
The script is modified to output the location parameters (GPS coordinates) to a text file formatted in a way that you can read it with QuickTime and overlay the information on the movie.
 +
 
 +
==EXIF Fields==
 +
All JPEG images have mentioned below fields (you can check this with any program what have support of Exif, in Linux with "exif" command line program, for example):
  
 
<br>
 
<br>
Line 83: Line 131:
 
Exif data supported by [[Imgsrv]] and [[Camogm]] is described in [[Imgsrv#imgsrv_and_Exif_data]]. More changes are expected shortly - software will support more flexible Exif data including GPS-related fields.--[[User:Andrey.filippov|Andrey.filippov]] 10:40, 28 March 2008 (CDT)
 
Exif data supported by [[Imgsrv]] and [[Camogm]] is described in [[Imgsrv#imgsrv_and_Exif_data]]. More changes are expected shortly - software will support more flexible Exif data including GPS-related fields.--[[User:Andrey.filippov|Andrey.filippov]] 10:40, 28 March 2008 (CDT)
  
 
+
==Adding additional EXIF2.2 Data Fields in the camera==
==EXIF Data Extraction Example Script==
 
 
 
[[Image:PHP-geo-test.tar.gz | Download the Script]]
 
 
 
This example script was written by Konstantin Kim in PHP and based on PEL ([http://pel.sourceforge.net/ PHP Exif Library]) from Martin Geisler.
 
 
 
Both are released under GNU GPL V3.
 
 
 
The script extracts EXIF data from a MOV file and writes it to a KML file. It's easy to modify to do something else.
 
 
 
Though the script has a design error, it needs to load the entire MOV file into RAM. So dont use it with 32GB files ;)
 
 
 
==EXIF Data Extraction Script (NASA)==
 
 
 
[[Image:Extract_exif.tar.gz | Download the Script]]
 
 
 
This script was modified by Scott Janz based on the work by Konstantin Kim in PHP and based on PEL ([http://pel.sourceforge.net/ PHP Exif Library]) from Martin Geisler.
 
 
 
This includes the PEL distribution as well since one file had to be modified.
 
 
 
The script is modified to output the location parameters (GPS coordinates) to a text file formatted in a way that you can read it with QuickTime and overlay the information on the movie.
 
 
 
==Adding additional EXIF2.2 Data Fields in the camrea==
 
  
 
Email by Andrey Filippov on Support Mailinglist:
 
Email by Andrey Filippov on Support Mailinglist:
  
 
[http://www.mail-archive.com/support-list@support.elphel.com/msg00313.html http://www.mail-archive.com/support-list@support.elphel.com/msg00313.html]
 
[http://www.mail-archive.com/support-list@support.elphel.com/msg00313.html http://www.mail-archive.com/support-list@support.elphel.com/msg00313.html]

Revision as of 03:48, 2 October 2010

Images and videos from Elphel 353/363 cameras are tagged with EXIF data (we use standard EXIF fields (EXIF 2.2 specification from exif.org)).

Reading EXIF from Images

Basically any standard software that can read EXIF data from JPEG images should work.

exiv2 allow you to add, delete and modify metadata.

Though the | makernote is an EXIF field that is different (structure as well as content) for every camera manufacturer.

Reading EXIF from Videos

Each frame of Elphel generated MJPEG / (OGM or MOV) videos also contain EXIF data.

See examples of how to read them below.

GSTreamer metadatademux

GSTreamer metadatademux — element that parse or demux metadata from image files, we need to make it work with MJPEG video files.

To test it on single image:

gst-launch -v -m filesrc location=./test.jpeg ! metadatademux ! fakesink silent=TRUE

The idea is to be able to parse a video in realtime, use metadatademux plugin to extract needed EXIF field and pipe them to another plugin such as subparse or textoverlay to include those data on the video or a custom plugin to write KML/KMZ files for google earth.

OGG subtitles

OGG has a provision to include metadata. It can be interesting as many players have support for subtitles.

MOV EXIF Data Extraction Example Script

File:PHP-geo-test.tar.gz

This example script was written by Konstantin Kim in PHP and based on PEL (PHP Exif Library) from Martin Geisler.

Both are released under GNU GPL V3.

The script extracts EXIF data from a MOV file and writes it to a KML file. It's easy to modify to do something else.

Though the script has a design error, it needs to load the entire MOV file into RAM. So dont use it with 32GB files ;)

MOV EXIF Data Extraction Script (NASA)

File:Extract exif.tar.gz

This script was modified by Scott Janz based on the work by Konstantin Kim in PHP and based on PEL (PHP Exif Library) from Martin Geisler.

This includes the PEL distribution as well since one file had to be modified.

The script is modified to output the location parameters (GPS coordinates) to a text file formatted in a way that you can read it with QuickTime and overlay the information on the movie.

EXIF Fields

All JPEG images have mentioned below fields (you can check this with any program what have support of Exif, in Linux with "exif" command line program, for example):


Tag name Tag ID Sample value description
Image description 0x010E coming soon...
Manufacturer 0x010F Elphel, Inc standard
Model 0x0110 353 standard
Software 0x0131 7.1.0.18 firmware version of camera at exposition moment
Date and Time 0x0132 1970:01:01 01:50:14 standard; time from FPGA RTC at sensor start moment
Artist 0x013B 00:0E:64:01:02:03 serial number of camera (Ethernet MAC address), ASCIIZ value
Exposure Time 0x829A 1/49 sec. standard
Date and Time (original) 0x9003 1970:01:01 01:50:14 standard; time from FPGA RTC at sensor start moment
SubSecTimeOriginal 0x9291 686527 standard; time from FPGA RTC at sensor start moment



Note: in latest at this moment firmware (7.1.0.18) for 353 camera (CMOS sensor) all fields are correct, but with 363 camera (CCD sensor) we have wrong exposure time and shifted timestamp - TODO.

Exif data supported by Imgsrv and Camogm is described in Imgsrv#imgsrv_and_Exif_data. More changes are expected shortly - software will support more flexible Exif data including GPS-related fields.--Andrey.filippov 10:40, 28 March 2008 (CDT)

Adding additional EXIF2.2 Data Fields in the camera

Email by Andrey Filippov on Support Mailinglist:

http://www.mail-archive.com/support-list@support.elphel.com/msg00313.html