ヒロとシーのゆうゆうシニアライフ(TOP)デジカメ画像の回転(EXIF)について


  デジカメ画像の回転(EXIF)について  


(2010年11月改定)
 デジカメでポートレートなど縦長の被写体を写す時はカメラを90度回転させて写すが、このままだと表示した画像は横向きになってしまう。デジカメの画像ファイルには、カメラの回転位置情報を含むEXIF(Exchangeable digicame-exif file format)というデータが組み込まれていて、ファインダーで見る時やパソコンに転送して画像ソフトで見るとき、この回転位置情報をもとに横向きの画像を90度回転し、縦向きに(正立させて)表示できるようになっている。
 ところが、カメラによっては回転情報を検出できないものもあるし、あってもカメラの持ち方によっては(上向きや下向き)回転情報がうまく取り込めないこともある。またパソコンの画像ソフトによっては自動回転表示機能をもっていないものもある。
 画像は正しく縦向きに正立させて見たい。特にスライドショーで見る時は、横向きの画像をそのつど個別に回転させられないので、最初から全ての画像が縦向きになるようにしておきたい。

 いったいEXIFの回転情報の規定はどうなっていて、各種画像ソフトはこの回転情報をどのように扱っているのであろうか? 
 実際に操作して調べてみると、画像ソフトによって回転情報の扱いはまちまちであった。
 そこで、どの画像ソフトや表示機器を使った場合でも全ての画像が縦向きの表示になるようにするにはどうすればよいか、いろいろやってみた。


1.カメラの回転情報はEXIFの画像方向タグに設定される
 EXIFの詳細は、「デジタルスチルカメラ用画像ファイルフォーマット規格 Exif 2.3」(2010年4月26日制定)に規定されている。
EXIFには、機種、焦点距離、絞り、シャッタースピード、ISO感度、撮影日時といったいろんな撮影情報が含まれているが、その中にカメラの保持方向に関する情報もある。EXIFのタグの一つである「画像方向(Orientation)」がそれで、カメラを回転させて保持したとき、画面の1行目および1列目が上下左右のどこに来ているかによって、画像方向タグの数値を変えている(図1参照)。
 普通に写す時はカメラは図1の左端図のように持つので、画面の左上を原点として1行目は上、1列目は左にあり、画像方向のタグ値には1が設定される。カメラを真ん中の図のように右方向に90度回転して持ったときは、1行目は右、1列目は上になり、画像方向のタグ値には6が設定される。右端図のように左方向に90度回転して持ったときは、1行目は左、1列目は下になり、画像方向のタグ値には8が設定される。
 カメラの回転方向を検知するため、最近の一眼レフやコンパクトカメラではほとんど重力センサが組み込まれているが、古いカメラでは重力センサがないカメラもある。重力センサがないカメラの場合は、画像方向のタグ値はカメラの回転方向にかかわらず全て1にしてあることが多い。

図1.カメラの回転方向


2.EXIFの画像方向タグを見て画像を自動回転して表示する例
  多くの画像ソフトは、EXIFの画像方向タグの内容を見て、画像を表示するときに画像を自動回転する。
 図2は、カメラを90度右方向に回転させて写した桜の木の画像を、XnViewを使って表示したものである。図3はXnViewで確認したこの画像のEXIF情報で、上から3行目の画像方向の値を見ると「右−上(6)」となっている。これは、1番目の行が右、1番目の列が上、タグ値が6ということで、カメラを右方向に90度回転させて撮った写真だということを示している。
 カメラから出力される画像は左向きだが、XnViewが画像方向タグを見て、画像を90度右回転させて表示しているのである。
 自動回転機能のない画像ソフトでは画像データをそのまま表示し、桜の木は左向きのまま表示される。この場合はなんらかの画像ソフトを使って主画像を90度右回転させないと桜の木は縦方向に表示されない。

図2.90度右方向に回転させて写した桜の木
XnViewで表示



図3.図2の画像のEXIFデータ


