説明

画像処理装置およびプログラム

【課題】独自情報のデータ配列順を正しく変更せずに再保存されたTIFF形式の画像ファイルであっても、独自情報のデータを読み出しうる画像処理装置を提供する。
【解決手段】TIFFヘッダと、画像データと、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報がIFDデータに含まれている画像ファイルを読み出すための画像処理装置であって、前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得し、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得するエンディアン取得部と、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が不一致の場合には前記独自情報を前記付加エンディアン情報に従って読み出すことを特徴とするデータ読出部と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、TIFFファイル形式を利用して画像データの記録および再生を行う画像処理装置に関する。
【背景技術】
【0002】
近年、撮像素子によって撮影した被写体像の画像データを記録媒体に電子的に記録する電子カメラが急速に普及しつつある。かかる電子カメラの代表的なファイルフォーマットとしてExif(Exchangeable image file format for digital still cameras)が知られている。Exifには、TIFFファイル(Tagged Image File Format)形式の非圧縮画像ファイルとJPEG(Joint Photographic Experts Group)ファイル形式の圧縮画像ファイルの2種類のフォーマットが規定されている。そして、いずれの場合にも画像データの様々な付属情報(撮影情報等)をTIFFファイル形式のタグ(Tag)を利用して記録している。
【0003】
図6に従来より公知のTIFFファイルの構造を表す。TIFFファイルは、TIFFヘッダ(image file header)で始まるツリー構造となっている。TIFFヘッダは8バイトのデータであって、「バイトオーダー(Byte Order)」と、「TIFFファイル識別子(TIFF Identifier)」と、「イメージファイルディレクトリ(IFD:Image File Directory)のオフセット(Offset of 0th IFD)」との3つのデータで構成されている。
【0004】
「バイトオーダ」にはTIFFヘッダの最初の2バイト(1バイト目と2バイト目)が割り当てられており、バイトオーダ以降に記録される16ビット型や32ビット型等のデータにおける各バイトの配列順(エンディアン)を示している。バイトオーダにはASCII文字列の「II」(4949h)または「MM」(4D4Dh)が配置される。
上記の「II」はリトルエンディアンを表しており、この場合にはデータが下位バイトから上位バイトに向かって前方から順に配置される。一方、「MM」はビッグエンディアンを表しており、この場合にはデータが上位バイトから下位バイトに向かって前方から順に配置される。かかるエンディアンは一般的にTIFFファイルを生成するMPUのエンディアンに従って決定されることが多い。これは、TIFFファイルおよびMPUのエンディアンが相違する場合には複数バイトのデータ(16ビット型、32ビット型等のデータ)の読み書き時にバイトの入れ替えが必要となるが、両者が一致する場合にはバイトの入れ替えを行うことなくデータを読み書きできるからである。
【0005】
「TIFFファイル識別子」にはバイトオーダに続く次の2バイト(3バイト目と4バイト目)が割り当てられており、具体的には10進数表示で「42」に相当する16進表記のデータが上記のエンディアンに従って配置されている。任意のデータファイルがTIFFファイル形式であるか否かは、TIFFヘッダの先頭4バイトのデータによって識別することができる。
【0006】
「IFDのオフセット」はTIFFヘッダの後に続くデータ領域のアドレスを示す情報であって、TIFFヘッダの最後の4バイト(5バイト目〜8バイト目)が割り当てられている。具体的には、TIFFファイル内の最初のIFDの位置がTIFFヘッダの先頭を基準とした32ビット相対アドレス値(オフセット)が記述されている。この32ビット相対アドレス値のバイト配列順もTIFFヘッダ先頭のバイトオーダーに従う。
【0007】
TIFFファイルでは、このTIFFヘッダに続いてIFDが配置されている。各IFDには後述する12バイトのデータブロック(IFD Entry)が複数含まれており、各IFDの先頭にはそのデータブロックの数を表す16ビット数値(Number of Directory Entries)が配置される。一方、各IFDの最後のデータブロックの後には、次のIFDの先頭を示す32ビット相対アドレス値(Offset of Next IFD)が配置される。なお、次のIFDが存在しない場合には、このオフセットに「00000000h」が記録される。
【0008】
ここで、「IFD Entry」の先頭2バイト(1バイト目と2バイト目)は、個々のタグ(Tag)を表す16ビット識別番号(Identifier:タグ番号)が配置されている。そして、このタグ番号は具体的な付属情報(イメージの大きさ、圧縮法の種類、解像度等)に対応付けされている。なお、Exifでは、通常のTIFFでは定義されていないExif固有のタグが定義されており、電子カメラ特有の撮影情報等はExif固有のタグを用いて記録されている。
【0009】
「IFD Entry」の3バイト目と4バイト目には、上記のタグ番号に対応する付属情報のデータ型(Type)を示す16ビット識別番号が配置される。このデータ型には、符号無し8ビット整数(BYTE)、符号無し16ビット整数(SHORT)、符号無し32ビット整数(LONG)、単なる8ビットデータ列(UNDEFINED)などが存在する。
「IFD Entry」の5バイト目から8バイト目には、上記のデータ型(Type)で指定されたデータが何個含まれているか(Count)を表す32ビット数値が格納されている。なお、後述の付属情報の総データ量は、データ型(TYPE)で表される1データ当たりのバイト数と、そのデータの個数(Count)との積に対応する。
【0010】
「IFD Entry」の9バイト目から12バイト目(「Value/Offsetフィールド」と称する)には、上記のタグ番号に対応した付属情報のデータ(Value)か、あるいは付属情報のデータが格納されている領域の先頭を示す32ビット相対アドレス値(オフセット)の何れかが配置される。なお、付属情報のデータ量が4バイトを超える場合には、付属情報のデータはIFD毎に1つのデータ領域(「Value of IFD領域」と称する)に集中して配置されるのが一般的である。
【0011】
「画像データ」はストリップ(Strip)やタイル(Tile)と呼ばれるブロック状に分割されて記録される。そして、画像データのポインタのタグに対応する「Value of IFD領域」には分割された各画像データに対応するポインタ値がストリップやタイルの数だけ格納されている。各ポインタ値はストリップ等のスキャン順に配置され、その先頭のポインタ値の相対アドレス(オフセット)だけが「Value/Offsetフィールド」に格納される。そのため、「Value of IFD領域」のポインタ値を参照することで画像データをストリップ単位(またはタイル単位)で読み出すことができる。
【0012】
なお、Exifでは、主画像およびサムネイルを記録できるように規定されているため、上記のIFDは各画像に対応して2つ存在する。1番目のIFD(0th IFD)は主画像用であり、2番目のIFD(1st IFD)がサムネイル用である。従って、「Value of IFD領域」や画像データのデータ領域も基本的に各IFD毎に存在する。
一方、Exifの圧縮画像ファイルでは、JPEGファイルにTIFF形式(Tag形式)で付属情報を埋め込んでいる。図7に示すように、代表的なExifのJPEGファイルの構造は以下の通りである。
【0013】
SOI + APP1 + DQT + DHT + SOF0 + SOS + ECS + EOI
ここで、「SOI(Start of Image)」はJPEGファイルの先頭を表すマーカコード、「APP1」はサムネイルを含む付属情報を記録する領域、「DQT」は使用された量子化テーブルを記録する領域、「DHT」はハフマン符号化で使用されたハフマンテーブルを記録する領域、「SOF0(Start of Frame)」はJPEGの圧縮モードを示す情報や、画像データのサンプリング比の情報等を記録する領域、「SOS(Start of Scan)」は画像データのスキャン情報を記録する領域、「ECS(Entropy Coded Segment)」は圧縮された主画像データ本体を記録する領域、「EOI(End of Image)」はJPEGファイルの最後を表すマーカコードである。
【0014】
Exifの圧縮画像ファイルでは、「APP1」にTIFFファイルのIFDを配置してタグ形式で付属情報を記録している。しかし、主画像の画像データ本体は圧縮されてJPEGコードストリームの中に埋め込まれているため、0thIFDに対する画像データは存在しない。また、主画像の基本パラメータ(水平画素数や垂直数画素数等)はJPEGヘッダに含まれているので、それらのパラメータに対するタグも記録しない。一方、通常のJPEGファイルはサムネイルについて規定していないが、Exifの圧縮画像ファイルでは1stIFDによってサムネイルが記録されている。
【特許文献1】特開2002−165056号公報
【特許文献2】特許第3203290号公報
【非特許文献1】"TIFF Revision 6.0 Final" - June 3,1992
【非特許文献2】"JEITA CP-3451 Exchangeable image file format for digital still cameras : Exif Version 2.2" - April,2002
【発明の開示】
【発明が解決しようとする課題】
【0015】
ところで、電子カメラで生成した画像ファイルをコンピュータ上で加工することが近年では一般的に行われている。そして、一部のPCアプリケーションでは、読み込んだExifファイルをコンピュータ上で再保存する場合(例えば、画像を回転する等の操作を行った後)に画像ファイルのエンディアンを変更することがある。
ここで、コンピュータ側でエンディアンを変更する場合には、Exifファイルの個々の付属情報も変更後のエンディアンに従って再配列しなければならない。1バイト単位のデータ型のタグに対応する付属情報についてはエンディアンが変更されてもそのバイト順を変更する必要がない。また、データ型およびデータサイズが明確なタグに対応する付属情報については、コンピュータが機械的にバイト順序を変更できるので問題は生じない。
【0016】
一方、TIFFのデータ型には、上記のCountと相俟って単なる8ビットデータ列の記憶領域をいくつ確保するかを示すUNDEFINED型が存在する。このUNDEFINED型のタグは他のデータ型が適用できない場合に利用され、そのタグに対応するデータ領域には、TIFFベースの個別規格やカメラメーカー等による個々のタグの定義に応じて多様なデータを含めることができる。例えば、ExifはTIFFをベースとした個別規格であるが、Exif固有のタグの中にもUNDEFINED型のタグが存在し、個々のUNDEFINED型のタグの意味はExif規格内で定義されている。
【0017】
すなわち、UNDEFINED型のタグに対応する付属情報(独自情報)のデータ構造は個々のタグごとに相違する。例えば、UNDEFINED型のタグを利用した独自情報の中には16ビットや32ビットのデータが混在する構造体型のデータ構造のものもあり、個々のタグの定義とデータ構造が判らなければエンディアンを変更することはできない。したがって、未知のUNDEFINED型のタグを含むファイルをコンピュータが再保存する場合には、その未知のUNDEFINED型のタグに関する独自情報のデータを再配列できない以上、画像ファイルのエンディアンを本来変更するべきではない。
【0018】
しかし、現実のPCアプリケーション等では、独自情報はデータは元のエンディアンのままで、TIFFヘッダを含む他のデータのエンディアンを変更して画像ファイルを再保存している場合がある。TIFFの規則ではUNDEFINED型のタグのエンディアンはTIFFヘッダのエンディアンに従うこととなる。そのため、上記の再保存後にTIFFヘッダのエンディアンに従って独自情報を読み出すと正しく読めないという不具合が確認されている。
【0019】
本発明は上記従来技術の課題を解決するためにされたものであり、その目的は、すべてのデータのエンディアンを正しく変更することなく再保存された画像ファイルであっても、独自情報のデータを読み出しうる画像処理装置を提供することである。
【課題を解決するための手段】
【0020】
請求項1の発明に係る画像処理装置は、被写体像を光電変換して得たデジタル画像信号に画像処理を施して画像データを生成する画像処理部と、前記画像データに関連する付属情報をTIFFファイルのタグ形式で構成したIFDデータと、前記画像データとを有する画像ファイルを生成し、データ構造を自由に設定しうるデータ型で構成された付属情報である独自情報が前記IFDデータに含まれる場合には、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域に記録する画像ファイル生成部と、を有することを特徴とする。
【0021】
請求項2の発明は、請求項1の発明において、前記独自情報がTIFFファイル形式のUNDEFINED型のデータであることを特徴とする。
請求項3の発明は、請求項1または請求項2の発明において、画像ファイル生成部はExif規格に準拠して前記画像ファイルを生成し、Exif規格のMakerNoteタグのデータ領域に前記付加エンディアン情報を記録することを特徴とする。
【0022】
請求項4の発明に係る画像処理装置は、TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理装置であって、前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得し、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得するエンディアン取得部と、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が不一致の場合には前記独自情報を前記付加エンディアン情報に従って読み出すことを特徴とするデータ読出部と、を有することを特徴とする。
【0023】
請求項5の発明に係る画像処理装置は、TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理装置であって、前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得し、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得するエンディアン取得部と、前記独自情報を前記付加エンディアン情報に従って読み出し、前記独自情報以外のデータを前記基本エンディアン情報に従って読み出すデータ読出部と、を有することを特徴とする。
【0024】
請求項6の発明は、請求項4または請求項5の発明において、前記エンディアン取得部は、予め独自情報生成時に記録された付加エンディアン情報を前記独自情報のデータ領域から取得することを特徴とする。
請求項7の発明は、請求項4から請求項6のいずれかの発明において、前記IFDデータには、別個のタグに関連付けされた複数の前記独自情報が含まれ、一部のタグの独自情報にのみ前記付加エンディアン情報が記録されており、前記データ読出部は、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が一致する場合には前記画像ファイルのすべての独自情報を前記基本エンディアン情報に従って読み出し、バイト配列順が不一致の場合には前記画像ファイルのすべての独自情報を前記付加エンディアン情報に従って読み出すことを特徴とする。
【0025】
請求項8の発明は、請求項4から請求項6のいずれかの発明において、前記IFDデータには、別個のタグに関連付けされた複数の前記独自情報が含まれ、一部のタグの独自情報にのみ前記付加エンディアン情報が記録されており、前記データ読出部は、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が一致する場合には前記画像ファイルのすべての独自情報を前記基本エンディアン情報に従って読み出し、バイト配列順が不一致の場合には前記付加エンディアン情報が記録されたタグの独自情報を前記付加エンディアン情報に従って読み出し、前記付加エンディアン情報が記録されていないタグの独自情報は前記基本エンディアン情報に従って読み出すことを特徴とする。
【0026】
請求項9の発明は、請求項7または請求項8の発明において、前記エンディアン取得部は、前記独自情報のデータ領域において、前記画像ファイルの規格により予め値が判明しているタグまたは前記画像ファイルの規格により正しい値が推定可能なタグを前記基本エンディアン情報に従って読み出し、前記タグの値を正しく読み出せるか否かでバイト配列順の確認データを生成し、前記データ読出部は、前記付加エンディアン情報が記録されていないタグの独自情報を前記確認データのバイト配列順に従って読み出すことを特徴とする。
【0027】
請求項10の発明に係る画像処理プログラムは、被写体像を光電変換して得たデジタル画像信号に画像処理を施して画像データを生成する手順と、前記画像データに関連する付属情報をTIFFファイルのタグ形式で構成したIFDデータを生成する手順と、データ構造を自由に設定しうるデータ型で構成された付属情報である独自情報が前記IFDデータに含まれる場合には、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域に記録する手順と、前記画像データと前記IFDデータとを有する画像ファイルを生成する手順と、をコンピュータに実行させる。
【0028】
請求項11の発明に係る画像処理プログラムは、TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理プログラムであって、前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得する手順と、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得する手順と、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定する手順と、バイト配列順が不一致の場合には前記独自情報を前記付加エンディアン情報に従って読み出す手順と、をコンピュータに実行させる。
【0029】
請求項12の発明に係る画像処理プログラムは、TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理プログラムであって、前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得する手順と、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得する手順と、前記独自情報を前記付加エンディアン情報に従って読み出し、前記独自情報以外のデータを前記基本エンディアン情報に従って読み出す手順と、をコンピュータに実行させる。
【発明の効果】
【0030】
本発明の画像処理装置は、画像ファイル生成時においてIFDデータに独自情報が含まれる場合には、独自情報生成時のバイト配列順を示す付加エンディアン情報を独自情報のデータ領域に記録する。そして、画像ファイルの読み出し時には、基本エンディアン情報および付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が不一致の場合には付加エンディアン情報に従って独自情報を読み出す。あるいは常に独自情報を前記付加エンディアン情報に従って読み出す。したがって、独自情報のエンディアンが正しく変更されずに再保存された画像ファイルであっても、付加エンディアン情報に基づいて独自情報のデータを正確に読み出すことができる。
【発明を実施するための最良の形態】
【0031】
(第1実施形態の説明)
図1は本発明の画像処理装置の第1実施形態を示しており、この実施形態では画像処理装置が電子カメラに組み込まれている。第1実施形態の電子カメラは、撮影光学系1と、撮像素子2と、A/D変換部3と、画像処理部4と、JPEG圧縮伸長部5と、SDRAM6と、カードインターフェース7および記録媒体7aと、USBインターフェース8と、表示コントローラ9およびLCD10と、MPU11と、各部を接続するデータバス12とを有している。
【0032】
撮像素子2は撮影光学系1の像空間側に配置されている。撮像素子2の受光面には、被写体像を光電変換する受光素子が2次元配列されている。そして、撮像素子2の受光面に投影された被写体像は、受光素子により光電変換されてアナログ画像信号として出力される。また、A/D変換部3は、アナログ画像信号をデジタル画像信号に変換して画像処理部4に出力する。
【0033】
画像処理部4は、入力されるデジタル画像信号に対して画像処理(欠陥画素補正、ガンマ補正、補間、色変換、エッジ強調などの処理)を施して画像データを生成する。また、JPEG圧縮伸長部5は、画像データをJPEG形式に従って圧縮し、あるいはJPEG形式で圧縮された画像データを伸長して復元する。
SDRAM6には画像データが一時的に保存される。SDRAM6に画像データが一時保存される場合としては、(1)画像処理部4で一部の画像処理のみが施された画像データを1画面分が揃うまで待避させる場合、(2)画像処理部4による画像処理が完了した画像データを記録媒体7に記録する前に待避させる場合である。
【0034】
カードインターフェース7には記録媒体7aが着脱可能に装着されている。記録媒体7aは公知の半導体メモリなどで構成され、この記録媒体7aに電子カメラによって生成された画像ファイルが最終的に格納される。
USBインターフェース8は、USB(Universal Serial Bus)の通信規格に準拠して電子カメラに接続された外部機器とのデータ送受信を制御する。表示コントローラ9にはLCD10が接続されている。表示コントローラ9はLCD10を制御し、MPU11の画像出力に基づく画面(例えば、電子カメラの設定画面や画像ファイルの再生画像等)をLCD10に表示する。
【0035】
MPU11は電子カメラの各部動作を制御する。特に第1実施形態のMPU11は、画像ファイル生成時または画像ファイル読み出し時において以下の機能を果たす。
(1)第1に、MPU11は画像ファイル生成時にTIFFヘッダおよびIFDデータを生成する。すなわち、MPU11は所定の撮影情報から付属情報を生成し、各付属情報ごとにタグ情報(タグの種類、データ型、カウント数)を生成してIFDデータを生成する。なお、付属情報が4バイト以下の場合には、付属情報は「IFD Entry」の「Value/Offsetフィールド」に配置される。一方、付属情報が4バイトを超える場合には、付属情報はIFDデータの「Value of IFD領域」に配置され、「IFD Entry」の「Value/Offsetフィールド」には付属情報のアドレス情報が配置されることとなる。
【0036】
また、データ型がUNDEFINED型である付属情報(独自情報)がIFDデータに存在する場合には、MPU11はIFDデータの独自情報のデータ領域に付加エンディアン情報を追加する。例えば、Exif規格の画像ファイルではUNDEFINED型のMakerNoteタグをカメラメーカーが独自に定義して利用できるので、MPU11はMakerNoteタグのデータ領域に付加エンディアン情報を追加する。なお、これらの付属情報の生成(編集)は、SDRAM6上のワークエリアを利用して行われる。
【0037】
この付加エンディアン情報は独自情報生成時のバイト配列順を示すものであって、画像ファイルの読み出し時において独自情報のエンディアンを決定するのに使用される。画像ファイル再保存時にTIFFヘッダのエンディアン(基本エンディアン情報)を変更した場合でも、UNDEFINED型のタグのデータ領域は変更できずに元の状態のまま再保存される。この場合に基本エンディアン情報に従って独自情報を読み出すとデータを正しく読み出すことは不可能であるが、その独自情報のデータ領域の付加エンディアン情報を優先すれば正しいデータを読むことが可能となる。
【0038】
(2)第2に、MPU11は画像ファイル読み出し時に、TIFFヘッダの基本エンディアン情報とIFDデータから取得した付加エンディアン情報とを比較する。そして、基本エンディアン情報と付加エンディアン情報とが一致しない場合(画像ファイルのエンディアンを変更して再保存した場合)には、MPU11は付加エンディアン情報に従って独自情報の読み出しを実行する。あるいは、MPU11は常に付加エンディアン情報に従って独自情報を読み出す。
【0039】
(第1実施形態の画像ファイル生成動作)
以下、図2の流れ図に沿って、第1実施形態の画像ファイル生成動作をExif規格のTIFFファイル形式(非圧縮画像ファイル)の例で説明する。
まず、MPU11は、ユーザーのシャッタレリーズによって撮像素子2を制御して被写体像の光電変換を実行する(S101)。撮像素子2の1フレーム分のアナログ画像信号は複数フィールドに分けて読み出しされる。A/D変換部3はアナログ画像信号をデジタル化し、デジタル画像信号は画像処理部4へ順次出力される(S102)。
【0040】
画像処理部4は、入力されたデジタル画像信号に欠陥画素補正、黒レベル調整などの一部の画像処理のみを施す。一部の画像処理のみが施されたデジタル画像信号は、1フレーム分がすべて揃うまでSDRAM6に一時的に保存される。そして、SDRAM6に1フレーム分のデジタル画像信号が格納された段階で、MPU11はデジタル画像信号を画像処理部6に転送させる。画像処理部4ではデジタル画像信号に補間、ホワイトバランス調整などの残された画像処理を実行して画像データを生成する(S103)。
【0041】
また、MPU11は上記の処理の間にTIFFヘッダおよびIFDデータを生成する(S104)。ここで、IFDデータは、画像データ用の0thIFDとサムネイル用の1thIFDと、2つのIFDにそれぞれ対応する2つの「Value of IFD領域」で構成される。そして、各IFDの「IFD Entry」には、TIFFファイル形式のタグ情報とExif規格固有のタグ情報とが格納される。MPU11が収集した撮影情報は、これらのタグ情報に関連付けされた付属情報としてSDRAM6上に配置される。
【0042】
ここで、MPU11は、Exif規格のMakerNoteタグに対応する「Value of IFD領域」に独自情報生成時のバイト配列順を示す付加エンディアン情報を記録する(S105)。例えば、MPU11はTIFFヘッダのコピーを付加エンディアン情報として記録する。なお、この画像ファイル生成時には基本エンディアン情報と付加エンディアン情報とは常に一致した状態にあり、画像ファイルのすべてのデータは一定のバイト配列順に従って記録されている。
【0043】
ところで、本実施形態においてMakernoteタグに対応するデータ領域に付加エンディアン情報を記録するのは以下の理由による。
Exif規格では、TIFFファイル形式に存在しないUNDEFINED型のタグを以下に示すように独自に定義している。
・ExifVersion(Exifバージョン)
・FlashPixVersion(対応FlashPixバージョン)
・ComponentsConfiguration(各コンポーネントの意味)
・UserComment(ユーザーコメント)
・OECF(光電変換関数)
・SpatialFrequencyResponse(空間周波数応答)
・FileSource(ファイルソース)
・SceneType(シーンタイプ)
・CFAPattern(CFAパターン)
・DeviceSettingDescription(撮影条件記述情報)
・GPSProcessingMethod(測位方式の名称)
・GPSAreaInformation(測位地点の名称)
上記のタグはExif規格に基づいてデータ構造が明確に規定されている。したがって、画像ファイルのエンディアンを変更する際に、その独自情報のバイト順序を正しく変更することも可能である。しかし、現実のPCアプリケーション等では、データ構造が規定されているUNDEFINED型のタグの独自情報であってもデータのバイト順序を変更することなく再保存を行っている。
【0044】
上記のExif固有のタグの中には、エンディアンが変更されてもその影響を受けないものもある。しかし、例えば「OECF」、「SpatialFrequencyResponse」、「CFAPattern」、「DeviceSettingDescription」等のタグのデータは、その内部に16ビットや32ビットのデータが混在する構造体型のデータであるため、内部のデータを再配列せずにエンディアンを変更すると正しいデータを読めなくなってしまう。
【0045】
しかも、上記のタグに関してはExif規格でデータの構造まで決められているため、基本的にその中に付加エンディアン情報を入れる余地はない。そのため、本実施形態では、MakerNoteタグを利用して付加エンディアン情報を記録し、他のUNDEFINED型のタグの独自情報を読み出す際にMakerNoteタグの付加エンディアン情報を利用するものである。
【0046】
そして、MPU11はTIFFヘッダおよびIFDデータと画像データとをSDRAM6に書き込んで画像ファイルを生成する。その後、MPU11は画像ファイルを記録媒体7aに最終的に格納する(S106)。以上の工程で一連の画像ファイル生成動作が完了する。
(第1実施形態の画像ファイル読み出し動作)
以下、図3の流れ図に沿って、第1実施形態の画像ファイル読み出し動作を説明する。なお、この例は上記の画像ファイル生成動作で生成された画像ファイルの読み出しに関する。
【0047】
MPU11は記録媒体7a(またはUSBインターフェース8で接続された外部記録装置)からTIFFヘッダを読み出して基本エンディアン情報を取得する(S201)。
次に、MPU11はIFDデータを検索し、MakerNoteタグの「Value of IFD領域」に記録された付加エンディアン情報を読み出して、バイト配列順を取得する(S202)。
【0048】
そして、MPU11は基本エンディアン情報と付加エンディアン情報とのバイト配列順が一致するか否かを判定する(S203)。両者が一致する場合(YES側)には、MPU11は独自情報を含む画像ファイルのすべてのデータを基本エンディアン情報に従って読み出す(S204)。なお、この場合は画像ファイルのエンディアンが変更されていない場合に相当する。
【0049】
一方、両者が不一致の場合(NO側)は、他の画像処理装置等でエンディアンを変更して画像ファイルを再保存した場合に相当する。この場合には、MPU11はUNDEFINED型のタグに関連付けされた独自情報はすべて付加エンディアン情報に従って読み出し、その他のデータは基本エンディアン情報に従って読み出す(S205)。
すなわち、エンディアンを変更して画像ファイルを再保存した場合、TIFFヘッダ、IFDのタグ情報および付属情報(つまり、UNDEFINED型のタグの独自情報以外のデータ)は、変更後のエンディアンに従ってデータが再配列されている。したがって、これらのデータはTIFFヘッダの基本エンディアン情報に従って正しく読み出すことができる。一方、独自情報については元のエンディアンのままで保存されている可能性が高いので、付加エンディアン情報を優先することで独自情報を正しく読み出すものである。
【0050】
そして、MPU11は読み込んだ画像データや撮影情報等を表示コントローラ9に転送し、LCD10に画像データ等が表示される(S206)。以上の工程で一連の画像ファイル読み出し動作が完了する。
(第1実施形態の効果)
上記実施形態の電子カメラでは、TIFFファイル形式で付属情報を記録する場合で独自情報がある場合は、MakerNoteタグのデータ領域に付加エンディアン情報を記録している。そして、画像ファイルを読み出す場合には、TIFFヘッダの基本エンディアン情報と付加エンディアン情報とを比較し、両者が不一致の場合には独自情報の読み出しに付加エンディアン情報を優先的に適用する。したがって、TIFFヘッダのエンディアンが変更されて再保存された画像ファイルであっても、UNDEFINED型のタグに関連付けされた独自情報を正しく読み出すことが可能となる。
【0051】
(第2実施形態の説明)
図4は、第2実施形態の画像ファイルの読み出し動作を示す流れ図である。第2実施形態は上記第1実施形態の画像ファイル読み出し動作に対応し、Exif規格でデータ構造が明確に規定されているUNDEFINED型のタグについて、MPU11が再保存時にバイト配列順を正しく変更しているか否かを確認する例である。
【0052】
まず、MPU11は記録媒体7a等からTIFFヘッダを読み出して基本エンディアン情報を取得する(S301)。
次に、MPU11はIFDデータを検索し、MakerNoteタグに対応する「Value of IFD領域」に記録された付加エンディアン情報を読み出して、バイト配列順を取得する(S302)。
【0053】
そして、MPU11は基本エンディアン情報と付加エンディアン情報とが一致するか否かを判定する(S303)。両者が一致する場合(YES側)には、MPU11は独自情報を含む画像ファイルのすべてのデータを基本エンディアン情報に従って読み出す(S304)。なお、この場合は画像ファイルのエンディアンが変更されていない場合に相当する。
【0054】
一方、両者が不一致の場合(NO側)は、エンディアンを変更して画像ファイルを再保存した場合に相当する。この場合、MPU11はIFDデータを検索し、Exif規格により「予め値が判明しているタグ」または「正しい値が推定可能なタグ」を基本エンディアン情報に従って読み出し、これらのデータの正しい値が読み出せたか否かを示すバイト配列順の確認データを生成する(S305)。
【0055】
例えば、MPU11はExif規格の固有タグである「CFAPattern」における「横方向の反復画素単位」および「縦方向の反復画素範囲」のデータを基本エンディアン情報に従って読み出す。そして、MPU11は、データの値が1桁に収まる場合には基本エンディアン情報に従って正しい値が読めたものと判定する。「CFAPattern」の上記データはSHORT型のデータ構造であり、2桁の値をとることは通常考えられないからである。
【0056】
そして、MPU11は、所定のタグで正しい値を読み出せたか否かを確認データに基づいて判定する(S306)。正しい値が読み出せた場合(YES側)には、Exif規格で定義されているタグに関する独自情報は再保存時にエンディアンが正しく変更されている可能性が高い。そのため、MPU11は、MakerNoteタグに対応する独自情報は付加エンディアン情報に従って読み出し、その他のデータは基本エンディアン情報に従って読み出す(S307)。
【0057】
一方、正しい値が読み出せない場合(NO側)は、データ型がUNDEFINED型の独自情報はすべて元のエンディアンのままの可能性が高い。そのため、MPU11はUNDEFINED型のタグに関連付けされた独自情報は付加エンディアン情報に従って読み出し、その他のデータは基本エンディアン情報に従って読み出す(S308)。
そして、MPU11は読み込んだ画像データや撮影情報等を表示コントローラ9に転送し、LCD10に画像データ等が表示される(S309)。以上の工程で一連の画像ファイル読み出し動作が完了する。
【0058】
上記第2実施形態によれば、独自情報のデータを読み出す際に、MakerNoteタグの付加エンディアン情報と、所定のタグのデータによるバイト配列順とをチェックするので、独自情報のデータを誤って読む可能性がさらに抑制される。
(第3実施形態の説明)
図5は、第3実施形態の画像ファイルの読み出し動作を示す流れ図である。この第3実施形態は第1実施形態の画像ファイルの読み出し動作の変形例であって、ステップS205に対応するステップS405のみが第1実施形態と相違する。
【0059】
第4実施形態では、基本エンディアン情報と付加エンディアン情報とが不一致の場合には、MPU11はMakerNoteタグに対応する独自情報のみを付加エンディアン情報に従って読み出し、その他のデータは基本エンディアン情報に従って読み出す(S405)。Exif規格で定義されているタグに関する独自情報は再保存時にエンディアンが正しく変更されている場合もあるので、第4実施形態ではMakerNoteタグに関する独自情報以外の読み出しでは基本エンディアン情報を優先するものである。
【0060】
(請求項と実施形態との対応関係)
ここで、請求項と実施形態との対応関係を示しておく。なお、以下に示す対応関係はあくまで参考のために示した解釈であって、本発明の技術的範囲を限定するものではない。
「画像処理部」には画像処理部4が対応する。「画像ファイル生成部」、「エンディアン取得部」および「データ読出部」にはMPU11が対応する。
【0061】
また、「付属情報」はTIFFファイル形式において「Value of IFD領域」または「Value/Offsetフィールド」に記録されたデータが該当し、「独自情報」はTIFFファイル形式におけるUNDEFINED型の付属情報が該当する。「画像ファイルの規格により予め値が判明しているタグ」、「画像ファイルの規格により正しい値が推定可能なタグ」としては「CFAPattern」タグが該当する。なお、請求項10から請求項12の画像処理プログラムはMPU11により実行される。
【0062】
(実施形態の補足事項)
以上、本発明を上記の実施形態によって説明してきたが、本発明の技術的範囲は上記実施形態に限定されるものではない。
(1)本発明はExif規格の非圧縮画像ファイルの場合に限定されることなく、Exif規格のJPEG画像ファイルや、通常のTIFFファイル形式の画像ファイルにも勿論適用することが可能である。
【0063】
(2)付加エンディアン情報は、MakerNoteタグに限定されることなく他のUNDEFINED型タグに対応するデータ領域に記録してもよい。また、付加エンディアン情報は、1つのIFDデータについて複数箇所に記録されていてもよい。例えば、通常のTIFFファイル形式の画像ファイルでは、すべてのUNDEFINED型タグの付属情報にそれぞれ付加エンディアン情報を記録することも可能な場合がある。
【0064】
(3)付加エンディアン情報が記録されたタグのデータは、基本エンディアン情報とバイト配列順が一致するか否かにかかわらず、常に付加エンディアン情報に基づいて読み出すようにしてもよい。
(4)第2実施形態では「CFAPattern」タグの値を確認してエンディアンの適否を判定しているが、この例に限定されるものではない。例えば、画像ファイルがそのカメラ自身で記録された場合には、すべてのタグのデータ内容が予め明確であるので他のタグの独自情報を読み出しても上記のエンディアンの適否の判定を行うことができる。
【0065】
(5)第3実施形態においても、第2実施形態と同様の手法で付加エンディアン情報を有しない独自情報のバイト配列順を確認するようにしてもよい。
(6)本発明の画像処理装置は電子カメラに限定されることなく、例えば、フイルムスキャナや、電子カメラで撮影したRAWデータをバッチ処理する画像処理装置や、画像ファイルを読み出す機能を備えたリーダーなどに広く適用することができる。
【産業上の利用可能性】
【0066】
本発明は、Exif規格またはTIFFファイル形式の画像ファイルを扱う電子カメラ、フイルムスキャナ、コンピュータ上で画像ファイルの加工、再生を行うPCアプリケーションなどに適用することができる。
【図面の簡単な説明】
【0067】
【図1】第1実施形態の電子カメラの構成を示すブロック図
【図2】第1実施形態の画像ファイル生成動作を示す流れ図
【図3】第1実施形態の画像ファイル読み出し動作を示す流れ図
【図4】第2実施形態の画像ファイル読み出し動作を示す流れ図
【図5】第3実施形態の画像ファイル読み出し動作を示す流れ図
【図6】TIFFファイル形式のデータ構造を示す説明図
【図7】Exif規格のJPEGファイル形式のデータ構造を示す説明図
【符号の説明】
【0068】
1 撮影光学系
2 撮像素子
3 A/D変換部
4 画像処理部
5 JPEG圧縮伸長部
6 SDRAM
7 カードインターフェース
7a 記録媒体
8 USBインターフェース
9 表示コントローラ
10 LCD
11 MPU
12 データバス



