写真/画像とメタデータ:ExifからRDFへ

写真のようなイメージデータは、一般にはXHTMLのimg要素でウェブページに埋め込んで提供されますが、その場合、イメージの関連情報はXHTMLで別途記述されるだけで、画像ファイルが単独で参照されるとうまく伝わりません。両者をもっと有機的に融合させるため、Exifデータを抽出する、JPEGに直接RDFを埋め込むなど、画像とメタデータを結びつける方法を検討します。

Image data is generally provided as a part of an XHTML document. The description of the image, written in XHTML, is not reachable when the image itself is retrieved directly. In order to integrate the image and its description more closely, this document discusses some ideas such as how to extract Exif data, how to embed RDF in an image file, etc. Note: the document status is experimental and subject to change.

まだ準備中の段階ですが、とりあえずの情報を参考として公開します。若干説明不足の部分がありますが、ご容赦ください。

Exifとメタデータ

Exif is a standard format to embed several photo related data into a digital camera image file. It is useful for metadata exchange to extract Exif data and serialize it as RDF/XML. The Exif image description vocabulary is also defined here.

デジタルカメラの画像フォーマットとして普及している[EXIF] (Exchangeable image file format) は、TIFFのタグを利用してカメラの機種、撮影日時、絞り、シャッタースピードなどの情報を画像自身に埋め込んでいます。これらはさまざまなツールで容易に閲覧・利用することができ、デジタル写真の応用の可能性を広げています。

当然ながらこれらは基本的なメタデータとして有益なので、ExifのデータをRDFとして抽出する試みもあります。その際には、ExifのタグをRDFの語彙として表現する必要があるので、スキーマも定義しなければなりません。

ExifからRDFを抽出する

There is an experimental web based tool to extract Exif as an RDF/XML.

当サイトでは、Exifのタグを解析してRDFとして表現するテストツールを試作しています。不完全ながら、メーカー固有のタグも解析して情報を取りだしています。XLSTのオプションを使うと、情報をテーブルに整理し、写真と共に表示します。

Exifでは、多くの情報が数値データとして格納されていますが、このツールは、可能な範囲でそれらをテキスト情報に置き換えています。例えば、画像の向きを示すorientationというタグは、数字の'1'ではなく、'top-left'という情報として表示します。

なお、画像のサイズなどはJPEGの基本情報から取得しています。デジタル写真を、Photoshopのバージョン5以前などで加工するとExifデータが失われてしまうようです。その場合は、JPEGファイルとしての画像サイズなどの情報しか表示することができません。

自分でやってみる

If you want to try by yourself, several basic tools such as CPAN modules will be easily found. This site also provide a sample perl script.

JPEGファイルからExifを取り出すためには、たとえばCPANのImage::Infoモジュールなどが利用できます。自力でやるのも、TIFFのタグ構造を解析するだけなので、それほど難しくはありません。サンプルのPerlスクリプトを用意しました。自作ツールの参考にしてください。

(@@そのほか、Exifのデータを抽出するツールはいくつか存在するので、できれば紹介予定…)

ExifタグのRDFスキーマ

In order to make RDF statements from Exif data, we need properties corresponding to Exif tags. Here is an experimental RDF schema, based on Exif specification. You'll have a link to the schema, as well as a sample RDF with the vocabulary bellow.

ExifデータをRDFとして表現するためには、Exifタグに対応するプロパティをRDFの語彙として定義しておかなければなりません。当サイトのテストツールで利用するために、Exif仕様書の定義からスキーマを作成しています。

テストツールExif to RDFのページには、いくつかのカメラメーカのサンプル画像からRDFを抽出する例を用意しています。このスキーマを使ったExifデータのRDFの一部を以下に示しておきます。

(例)

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:exif="http://www.kanzaki.com/ns/exif#"
  xmlns:foaf="http://xmlns.com/foaf/0.1/">

 <foaf:Image rdf:about="http://example.org/somepicture.jpg">
  <image:height>480</image:height>
  <image:width>640</image:width>
  <exif:make>KDDI-CA</exif:make>
  <exif:model>W21CA</exif:model>
  <exif:orientation rdf:resource="&exif;top-left"/>
  <exif:dateTime>2007-12-08T20:59:06</exif:dateTime>
  ...
  <exif:exif-info>
   <exif:Exif_IFD>
    <exif:exposureTime rdf:datatype="&xsd;decimal">0.0454</exposureTime>
    <exif:exifVersion>0220</exif:exifVersion>
    <exif:flash rdf:resource="&exif;Flash-did-not-fire-compulsory"/>
    ...
   </exif:Exif_IFD>
  </exif:exif-info>
 </foaf:Image>

</rdf:RDF>

RDFの応用などを協議する[RDF-IG]でもExifをRDFとして表現する語彙の必要性を感じていたようで、当サイトの旧スキーマのコピーがW3Cの名前空間で公開されています。

写真や画像にメタデータを埋め込む

Digital camera records a lot of data relating to the exposure, but not a title, creator and description etc. You will be able to edit Exif data with some tools to embed more metadata.