2.画像を回転やトリミングして保存すると、画像方向タグはどうなるか
 画像データの回転やトリミングは日常よく行うが、このような画像処理をして別名で保存すると、EXIFデータ、特に画像方向タグの数値はどうなるのか疑問になった。
 XnViewを使って図2の画像をトリミングしてみた。XnViewには、画像ファイルを保存するとき、EXIFデータを保存するかしないかを選択するオプションがある。図4は図2の桜の木の画像をトリミングし、EXIFデータの保存にチェックを入れて画像ファイルを保存したもので、図5はそのEXIFデータである。
 トリミングを行っただけなのに、画像方向のタグ値に従って画像が正立するように画像を回転させ、画像方向タグ値をリセッしてト「上−左(1)」に変更している。「上−左(1)」は回転なしを表すので、こうしてできた画像ファイルならどんな画像ソフトで見ても横向きになることはないはずだ。よく考えてあると感心した。

図4.図2の桜の木をトリミングした画像



図5.図4の画像のEXIFデータ


3.いろいろな画像ソフトを調べてみたが、画像方向タグの扱いはさまざま
 他の画像ソフトはどうであろうか? 何種類かの画像ソフトを使って、EXIFの画像方向タグの扱いがどうなっているか調べてみた。
結果は表1の通りさまざまであった。
表1.画像ソフトのEXIFデータの扱い方
画像ソフト名称 画像表示 画像ファイル保存時の
EXIFの扱い(画像処理後)
EXIF保存時の
画像方向タグの扱い
XnView (V1.97.6) 自動回転する EXIF保存する 表示通りに主画像を回転して
画像方向タグをリセット(1)
EXIF保存しない EXIFなくなる
Irfanview32 (V4.25) 自動回転する、しないの選択可能 EXIF保存する 表示通りに主画像を回転して
画像方向タグをリセット(1)
表示通りに主画像を回転して
画像方向タグは元のまま保存
Jtrim (V1.53) 自動回転しない EXIF保存する 画像方向タグは元のまま保存
EXIF保存しない EXIFなくなる
Vix (V2.21) 自動回転しない EXIF保存する 画像方向タグは元のまま保存
EXIF保存しない EXIFなくなる
Linar (V1.7) 自動回転しない EXIFなくなる EXIFなくなる
PhotoStudio (V6) 自動回転しない EXIF保存する 画像方向タグは元のまま保存
Photoshop (CS3) 自動回転する EXIF保存する 表示状態通りに主画像を回転して
画像方向タグをリセット(1)
ZoomBrouserEX (V6.31) 自動回転する EXIF保存する 表示状態通りに主画像を回転して
画像方向タグをリセット(1)
(注)二つ記載してあるものは、選択できることを示す。空色はフリ−ウェア。

整理すると次のように別けられる。
1.画像表示方法は?
 (1)EXIFの画像方向タグ値に合わせて自動回転表示する
 (2)自動回転表示する、しないを選択できる
 (3)自動回転表示機能が無い
2.画像処理して保存するときEXIF情報は?
 (1)EXIF情報を保存する
 (2)EXIF情報を保存する、しないを選択できる
 (3)EXIF情報がなくなる
3.EXIF情報を保存するときときの画像方向タグの扱いは?
 (1)表示状態通りに主画像を回転し、画像方向タグ値を1にリセットする
 (2)表示状態通りに主画像を回転し、画像方向タグ値は元のまま

我が家のハイビジョンテレビ(パナソニックのTL−H37G1)でもSDカードを挿入してデジカメ画像を見ることができるが、これもEXIF情報にもとずく自動回転表示がサポートされていた。


3.デジカメではEXIFの画像方向タグをどう扱っているか
 デジカメをたくさん持っているわけではないのでよくわからないが、なけなしの手持ちのデジカメについて調べてみた。
1.一眼レフ(キャノン EOS KISS X2)
 自動回転は次の3つから選択できるようになっている。
