にほんブログ村 写真ブログ デジタル写真へ
にほんブログ村のランキングに参加中です

LumixカメラでLightroomとBridgeのEXIFの扱いに違いがあるからExifToolで解消する

2017年07月03日 00:00

バニーガール

バニーガール


Lumix GX7, G25mmF1.7


※ブログに視覚要素を加えるlightboxを導入しています。上記画像をクリックすると少し大きな画像をポップアップして見る事が出来、暗くなった部分をクリックするか、画像下部のCloseをクリックすると元に戻ります。



夕方、何気に光TVのチャンネルをザッピングしていたら囲碁、将棋チャンネルで話題の藤井四段の対局をライブ中継していた。

早指し戦ではないので重要な場面では一手に1時間以上とかざら。その間、大盤の解説を視聴者は見るのだが、当然解説にも限界があり、やっぱり話題は昼飯に何を食べたか、夕飯は何を食うのか?、そんな会話になっていく。ちなみにこの日の藤井四段は昼は冷やし中華、夜は若鶏のから揚げ。

途中から見たのだが、序盤戦は互いに流行の横歩取りだったようで対局は意外とあっさりだった。勝った佐々木五段は若手のイケメン棋士で、藤井ブーム以外にも佐々木ブームも来る兆し?。

対局が終了し、感想戦に入る前、報道陣に部屋を公開、カメラマンがどんどん入り口から入ってくる。ハイエナのように二人を取り囲み連写の嵐。中には撮影の準備が出来ていなかったのか、明らかにライバルに遅れをとった、あたふたしているカメラマンもいた。プロカメラマンもアマチュアカメラマンも如何に貪欲に写真を撮るか、良い写真を撮るにはこれが一番のキーだろう。

面白かったのが、撮影ポジション、勝利した佐々木五段を写すのにベストポジションを確保するカメラマンとトレンドの藤井四段の表情を撮るのに最適な場所を選んだカメラマン・・・。

まぁカメラマン同士知り合いだろうから、あとでポジション交換するのだろうが、私がそこにいたらやっぱり勝者を先に撮りたいと思う。勝っても負けても注目される佐々木五段、まだカメラマン慣れしていない表情を狙いたい。

さて、本題へ。

写真を整理していて重要なのはEXIF情報だ。どのカメラ、レンズが使われているか、撮影時の情報が満載だからだ。ところが電子接点のないマウントアダプターを利用して他社のレンズを装着するとレンズ部分の情報がごっそり抜けてしまう。

そこでexiftoolと言うコマンドラインから利用するプログラムを利用して欠けている部分にデータを加えるのだが・・・。

exiftoolの詳細は以下をどうぞ。

ExifTool : LightroomがSigmaレンズを認識しないから無理矢理書き換える
ExifTool : Lightroomが電子接点のないKマウントレンズを認識しないから無理矢理書き換える
ExifTool : Lightroomが露出補正値のフィルタリングをしてくれないから・・・
Exiftool : 自分が作ったPerlスクリプトがあまりにも遅過ぎるから・・・
Exiftool : まとめ
Exiftool : まだまだこんな使い方がある!

マニアックな内容だとは思うが、仕事でUNIXやPerlをお使いの方なら恐らくご理解頂けるだろう。それらを知らなくてもとりあえずexiftoolの使い方だけを知れば電子接点のないレンズで撮影した写真(JPG、RAWファイル)に欠落したEXIF情報を盛り込める。

おさらいとして・・・。

※あくまでも基本例、実践する場合はexiftoolの解説サイトなどでしっかりとチェックする事、また文字列を囲む際、例ではシングルコーテーションを使っているがOSや実行するターミナルによってはダブルコーテーションだったりするので注意が必要だ

0001.jpgに「smc PENTAX-M50mm F1.4」と言うレンズ名を追加したい。


exiftool -lens='smc PENTAX-M50mm F1.4' -lensmodel='smc PENTAX-M50mm F1.4' -overwrite_original 0001.jpg



上の0001.jpgにレンズ焦点距離(50)と35mm換算(100)を追加したい。


exiftool -focallength='50' -focallengthin35mmformat='100' -overwrite_original 0001.jpg



面倒だからレンズ名と焦点距離、35mm換算焦点距離を一気にやりたい!。


exiftool -lens='smc PENTAX-M50mm F1.4' -lensmodel='smc PENTAX-M50mm F1.4' -focallength='50' -focallengthin35mmformat='100' -overwrite_original 0001.jpg



間違った情報を追加しちゃったら?。例えばsmc PENTAX-M50mm F1.4をsmc PENTAX-FA50mm F1.4としちゃった!、レンズ焦点距離が50mmなのに5mmにしちゃった!・・・。単純に正しい情報を上書きすれば良い。またゼロからやり直したい場合は誤って追加した情報を初期化しちゃえば良い。


exiftool -lens='' -lensmodel='' -focallength='' -focallengthin35mmformat='' -overwrite_original 0001.jpg



書き込んだデータに誤りがないか確認したいならこんな感じ。


exiftool -lens -lensmodel -focallength -focallengthin35mmformat  0001.jpg



