sd Quattro Hがスナップカメラに昇格したのですが、最後のLightroom/Photosopでの追い込みで、SPPで現像したデータをLightroomに取り込む所で、レンズデータがunknown lensとなる事が気に食わないので修正するぞ!と意気込んでExif情報の書き換えをした手順メモです。MacでTerminalでの作業。ツールはexiftoolとExcelを使います。
最初は、Exifデータ自体をLightroom Pluginで書き換える方法をLOVE PENTAXYZさんのページで見つけてひゃっほ~いとなりました。しかし、手順を見るとレンズデータは手作業で入れなければならないという所で萎え萎えとなってしまい、exiftoolとExcelをちゃんぽんで書き換えました。シェルスクリプト使いにはオイと言われますが、まぁ、楽な方法だと思います。

ちなみに、私は2013年からカメラの世界に入ったのでシグマの評価がかなり高いです。要は、SVGラインと呼ばれるArt・Sports・Contemporaryの3ラインに分けられた新設計のレンズの第一弾、35mm F1.4 DG HSMが最初に触ったレンズだったので、その後、レンズを選ぶたびにARTラインを買ってきて、行き着いた先がシグマのFoveonカメラという、ある意味アレな状態です。

手順


  1. 書き換え対象のTIFFファイルのファイルパスをCSVに保管する
  2. exiftoolを使って対象のTIFFファイルのExif情報(LensFocalRange とMaxApertureValue)を取得するシェルを書く
  3. 手作業でどのレンズに対応しているのかを確認して、TIFFファイル毎にレンズを入力する
  4. Excel関数で、exiftoolのコマンドを作る
  5. シェルスクリプトにコマンドを流し込んで、全書き換え実行

要は、3番で絶対に手作業が入ってしまうので、シェルスクリプトで作りこむよりはExcelをかませた方が楽でした。

具体的な作業


1.書き換え対象のTIFFファイルのファイルパスをCSVに保管する

findコマンドを使えば、サブディレクトリまで全てのファイルを見つけてくれます。SD1 Merrill、sd Quattro、sd Quattro Hでそれぞれ微妙にファイル名が違っている1ので、共通のSDという文字にワイルドカードに指定します。

1SD1M、sdQは_SDxxxとなっているのですが、sdQHはSDxxxでアンダーバーがありません

$ find /Volumes/Snap -name *SD*.tif > sigma-file.csv

2.exiftoolを使って対象のTIFFファイルのExif情報(LensFocalRange とMaxApertureValue)を取得するシェルを書く

ここはsedを使えば自動化できます。exiftoolの引数には -CSV、-LensFocalRange、-MaxApertureValueを指定します。このパラメータがあればズームレンズか単焦点かレンズが特定できます。ファイル毎にいらない行が出力されてしまうのでgrepで必要な行だけに整形して、csvファイルを作成します。

$ echo -e '#!/bin/sh\n' > get-exifdata.sh
$ cat sigma-file.csv | sed -e "s/^/exiftool -CSV -LensFocalRange -MaxApertureValue /" >> get-exifdata.sh
$ chmod 755 get-exifdata.sh
$ ./get-exifdata.sh | grep tif > sigma-exif.csv

3.手作業でどのレンズに対応しているのかを確認して、TIFFファイル毎にレンズを入力する

そのままですね、私はSAマウントのレンズは3本だけだったので比較的楽でした。

4.Excel関数で、exiftoolの更新コマンドラインを作る

exiftoolの更新コマンドに指定するのは、-Lens、-LensModel、-LensType、-m、-overwrite_original_in_placeオプションなので、Lens、LensModel、LensTypeに3で指定したレンズ名を入れて、concatenate関数でセルを指定してコマンド一覧を作成します。

5.シェルスクリプトにコマンドを流し込んで、全書き換え実行

新規にシェルスクリプトを作成して、Excelからコマンド一式をコピー・実行すれば作業完了です。

update-exif.sh
#!/bin/sh
exiftool -Lens=<レンズ名> -LensModel=<レンズ名> -LensType=<レンズ名> -m -overwrite_original_in_place <対象ファイル名>
(ファイル名、レンズ名が異なるコマンドがずっと続く)
...

更新が完了したらLightroomでmetadateをファイルから読み取りを行います。現像・クロップ等をしていた場合はデータが消し飛んでしまうので気をつけて下さい。