(1)カメラで再生するとき、パソコンで見るときの両方とも自動回転表示させる。
(2)パソコンで見るときだけ自動回転表示させる。
(3)自動回転表示させない。
実際にカメラを右回転させて写真を撮り、EXIFの画像方向タグを調べると、(1)と(2)はいずれも6、(3)は1になっていた。(2)はカメラでは回転表示させないだけのようだ。

2.コンパクトデジカメ(キャノン PowerShot A570IS)
 自動回転の入り切りの選択ができるようになっている。カメラを右回転させて写真を撮り、EXIFの画像方向タグを調べると、「入り」は6、「切り」は1になっていた。

2.コンパクトデジカメ(カシオ QV3000−EX 10年ぐらい前のカメラ)
 デジカメの出始めのころ買ったカメラで、EXIF情報は出るが重力センサーがないので画像方向タグはどの方向でも全て1になっていた。

4.自動回転表示の問題点
 自動回転表示機能を持つ画像ソフトで表示したとき、図6のように縦向きの画像が見えたとしても、これだけでは主画像がもともとどちら向きであるかは分からない。
【注】デジカメで撮影した画像は、そのままだと全て横長のサイズで図6のように縦長のものはあり得えないが、ここでは画像処理して縦長になった画像ファイルも含めて考えている。

図6.自動回転表示機能を持つ画像ソフトで表示した画像

この場合、次の3つのケースが考えられる。
(1)主画像は横向きで、画像方向タグ値に従って画像を回転させて表示している。
(2)主画像も縦向きで、画像方向タグ値が1(回転なし)になっている。
(3)主画像も縦向きで、EXIF情報がない。

この図6を自動回転表示機能を持たない画像ソフトで見たとき、(1)の場合は横向きに表示されてしまう。


5.どの画像ソフトでも縦向きに(正立して)見えるようにするには
 いっぱい溜まったデジカメ画像を整理する場合、重力センサのあるカメラや無いカメラで撮った画像が混在するし、カメラの向き(上向きや、下向きに構えた場合)によっては重力センサがうまく動作していない場合もある。また画像ソフトを使って、トリミング、回転、色補正、シャープネスなどの画像処理を行うことも多いが、画像処理の結果、画像方向タグ値がどう変わっているか分からない。
 
画像データをどのようにしておけば、どの画像ソフトでもうまく縦向きに見ることができるようになるであろうか?
 結局は、すべての主画像を縦向きにし、EXIFの画像方向タグ値を1(回転なし)に変更しておけばよいのだ。
EXIFそのものを削除することも考えられるが、EXIFにはその他の重要な情報もあるのでやはり保存しておいた方がよい。やり方はいろいろあるが、どのようにすれば簡単にできるか試してみた。


1.まずテスト画像を作成した
 試験に使う図7のような5つのテスト画像(JPEG)を作成した。4つのシャチ鉾の元画像は全て同じであるが、画像を回転させて4つにし、さらにJPEGの組み込みサムネイルも追加した(F6Exifのサムネイル作成機能を使用)。、
 図7はIfranViewでサムネイル表示したものであるが、表示オプションの「EXIF情報に合わせて自動的に画像を回転」のチェックを外しているので、主画像の向きで表示されている。(チェックの外し方 : オプション→基本設定→JPG/PCD/GIFのダイアログ画面で設定)

【注】 IfranViewが表示するサムネイル画像は、主画像を縮小して作ったものである。このとき、表示オプションの「EXIF情報に合わせて自動的に画像を回転」のチェックを入れておくと、主画像もサムネイル画像も画像方向タグ値に従って回転して表示される。

図7.テスト画像(自動回転表示なし)

 この画像ファイルに「カメラの回転方向、画像方向タグ値」が分かるようにファイル名を付け、その後F6Exifを使って画像方向タグ値をファイル名に付けている数値に変更した。
 図8はこのようにして作ったテスト画像で、今度はIfranViewの「EXIF情報に合わせて自動的に画像を回転」のチェックを入れて(自動回転ありにして)サムネイル表示している。 画像方向タグ値が6と8のものは、画像が自動回転表示されてシャチ鉾が縦向きに表示されている。