いきなりデータを書き換えるのは不安だ。バックアップしたい。そんな時は・・・。


exiftool -lens='smc PENTAX-M50mm F1.4' -lensmodel='smc PENTAX-M50mm F1.4' -focallength='50' -focallengthin35mmformat='100' -overwrite_original_in_place 0001.jpg



「-overwrite_original_in_place」、この一文を付けるだけでオリジナルのバックアップファイルを作ってくれる。しかし最初は作業フォルダに処理をしたいファイルを全てコピーをして、その作業ファイル上でexiftoolを使うべきかもしれない。

ミスをしてもオリジナルフォルダにオリジナルデータがあるのだからそっちの方が精神衛生上遥かに良い。私は今でもexiftoolを使って複雑な作業をする際は作業フォルダにファイルをコピーしてそこで情報を追加し、間違っていないのを確認してからオリジナルフォルダに戻すようにしている。

さて、ここから話がLighroomとBridgeについて。同じAdobeの製品でどちらもデーターベースとして機能するアプリケーションなのにEXIFデータの扱いにちょっと違いがある。

一番の不思議がレンズ名だ。

一般にレンズ名はEIXF内の「LensType」、「LensId」にメーカー独自のユニークな数字データが記録されている。例えばOlympusのM.Zuiko 12-50mmF3.5-6.3は「0 10 10」と言う3つの数字だ。Lightroomはこの数値を各メーカーのEXIF仕様と照らし合わせてレンズ名を表示してくれる。

ところがBridgeはこのLensType、LensIdを見ないんだ。Bridgeが見るタグは「Lens」と「LensModel」の2つ。どちらか一方に文字列でレンズ名が記載されていたらそれを表示する。そうでない写真ファイルは「レンズなし」と表示されてしまう。

ここで問題になるのがLumixカメラ。うちにはGX7しかないが同時期のモデルは恐らく全て同じ仕様だろう。

Lumixカメラは何故かLensTypeは数字でなくレンズ名がそのまま記載されている。そしてLensIdも一見レンズ名が保存されていると思いきや、ここはLensTypeと紐付けを行っていてLensTypeと同じレンズ名が表示される変な仕様になっているみたいだ。

次に多くのメーカーはLens、もしくはLensModelにレンズ名を保存している。でもGX7で撮影されたJPGファイルはそこには何のデータも保存されていない。だからLensもしくはLensModelのタグしか見ないBridgeではレンズ名が表示されない現象に陥ってしまう。

ではLightroomでもBridgeでもレンズ名を表示させたい場合どうするか?。

ここで仕様の違いが出てくるんだ。

Lightroomがレンズ名で採用するのはLens。そしてBridgeが採用するがLensModelなんだ。例えばGX7にLumix G25mmF1.7レンズを装着して撮影した写真があったとする(EXIFにはLensType、LensIdにしかレンズがない状態)。

それをLightroom、Bridgeに取り込むとLightroomでは「LUMIX G 25/F1.7」と表示されるがBridgeではレンズ名は表示されない。ではこのLumixのレンズで撮影されたJPGファイルにexiftoolでこんな施しをしてみる。


exiftool -lens='SONY G25/F1.7' -lensmodel='PENTAX G25/F1.7' -overwrite_original 0001.jpg



これにより0001.jpgはLensType、LensIdには「LUMIX G25/F1.7」、Lensに「SONY~」、LensModelに「PENTAX~」と別々のレンズ情報が含まれるようになる。このファイルをLightroomで表示させるとレンズ名は「SONY G25/F1.7」となり、Bridgeでは「PENTAX G25/F1.7」なってしまうんだ。LightroomとBridgeの開発者が異なり、仕様の摺り合わせが出来てないと推測出来る。

では他の現像ソフトではどうだろう?。

GX7に添付されていたSilkypix Developer Studio 4.4SE、まずこのソフトは純正の癖にGX7が出力したJPGファイルのEXIFデータのLensType、LensIdを一切見ない非常にお粗末な仕様だ。そして上のようにEXIF情報を追加するとLensが採用され「SONY G25/F1.7」と表示された。

Caputure One ProはLighroomと同じ仕様だ。LensTypeとLensIdしかない場合は、それを参照し、LensとLensModelにデータが存在したらLensが採用され「SONY~」と表示された。

Dxo Optics Proはレンズの光学情報をしっかりと取り入れる為なのか、LensやLensModelに情報を書き込んでもGX7のオリジナルデータ、LensType、LensIdのデータが優先されるようだ。

フリーソフトのRawTherapeeはLensTypeとLensIdしかない場合でもちゃんとLUMIX G25/F1.7と表示され、LensとLensModelにデータを追加するとLensModelが優先されて「PENTAX G25/F1.7」になっていた。

現像ソフトによってこれだけ違うのだからしっかりEXIF情報を管理したい場合、困ってしまう。

※上はJPGファイルの話。Lens、LensModelにデータがなくてもRAWファイルではどの現像ソフトでもLumixのカメラで使用したレンズ名は表示する