【特許請求の範囲】
【請求項1】
被写体像を光電変換して得たデジタル画像信号に画像処理を施して画像データを生成する画像処理部と、
前記画像データに関連する付属情報をTIFFファイルのタグ形式で構成したIFDデータと、前記画像データとを有する画像ファイルを生成し、データ構造を自由に設定しうるデータ型で構成された付属情報である独自情報が前記IFDデータに含まれる場合には、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域に記録する画像ファイル生成部と、
を有することを特徴とする画像処理装置。
【請求項2】
前記独自情報がTIFFファイル形式のUNDEFINED型のデータであることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
画像ファイル生成部はExif規格に準拠して前記画像ファイルを生成し、Exif規格のMakerNoteタグのデータ領域に前記付加エンディアン情報を記録することを特徴とする請求項1または請求項2に記載の画像処理装置。
【請求項4】
TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理装置であって、
前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得し、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得するエンディアン取得部と、
前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が不一致の場合には前記独自情報を前記付加エンディアン情報に従って読み出すことを特徴とするデータ読出部と、
を有することを特徴とする画像処理装置。
【請求項5】
TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理装置であって、
前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得し、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得するエンディアン取得部と、
前記独自情報を前記付加エンディアン情報に従って読み出し、前記独自情報以外のデータを前記基本エンディアン情報に従って読み出すデータ読出部と、
を有することを特徴とする画像処理装置。
【請求項6】
前記エンディアン取得部は、予め独自情報生成時に記録された付加エンディアン情報を前記独自情報のデータ領域から取得することを特徴とする請求項4または請求項5に記載の画像処理装置。
【請求項7】
前記IFDデータには、別個のタグに関連付けされた複数の前記独自情報が含まれ、一部のタグの独自情報にのみ前記付加エンディアン情報が記録されており、
前記データ読出部は、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が一致する場合には前記画像ファイルのすべての独自情報を前記基本エンディアン情報に従って読み出し、バイト配列順が不一致の場合には前記画像ファイルのすべての独自情報を前記付加エンディアン情報に従って読み出すことを特徴とする請求項4から請求項6のいずれか1項に記載の画像処理装置。
【請求項8】
前記IFDデータには、別個のタグに関連付けされた複数の前記独自情報が含まれ、一部のタグの独自情報にのみ前記付加エンディアン情報が記録されており、
前記データ読出部は、前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定し、バイト配列順が一致する場合には前記画像ファイルのすべての独自情報を前記基本エンディアン情報に従って読み出し、バイト配列順が不一致の場合には前記付加エンディアン情報が記録されたタグの独自情報を前記付加エンディアン情報に従って読み出し、前記付加エンディアン情報が記録されていないタグの独自情報は前記基本エンディアン情報に従って読み出すことを特徴とする請求項4から請求項6のいずれか1項に記載の画像処理装置。
【請求項9】
前記エンディアン取得部は、前記独自情報のデータ領域において、前記画像ファイルの規格により予め値が判明しているタグまたは前記画像ファイルの規格により正しい値が推定可能なタグを前記基本エンディアン情報に従って読み出し、前記タグの値を正しく読み出せるか否かでバイト配列順の確認データを生成し、
前記データ読出部は、前記付加エンディアン情報が記録されていないタグの独自情報を前記確認データのバイト配列順に従って読み出すことを特徴とする請求項7または請求項8に記載の画像処理装置。
【請求項10】
被写体像を光電変換して得たデジタル画像信号に画像処理を施して画像データを生成する手順と、
前記画像データに関連する付属情報をTIFFファイルのタグ形式で構成したIFDデータを生成する手順と、
データ構造を自由に設定しうるデータ型で構成された付属情報である独自情報が前記IFDデータに含まれる場合には、独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域に記録する手順と、
前記画像データと前記IFDデータとを有する画像ファイルを生成する手順と、
をコンピュータに実行させるための画像処理プログラム。
【請求項11】
TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理プログラムであって、
前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得する手順と、
独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得する手順と、
前記基本エンディアン情報および前記付加エンディアン情報のバイト配列順が一致するか否かを判定する手順と、
バイト配列順が不一致の場合には前記独自情報を前記付加エンディアン情報に従って読み出す手順と、
をコンピュータに実行させるための画像処理プログラム。
【請求項12】
TIFFヘッダと、画像データと、前記画像データに関連する付属情報をTIFFファイルのタグ形式で記録したIFDデータとを有し、データ構造を自由に設定しうるデータ型で記録された付属情報である独自情報が前記IFDデータに含まれている画像ファイルを読み出すための画像処理プログラムであって、
前記画像ファイルの現在のバイト配列順を示す基本エンディアン情報を前記TIFFヘッダから取得する手順と、
独自情報生成時のバイト配列順を示す付加エンディアン情報を前記独自情報のデータ領域から取得する手順と、
前記独自情報を前記付加エンディアン情報に従って読み出し、前記独自情報以外のデータを前記基本エンディアン情報に従って読み出す手順と、
をコンピュータに実行させるための画像処理プログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−135766(P2006−135766A)
【公開日】平成18年5月25日(2006.5.25)
【国際特許分類】
【出願番号】特願2004−323794(P2004−323794)
【出願日】平成16年11月8日(2004.11.8)
【出願人】(000004112)株式会社ニコン (12,601)
【Fターム(参考)】