図8・テスト画像(自動回転表示あり)
それぞれの画像は、次の場合を想定して作った。
右回転−1   重力センサの無いデジカメを右回転して写した場合
右回転−6   重力センサのあるデジカメを右回転して写した場合
左回転−1   重力センサの無いデジカメを左回転して写した場合
左回転−8   重力センサのあるデジカメを左回転して写した場合
水平−1     重力センサのあるデジカメを回転させずに写した場合


2.IrfanViewを使って主画像を全て縦向きにし、画像方向タグ値を1に変更して保存する
 まず、5つのテスト画像をオプションの「EXIF情報に合わせて自動的に画像を回転」のチェックを外し、IfranViewでサムネイル表示すると、図7と同じ表示になる。この中から横向きになっている画像を一つ選択して表示する。例えば「右回転ー1」のサムネイル画像をクリックすると図9のような画像が表示される。この状態でメニューバーの 「画像→右回転」 をクリックすると、画像は右回転して縦向きになる。

図9.「右回転ー1」の画像

縦向きになった画面で 「ファイル→上書き保存」 をクリックすると、図10のような「JPEG/GIF保存設定」ダイアログがでるので、「EXIF画像方向タグをリセット」にチェックを入れ、上書き保存する。これで画像方向タグが1に設定され、しかも縦向き画像の状態で保存される。

図10.「JPEG/GIF保存設定」ダイアログ

横向きの画像すべてについて上と同様の操作をし、保存する。図11はこの処理を行ったあと、IfranViewの「EXIF情報に合わせて自動的に画像を回転」にチェックを入れて表示したもので、今度は全ての主画像が縦向きに表示されている。
こうすることにより、全ての画像の画像方向タグが1になっているので、どのような画像ソフトで表示しても横向きになることはない。

図11.テスト画像を修正して出来上がった画像



3.Vixで主画像を全て縦向きにし、F6Exifで画像方向タグ値を1に変更して保存する
 IfranViewでは横向きの画像ひとつひとつについて処理を行う必要があるが、複数の画像を一括処理する方法もあった。

まず、Vixでテスト画像を一覧表示(サムネイル)する。Vixのサムネイルも主画像を縮小してつくったものであるが、Vixには自動回転機能がないので図12のように主画像の方向のまま表示される。このうち左方向を向いている画像「右回転−1」と「右回転−6」を同時に選択し、メニューバーの 「画像→右回転+保存」 をクリックする。

図12.Vixによるテスト画像表示(自動回転表示機能なし)

「右回転−1」と「右回転−6」の画像は一度に右回転し、図13のようにシャチ鉾が縦向きになる。
同様にして「左回転−1」と「左回転−8」を選択し、メニューバーの 「画像→左回転+保存」 をクリックしてシャチ鉾を縦向きにする。
このようにして、全ての主のテスト画像を縦向きにする。

図13.「右回転−1」と「右回転−6」を右回転して保存した画像

Vixでは、回転と保存を行ったときEXIFの画像方向タグ値はもとの値を保存し、1にリセットしてくれないので、F6Exifを使ってこれを全て1に変更する。
まず、F6Exifのサムネイルビューアで全ての画像を表示させる。ここで注意が必要なのは、F6Exifのサムネイルビューアは主画像を縮小して作ったサムネイルではなく、JPEGファイルに組み込まれているサムネイルを表示し、しかも画像方向タグによって自動回転表示する。Vixの回転処理をしても組み込みサムネイルは元のままなので、サムネイルビューアで表示される画像の向きはここでは問題にしない(図14)。

図14.F6Exifのサムネイルビューアの表示

次にF6Exifのサムネイルビューア画面で、「編集(E)→全てを選択(A)」 をクリックして、全サムネイル画像を選択する。 ここで「編集 → EXIFタグ更新」 を選択すると図15の「EXIF編集」ダイアログが表示される。
 TAGのメニューから「0x0112 :画像方向」を選択し、設定欄に1を記入して更新ボタンをクリックすると、全ての画像の画像方向タグが1に更新されて(もともと1のものはそのまま)上書き保存される。