ではどうするか?。なぁに簡単だ。LensTypeと同じレンズ名をLens、LensModelの2つのタグに宛がってやれば良い。少なくとも上記の現像ソフトではこれでレンズ名問題は解消される筈だ。Lumix G25mmF1.7を使用していればLensTypeに「LUMIX 25/F1.7」とあるので次のようになる。


exiftool -lens='LUMIX 25/F1.7' -lensmodel='LUMIX 25/F1.7' -overwrite_original 0001.jpg



電子接点のないマウントアダプターを利用して他社のレンズを使用している際には自分が表示させたレンズ名をLensType、Lens、LensModelに追加すれば良い。smc PENTA-FA50mmF1.4を使用した写真に「FA50mmF1.4」と表示させたかったら以下。


exiftool -lenstype='FA50mmF1.4' -lens='FA50mmF1.4' -lensmodel='FA50mmF1.4' -overwrite_original 0001.jpg



問題はまだある。これをファイル1枚1枚でやるのか?・・・。一番簡単な方法としてはレンズ毎にやっちまう方法。その日にLumix G25mmF1.7、Lumix G14-45mmF3.5-5.6、Lumix G PZ45-175mmF4-5.6の3本を使っていたとする。まずはexiftoolでそれぞれがどんな名称でLensTypeに登録されているかチェック。


exiftool -lenstype *.JPG


それでそれぞれが「LUMIX G25/F1.7」、「LUMIX G VARIO 14-45/F3.5-5.6」「LUMIX G VARIO PZ45-175/F4.0-5.6」だと判る。あとはexiftoolのifオプションを用いてレンズ毎にLensとLensModelに同じ名称を与えれば済む。「もしLensTypeの内容がhogehoeだったらLensとLensModelにもhogehogeを記録しろ」、そんな処理となる。


exiftool -lens='LUMIX G25/F1.7' lensmodel='LUMIX G25/F1.7' -if '$lenstype eq "LUMIX G25/F1.7"' -overwrite_original *.JPG



exiftool -lens='LUMIX G VARIO 14-45/F3.5-5.6' lensmodel='LUMIX G VARIO 14-45/F3.5-5.6' -if '$lenstype eq "LUMIX G VARIO 14-45/F3.5-5.6"' -overwrite_original *.JPG



exiftool -lens='LUMIX G VARIO PZ45-175/F4.0-5.6' lensmodel='LUMIX G VARIO PZ45-175/F4.0-5.6' -if '$lenstype eq "LUMIX G VARIO PZ45-175/F4.0-5.6"' -overwrite_original *.JPG


正規表現を使うともっと簡単だ。うまい具合に焦点距離が25、14-45、45-175と異なり、そこからユニークな数字を見ると25、14、175だ。そこで「LensTypeに25が含まれているか、14が含まれているか、175が含まれているか」で判断している。


exiftool -lens='LUMIX G25/F1.7' lensmodel='LUMIX G25/F1.7' -if '$lenstype =~ /25/' -overwrite_original *.JPG



exiftool -lens='LUMIX G VARIO 14-45/F3.5-5.6' lensmodel='LUMIX G VARIO 14-45/F3.5-5.6' -if '$lenstype =~ /14/' -overwrite_original *.JPG



exiftool -lens='LUMIX G VARIO PZ45-175/F4.0-5.6' lensmodel='LUMIX G VARIO PZ45-175/F4.0-5.6' -if '$lenstype =~ /175/' -overwrite_original *.JPG


使用しているレンズが10本あったらこの命令を10回繰り返す事になるが、これを行えば仮に1つのフォルダに1万枚もの写真が存在していたとしても10回の処理で上記の現像ソフトで全てレンズ名が表示されるようになる(勿論1万枚のファイルを書き換えるのでパソコンの能力によって数時間掛かる)。

本当はもっと単純に「全てのファイルをLensTypeの内容をそのままLensとLensModelに加えろ」と言う1つの命令だけで済む筈なのだが、その方法を探そうと思うと海外のサイトをアッチコッチ巡る事になり時間の無駄。そこで私はPerlと言うスクリプト言語を使って処理していたりする。

Perlを使えればこれらの処理は簡単になるが、PerlとPerlで使うexiftoolのモジュールをインストールするまでの環境整備が結構大変なのと、Perlと言うスクリプト言語の基本を理解しないとならず、今回は割愛するが、興味ある方は冒頭でリンクした記事を参照しつつ、「perl exiftool スクリプト」などで検索されると良いだろう。


にほんブログ村 写真ブログ デジタル写真へ
にほんブログ村のランキングに参加中です



コメント

  1. RigelNightBug | URL | GzSZFFvQ

    自分は軟弱なので(笑)、URLの先に在る、「F6 Exif」を多用しています。

  2. BigDaddy | URL | -

    > RigelNightBug さん

    Exiftool GUIを使えば今回解説している内容の全てが可能で、日本語の解説サイトもあるので試されていはいかがでしょうか?。

    また使ってはいませんがマルチプラットフォームのpyExiftoolGUIと言うのもあり、これもほとんどExiftool GUIと同じみたいですね。

コメントの投稿

(コメント編集・削除に必要)
(管理者にだけ表示を許可する)