デジタルカメラは写真撮影時のさまざまなデータをExifとして記録してくれますが、撮影者や写真のタイトル、内容を自動的に記録してはくれません(一部機種は、初期設定をしておくと所有者=撮影者は記録できるようです)。しかし、ちょっとしたツールで加工するだけで、ファイルに追加のメタデータを埋め込み、自らの内容を語る写真とすることが可能です。

Exif加工ツールを使う

The easiest way is to use a ready-made Exif editing tool. You can put user data in such Exif tags as ImageDescription, Artist, Copyright and UserComment. UserComment will be most useful.

簡単なのは、Exif加工ツールを用いて、Exifの該当するタグに情報を追加するという方法です。利用者のデータを保持するためのタグとしては、次のようなものがあります。

Exif user information tags
TagTag ID (hex)データタイプ適用範囲
ImageDescription 270 (10E) ASCII 画像の説明。2バイト文字は不可
Artist 315 (13B) ASCII 画像の撮影者。2バイト文字は不可
Copyright 33432 (8298) ASCII 撮影者もしくは加工者の著作権情報。2バイト文字は不可
UserComment 37510 (9286) UNDEFINED ユーザのコメント。2バイト文字の使用が可能

これらのうち、漢字を含む2バイト文字が使えるのはUserCommentタグなので、ここに画像の説明などを記入するとよいでしょう。Artistタグは初期設定でカメラに登録できる機種もあるようです。

Exifを加工できるツールはいろいろあると思いますが、たとえば富士フイルムの提供する[Exif Viewer]を使うと、サムネイルを右クリックして表示される「情報を見る」というウインドウで、ユーザコメントやコピーライトを編集することができます。

Exif Viewerを使ってExifのUserCommentタグなどを閲覧・編集できる

コメントはUserCommentに、コピーライトは1、2ともにCopyrightタグに書き加えられます。

JPEGコメントフィールドにRDFを埋め込む

You can also use JPEG comment segment to embed arbitrary information. W3C's PhotoRDF employs this method.

JPEGのフォーマットは、画像の圧縮に関する情報のセグメント、Exifなどのアプリケーション情報のセグメントのほかに、ユーザが自由にコメントを埋め込めるコメントセグメント(COM0)を持つことができます。若干強引ですが、ここにRDFのXMLを直接記述してしまえば、コメントを読むだけで画像のメタデータを取得できるようになります。

この手法の代表的なものは、W3Cのノートとして公開されている[PhotoRDF]の仕組みです。これは、JPEGのコメントにRDF/XMLを埋め込むと共に、サーバーに一種のコンテント・ネゴシエーションを実装して、リクエストに応じて画像そのものを送り返したり、画像のメタデータを抽出して送り返したりして、さまざまな自動処理を試みようというものです。ここでは、Dublin Coreに基づく画像内容と作者に関するメタデータと、カメラやレンズに関するメタデータ、および内容のジャンルなどを示すメタデータの語彙が定義されています。

この関連ツールとして、[rdfpic]というソフトが公開されています。Javaベースの、画像のコメントフィールドを編集するツールです。

rdfpicにはDublin Coreに基づくメタデータとテクニカル情報のメタデータを編集する画面が用意されている。

rdfpicを使うと、XML宣言を持つ完結したXMLデータがコメントに埋め込まれます。当サイトのテストツールExif to RDFは、ExifのデータとこのコメントRDF/XMLを統合して、ひとつのRDFとして表示します。また、サンプルEXIF抽出スクリプトは、コメントの内容をそのまま出力します。

写真だけでなく、画像一般やその他の文書でも

Image metadata is not limited to photographs. Your original illustration is deserved to have a creator and copyright information. Adobe's XMP format is an example to embed metadata in several file formats.

rdfpicなどのツールは写真のメタデータを念頭に置いていますが、もちろん画像全般に、作者やタイトルなどのメタデータは有益です。オリジナルのイラスト画像に、作者、著作権などを埋め込んでおくと、いろいろ役に立つでしょう。

同様にRDF/XMLを直接JPEGに書き込む方法としては、Adobeの提唱するXMPがあります。こちらはPhotoRDFとは異なり、コメントセグメントではなく、Exifと同じAPP1セグメントを使います。また、JPEGだけでなくPDFなど複数の文書フォーマットで利用できる方法を目指しており、Adobe製ツールの多くでこのメタデータを書き込むことができます。(@@XMPについては別途追加)

@@追加予定の内容

(いつ、公開レベルになるか分からないものの、手元ではある程度稼働しているもの)

To do's ...

GPS情報の組み合わせ

Exif has tags for GPS data. The combination of GPS and digital camera has a great potential.

ExifにはGPSデータを扱うディレクトリが用意されています。GPS付きのデジタルカメラや、ハンディGPSとの組み合わせで写真に位置情報を付与する方法はよく使われますが、これを「位置メタデータ」として、地図情報そのほかのウェブリソースと結びつけることで大きな広がりが出てきます。

デジタル写真とGPSデータに関しては位置に関するメタデータとその応用のページにまとめたので、参照してください。また位置データとデジタル画像とRSSを組み合わせて地図連動型アルバムをつくる実験を行っています。