図15.「EXIF編集」ダイアログ

最後に自動回転表示機能のあるIfranViewで、「EXIF情報に合わせて自動的に画像を回転」にチェックを入れてサムネイル表示し(図16)、全ての画像が縦向きに表示されることを確認する。
これで自動回転表示機能のある画像ソフトでも、自動回転表示機能のない画像ソフトでも、いずれでも縦向きに正立して表示できた。

図16.画像方向タグを全て1にしたテスト画像



4.AZURE automatic(JPEGファイル回転自動処理版 )を使って一発で処理する
このページを見た方から良いソフトがあるとの情報の提供があり、さっそく使ってみると確かに便利だったのでこの項目を追加しました。Picasaさん、ありがとうございました。(2010年10月)
AZURE automatic を起動すると図17の画面があられる。使用方法は簡単で、デジカメ画像をホルダーごと画面の右上部分にドラッグするだけである。
ドラッグするとすぐに処理が始まり、画像方向タグが1以外の画像ファイルはタグ内容に応じて画像を回転させて縦向きにし、画像方向タグを1に変更してして保存する。もともと画像方向タグが1の画像は何もしない。
 図18は、図7の5個のテスト画像ファイルをフォルダー(TEST digicame-exifS)ごとドラッグしたときの画像である。


図17.AZURE automatic の起動画面


図18.画像をホルダーごと画面の右上部分にドラッグ

図19は処理後のTEST digicame-exifSフォルダーの中身で、resultフォルダーが新しく作成され、この中に回転処理された画像ファイルが入っている。
図20はresultフォルダーの中身で、回転処理された右回転-6.jpgと左回転-8.jpgの画像ファイルが入っている。
回転処理された画像ファイルの保存方法は、resultフォルダーに入れる方法のほかに、設定によって元の画像ファイルに上書きすることもできる。。


図19.TEST digicame-exifS フォルダー


図20.resultフォルダー

図21は、処理後のテスト画像を、Ifran View で自動回転なしで表示したものである。右回転-6.jpgと左回転-8.jpgは、回転処理されて縦向きに修正されているが、当然のことながら画像方向タグが1の右回転-1.jpgと左回転-1.jpgは回転処理されないので横向きのままである。


図21.処理後のテスト画像をIfran View で表示(自動回転なし)

 通常は重力センサ付きのデジカメで撮った画像ファイルを一括処理することが多いので、このソフトは撮像したフォルダーごと一発で処理でき非常に便利である。ただし重力センサのないデジカメの場合や、デジカメの構え方によって画像方向タグが違っている場合、さらにはデジカメ画像を編集したときなどは、このソフトだけではうまくいかない。またJPEGの主画像と組み込みサムネイルの整合がとれていないこともあるので、いずれにしても最後に全ての画像を表示して確認する必要がある。


 なお回転処理を行う場合、画像処理ソフトによっては回転処理によって画質が劣化するが、ここで取り上げたIfran View、Vix、AZURE automaticは、いずれも画質の劣化がないロスレス回転機能を持っている。

6.感想
 以上のようにして、どんな場合でも画像が縦向きに表示されるようにする方法がわかった。
 しかし、このEXIFの画像方向タグは使いずらい。デジカメによって重力センサがあったりなかったりするし、重力センサがあってもカメラを上向きや下向きに保持すると正しい回転方向を示さない。画像ソフトについても、自動回転表示機能のあるものとないものがある。画像をトリミングや回転処理して保存するときの画像方向タグ値の扱い方も、画像ソフトによって異なる。
 
ここでは、JPEGに組み込まれたサムネイル画像については無視してきたが、画像を選択するための一覧表示に組み込みサムネイルを使っている画像ソフトもあり(フォトフレームではほとんどそうであろう)、一覧表示でも縦方向に正立させて見るようにしたい。
これについて調べた結果は、デジカメ画像のサムネイル表示についてのページにまとめた。
(おわり)


   ヒロとシーのゆうゆうシニアライフ(TOP)デジカメ画像の回転(EXIF)について