heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

Ubuntu12.04 でデジカメ写真編集 Vol.3 (Exif 情報の取り扱い)

GIMP 2.8

目次

目的

"Olympus STYLUS-1s" を購入したため、それで撮影した RAWファイルの画像を Ubuntu12.04 にて Photoshop と同様な写真編集を行えるよう、Vol.2 まで作業を行ってきた。

Vol.3 の本エントリーでは、Vol.2 までの作業で写真のExif情報が失われてしまっていたため、その対処法について記載する。

経緯

Vol.2 までの手順で、UFRaw を用いてRAWファイルからTIFF画像現像を行い、GIMP による編集を経て、JPEG画像を作成しました。

そして、いざ JPEG画像のExif情報を見てみるとカメラ情報などが無く、GIMP で出力した TIFF画像には Exif情報が埋め込まれないという問題に突き当たったのでした。

GIMP doesn't saveEXIF on TIFF files (2014) — Help & Support — gimpusers.com

方法

下記の手順で解決を図りました。

しかし、上記ではExif情報が完全でないことがわかったので、最終的には下記方法を用いました。

  • 撮影の際に "RAWファイル+JPEG画像(低品質)" を保存するようにし、JPEG画像(低品質)から編集後のJPEG画像(高品質)にExif情報をコピーする
  • Exif編集ツールで特定項目の削除・追加を行う

コマンドラインツールで Exif情報を編集できるものを探す

上記ページを参考に、下記に機能をまとめました。

Table.1 Exif情報を編集できるツールと、それぞれの機能の互換を示す

ツール Exif情報表示(詳細) Exif情報コピー Exif情報削除
jhead jhead -v disp.jpg jhead -te from.jpg to.jpg jhead -purejpg delete.jpg
ImageMagick identify -verbose disp.jpg convert from.jpg to.jpg mogrify -strip delete.jpg
exiftool exiftool disp.jpg exiftool -tagsfromfile -all:all from.jpg to.jpg exiftool -all= delete.jpg

上記のなかでも Exif 情報編集のナレッジが多かった "exiftool" を使っていくことにしました。

また "exiftool" では、 "RAWファイルからExif情報をJPEG画像にコピーする" ことができるのも特記事項です。(本エントリ後半で、自分の目的では使えないことが分かるのですが…)

RAWファイルからExif情報をJPEG画像にコピーする

$ exiftool -tagsfromfile ../PA040515.ORF -all:all -overwrite_original PA040515.jpg
Warning: MakerNotes too large to write in JPEG segment - PA040477.jpg
1 image files updated

$ exiftool ../PA040477.ORF | wc
    199    1139    8851
$ exiftool ./PA040477.jpg | wc
     76     376    3384                                      

Exif情報を全てコピーしたはずですが、120項目程少ないです。

明らかに "Warning: MakerNotes too large〜" が原因で、しかも小手先では治らなさそうです。*1

試しに GIMP で RAWファイルから JPEG画像現像を行い、そのExif情報を見てみました。

$ exiftool ../PA040477.jpg | wc
    67     314    2964                                    

GIMP の UFRaw を経ている時点で、Exif 情報が消えているみたいです。

RAWファイルからどうこうしようというのは諦めて、撮影時にRAWファイル と一緒に "EXIF情報の付加された JPEG画像" を保存するようにし、それから編集済みのJPEG画像にExif情報をコピーすることにします。

オリジナルのExif情報をコピーする

撮影の際に "RAWファイル+JPEG画像(低品質)" を保存するようにし、JPEG画像(低品質)から編集後のJPEG画像(高品質)にExif情報をコピーする

Table.2 登場するファイルの説明

種類 ファイル
撮影時に保存したRAWファイル original.ORF
撮影時に保存したJPEG画像 original.JPG
RAWファイルから現像し編集を進めた画像 modify.jpg

始めに全てのExif情報数を確認し、失敗するExifコピーを試しています。
その後、撮影時に保存したJPEG画像から、編集を終えたJPEG画像にExif情報をコピーしています。

$ exiftool original.ORF | wc                                                                      
    199    1139    8846
$ exiftool original.JPG | wc                                                                      
    186    1016    8133
$ exiftool modify.jpg | wc
     70     342    3096
$ exiftool -tagsfromfile original.ORF -all:all -overwrite_original modify.jpg                   
Warning: MakerNotes too large to write in JPEG segment - modify.jpg
    1 image files updated 
$ exiftool modify.JPG | wc                                                                      
     84     402    3736