メタ写真ジャーナル

A 'meta photo journal'. You have weblogs and pict diaries, but if you embed your text into an image (and extract it when display), the image itself will become a journal 'page'. For efficiency, long text would be better to be stored in database or FOAF+RSS, and the image to have a short description and a pointer to the text.

ウェブ日記やウェブログに写真を埋め込むのは、いうまでもなく盛ん。これを逆転させて、写真データ自身に日記あるいは記事を埋め込んで、それをブラウザでは通常の日記/ウェブログ風に表示すると、写真とテキスト情報の結びつきがいっそう強くなります(あまり複雑な記事には向かないでしょうけど)。処理の効率化のためには、写真にはサマリーとリンクのみを持たせ、テキストはデータベースやFOAFとRSSの組み合わせで扱う方がいいかも知れません(次節も参照)。メタデータ拡張版写真アルバムというほうが近いかも。

RSSを使った、さまざまなメタデータの連動

RSS will be very useful as a container of general metadata...

RSSはサイトの更新情報の配信だけでなく、さまざまなメタデータを組み合わせて提供するコンテナとしての可能性を秘めています。当サイトの「FOAFとRSSを用いた画像メタデータ」は、シンプルではあるものの応用範囲の広い利用例です。日付データと地理データを媒介に、いろいろなメタデータを連動させると面白いと考えています。

検索可能な画像

And if some agents understand the embedded metadata, images will be searchable...

メタデータを持つ画像をRDF対応のロボットが収集すれば、適切なプロパティを用いた精度の高い検索が可能になります。また、現在のロボットでもデータを収集できるよう、画像のメタデータをRSSなどのテキストファイルの形にまとめて提供するのも効果的です。

※次に述べる注釈RDFを用いて、画像のエリアを検索する実験「Image area and SPARQL -- RDF画像アノテーションを使って部分を検索表示する」を行っています。

座標とアノテーション

One image can have several distinct information. The description of areas of an image should be discussed further. Here is an example of such description, based on the discussion with Jim Ley. See also Image Description 'roundtrip' for the idea.

例えば写真に複数の人物が写っていたとすると、どの部分がだれについての画像であるかという情報(注釈=アノテーション)がメタデータとして提供できれば、よりいっそう付加価値が高まります。これはXHTMLのmap/area要素を使ったり、SVGを使ったりするアイデアがいくつか出ていますが、特定の表現システムに依存せず、抽象化したメタデータにしておけば、さまざまな応用が可能になるはずです。

アイデア段階のメタデータの例を示してみましょう(クラス、プロパティ名などは、現在RDF IGを通じてJim Leyらと討議中です)。

(例)

<foaf:Image rdf:about="http://kanzaki.com/norrington/shot98.jpg">
 <dc:title>Sir Roger and me</dc:title>
 <dc:date>1998-03-29</dc:date>
 <dc:description>Sir Roger Norrington posed with me after the Tchaikovsky Experience,
    at Queen Elizabeth Hall, London</dc:description>
  <image:hasPart>
   <image:Polygon
     image:points="36,0 0,59 0,132 76,133 76,59 71,0"
     dc:description="Sir Roger Norrington wearing a Japanese clothing."/>
  </image:hasPart>
  <image:hasPart>
   <image:Polygon
     image:points="85,18 76,65 72,130 140,132 137,58 118,18"
     dc:description="Masahide Kanzaki asked Sir Roger to pose with him."/>
  </image:hasPart>
</foaf:Image>

It's easy to convert above RDF into SVG or image map of XHTML. With a simple scripting, you'll have a popup annotation.

このRDF/XMLを、XSLTなどでmap/area要素やSVGに変換するのはごく簡単です。次の写真は、マウスオーバーなどでそれぞれの人物が誰であるかがツールチップなどとして示されます(トリッキーですが、area要素のhref属性は必須ではありません)。

Sir Roger and me Sir Roger Norrington Masahide Kanzaki

画像のエリアに注釈を加えるためのサンプルツール Image Annotator - 画像メタデータの生成 を作成していますので、お試し下さい。

メタデータを画像に直接埋め込んでおけば、画像のどの部分が何を表現しているかが常に理解可能ですし、RSSなどの別リソースにすれば、一括検索などの応用ができるようになるでしょう。

参考リソース

[EXIF]
Exchangeable image file format for digital still cameras: Exif Version 2.2, , Japan Electronics and Information Technology Industries Association, JEITA CP-3451
<http://www.exif.org/Exif2-2.PDF>
[RDF-IG]
Semantic Web Activity: RDF Interest Group
<http://www.w3.org/RDF/Interest/>
[PhotoRDF]
Yves Lafon and Bert Bos, Describing and retrieving photos using RDF and HTTP, , W3C Note
<http://www.w3.org/TR/photo-rdf/>
[Exif Viewer]
画像ビュアーソフト Exif Viewer LE, 富士フイルム
<http://www.fujifilm.co.jp/download/evlew/>
[rdfpic]
Yves Lafon and Bert Bos, Rdfpic, , W3C, Version 2.1
<http://jigsaw.w3.org/rdfpic/>