2012年5月31日木曜日

Geotagging 4

さて、ファイルの作成日時でExifの撮影日時を書き換えようと色々いろいろ探し続けていたが見つからない。逆に撮影日時をファイル名にしようとする方々は多いようでたくさん見つかる。
やはりExifToolの出番なようだ。
コマンドラインは最近面倒になってきてて避けたかったがどうしようもない。で、作者さんのPhil Harvey氏のサイトに行き嫌々でも英語の解説を読んで一から勉強しようと思ったら、FAQにほぼそのまんまの記述があった。FAQ24."When I write a file the date/time gets reset to today's date"
ここにファイルの日時とExif内の日時の違いとそれを入れ替えるやり方があった。日時には二つあり、一つはファイルのメタデータに置かれているもの、もう一つはファイルシステムに置かれているもの(つまりディスクディレクトリ情報)。
知りたかったのは後者をExifToolではなんて言うのか、それをExifに書くのはどうするのか?
これを理解するために以下のコマンドを
exiftool -time:all -a -G0:1 -s ファイル名
そうすると以下のような情報が表示される
  [File:System]   FileModifyDate                  : 2012:05:31 20:10:36+09:00 
  [EXIF:ExifIFD]  DateTimeOriginal                : 2012:05:31 19:39:35
  [EXIF:ExifIFD]  CreateDate                      :  
  [EXIF:GPS]      GPSTimeStamp                   : 00:00:00
まあ、FAQとはちと違うけどファイル変更日が FileModifyDate だ。例としてファイル変更日時を撮影日時に書き込むには以下のようなコマンドを入れる。
exiftool "-datetimeoriginal<filemodifydate" ファイル名
ちなみに -P オプションをつけるとファイル日時は変更されない。
で、やってみて気がついたけど、今回の場合、ファイルの作成日は撮影をした日時ではなく画像をいじった日時でした。
まだ、負けだ

2012年5月30日水曜日

Geotagging 3

先日Pentax K−5を購入しました。やはり、防滴仕様なのと比較的小型で丈夫(そう)なのがいい。ミラーレス等の小型機と違いバッテリーが長持ちだというのもいい。
で、近くの山に調査に行き使い勝手や写りを確かめるため写真を撮りまくってきたら、一日分が3ギガとかになってしまった。確かに1枚10Mbのサイズ設定してたからだから当たり前なんだけどね。今の所は重要な写真ではないので小さくしてからいつものように位置情報をつけようと、画像サイズを一括処理してくれるアプリでフォルダ丸ごと半分のサイズにしてみたら、Exifが全て消えてしまった。
同じように一部の携帯等で撮った写真には元からExifがないようだし、いろんなソフトを経由するとExif部分が消えてしまうらしい。知らなかった。
そんなExifがない写真でもなんとかgoetagするためには
1 Exifを新規で画像ファイルに作くる
2 作ったExifに撮影日を書き込む
という手続きが必要。
1についてはOSXで動くアプリが見つからず「6 Exif.exe」というあちらのアプリをVMWareで立ち上げた。
このアプリは様々な編集に対応していて非常に優れていると思う。まだしっかり使っていないけどファイル作成日でExifの撮影日を上書きとかしてくれそうなので、2の作業もこれだけで出来るかもしれない。
2についてはExifDataChange.appというのがある。これはファイル作成とか撮影の日時をフォルダ一括変換してくれる。でも、今回F6 Exif.exeでいじったファイルはエラーが出て作業不可能であった。
同じようなExif編集アプリであるPhotoinfo.appでは読み込んで日時を編集してくれたけど、Preview.appでExif情報を見ると書き込んだ日時が表示されない。
結果、次回からファイルサイズを小さくして撮影しようと、これはという写真はRawボタンを押してしまおうということになった。 つまり、負けだ。

2012年2月24日金曜日

kinectでも使ってみようか5

あれから1年が過ぎてしまいましたが、最近また使い始めてます。以前より随分進歩が見られます、とは言いがたいけどそれなりに目的に近づいているので少し紹介します。相変わらずネット任せというか人任せです。
さて、新たに見つけたのがRGBDemoというもの。この中には、Lionでも動くkinectのキャリブレーションとか複数のkinectを使ったりとかできるいろいろなappが入ってますが、この中のrgbd-reconstructor.appというものを使って実空間を取り込んでみました。作者のNicolas Burrus氏には非常に感謝しています。どういったものかはBurrus氏のサイトで詳しく説明していますが、kinecを移動させる事でkinectがみている空間をつなぎ合わせて一つの3Dデータにまとめるというもの(間違っているかもしれませんがそんなとこ)。部屋の中や大きな物体の3D構造を把握できます。作ってくれるファイルはply形式でこれを読むために昨年はblenderを使いましたが、今回はmeshlab.appを使いました。まだ使い方などを殆ど把握していませんがこっちの方が扱いが随分簡単な上にメジャーを簡単に使えました。とにかく良く分からずにやっても結構簡単にできるもんです。

他にテキストデータで深度(奥行き)情報もymlファイルで出力してくれるので分析にはいいのかもしれない。
問題はどれだけのファイル空間情報を取り込めるのか部屋程度なのか建物全体まで一つのファイルにできるのか、別々に取ったファイルをつなぎ合わせる事ができるのか、今後の課題。
また、キャリブレーション方法やymlファイルの出力内容等についても検討しなければいけない。

Xcodeを入れ直してたりOpenframeworksやらOpenkinectやらgitしたりfinkしたりしたもどうもうまく行かなかったけど、とりあえずこの二つのAppでなんとかしのごう。
ま、compileとかmakeとかそこら辺から勉強しないとだめですってことか。

2012年1月12日木曜日

Geotagging 2

Javaアプリの”Geotag”を使って写真に位置情報を書き込むと、デフォルトの設定だと画像ファイルの作成日(つまり撮影日時)などを勝手に書き換えた新規ファイルを作って元のファイルをJPG_originalなんて拡張子をつけて残してくれる。
まあ、親切でそういう設定にしているんだろうけどね。それにExifファイルには撮影日が残っているからどうにでもなるけど、多量の写真をいじっているときは面倒なことだ。
作成日などを書き換えずにただ位置情報を画像ファイルに書き込みたい場合は以下の通り。
設定項目から図のとおりAdditional Exiftool argumentsを選んで下のボックスに”-P"と書き込む。これでファイルの作成日は元のままになる。
次にその下の項目のKeep backups of ....をえらんで下のボックスに出てくるチェックを外すとオリジナルファイルを保存しなくなる。

できてしまったたくさんの.JPG_originalという拡張子のついたファイルはmacでは面倒な事になっているので、元のjpgファイルに変換する。こんな事をファインダでやってたらきりがないのでterminalでの方法。他の方法でもできると思うけど
$for nm in *.JPG_original; do⏎
>mv $nm ${nm%.JPG_original}.jpg;⏎
>done⏎

てな感じでとりあえず元通りになる。当然、Geotagが作ったファイルに位置情報が書かれているので、いろんなことを考えてからやるように

追記

ファイル名の一括変換は以下も使えるよう。
for f in `ls *XXXXX*`; do mv $f ${f/XXXXX/YYYYYY};done