$ exiftool -tagsfromfile original.JPG -all:all -overwrite_original modify.jpg 
    1 image files updated
$ exiftool modify.jpg | wc
    191    1037    8344

数はぴったり合いませんが、Exif内容として問題なさそうでした。

Exif編集ツールで特定項目の削除・追加を行う

下記サイト郡を参考にして、exiftool によって編集を進めました。

Exiftool is easy to use :: High Earth Orbit

ExifTool example commands

穀風: ExifTool.exe の簡単な使い方 - 編集編

GPS 情報を付加する

下記では wikipedia で調べた、千葉市動物公園GPS情報を付加しました。*2

$ exiftool -gps:GPSLatitude="35,38,40" -gps:GPSLatitudeRef="N" -gps:GPSLongitude="140,7,31.8" -gps:GPSLongitudeRef="E" -overwrite_original add.jpg
    1 image files updated  

ちなみに Exif タグについては、マニュアルを見ると良いです。

$ man Image::ExifTool::TagNames

編集に利用したソフトウェア情報を付加する

$ exiftool -Software="GIMP 2.8.14" -overwrite_original add.jpg
    1 image files updated  

撮影者情報を付加する

$ exiftool -Artist="name" -Copyright="name?" -overwrite_original add.jpg
    1 image files updated  

写真の回転情報を編集・削除する

下記サイトを参考にしました。

exiftool ・ Image Magick で Exif Orientation 情報を追加・編集する - 君たちは永遠にそいつらより若い

下記は上記サイトからの引用です。

Exif定義 = exiftoolのvalue = Image Magickのvalue
----
1 = Horizontal (normal) = top-left
2 = Mirror horizontal = top-right
3 = Rotate 180 = bottom-right
4 = Mirror vertical = bottom-left
5 = Mirror horizontal and rotate 270 CW = left-top
6 = Rotate 90 CW = right-top
7 = Mirror horizontal and rotate 90 CW = right-bottom
8 = Rotate 270 CW = left-bottom

※CW=Clock Work = 時計回り

今回は削除のコマンドを記載します。

$ exiftool -Orientation= -overwrite_original PA040219.jpg
    1 image files updated

カメラのシリアルを削除する

$ exiftool -makernotes:SerialNumber= -overwrite_original delete.jpg
    1 image files updated

またはシリアルはオリジナル画像からコピーしない。

$ exiftool -tagsfromfile original.JPG -all:all -x makernotes:SerialNumber -overwrite_original modify.jpg
    1 image files updated

圧縮されていたというExif情報を削除する

本エントリーでは未圧縮画像に、圧縮画像の Exif情報をコピーしたので、この作業が必要です。

$ exiftool -ExifImageWidth= -ExifImageHeight= -overwrite_original delete.jpg
    1 image files updated

またはこのExif情報はオリジナル画像からコピーしない。

$ exiftool -tagsfromfile original.JPG -all:all -x ExifImageWidth -x ExifImageHeight -overwrite_original modify.jpg
    1 image files updated

下記サイトを参照すると、"Exif Image Width", "Exif Image Height" は元画像より小さく圧縮された場合に付加されるようです。

Exiv2 - Image metadata library and tools

Exif Image Height[Width] values differ from Image Height[Width] values - ImageMagick

Exif Image Width is tag 0xa002, "PixelXDimension"
Exif Image Height is tag 0xa003, "PixelYDimension"

蛇足(ピンぼけ画像を修整するプラグイン"refocus-it" のインストール)

Ubuntu日本語フォーラム / Ubuntu10.04へIterative Refocus(Refocus-it)をインストール方法

インストールは上のページを参考にしました。

Iterative refocus plug-in for GIMP download | SourceForge.net

上記ページからダウンロードを行います。
インストールディレクトリ配下からの、インストール方法は下記です。

$ sudo apt-get -y install libgimp2.0-dev
$ tar zxvf refocus-it-2.0.0.tar.gz
$ cd refocus-it-2.0.0
$ ./configure
$ make
$ sudo make install

プラグインの使用にはマシンスペック次第ですが、"Dual Core 2.8GHz" でも20分位時間がかかりました。
(configure オプションで Intel compiler を使うなどすると、実行速度が上がるかもしれません。)

所感

今回編集した写真は下記にアップロードしています。

2015-千葉市動物公園

デジタルカメラ初心者の勉強途中で恐縮ですが、気に入っていただけるものが少しでもあれば嬉しいです。

以上