ヘッダーをスキップ
Oracle Multimediaユーザーズ・ガイド
11gリリース1(11.1)
E05684-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 イメージ・メタデータの操作

イメージ・ファイルには、イメージのコンテンツ、イメージ・ラスターおよびイメージ・メタデータの情報が含まれます。一般的に、データに関するデータをメタデータと呼びます。この場合、メタデータは実際のイメージの追加情報で、イメージとともにイメージ・ファイルに格納されています。

6.1 メタデータの概要

イメージ・ファイルには数種類のメタデータを格納できます。各メタデータは、種類ごとに異なる役割を果たします。1つは、イメージを技術的に記述するテクニカル・メタデータです。たとえば、テクニカル・メタデータには、イメージの高さや幅(ピクセル単位)または格納に使用する圧縮タイプなどのイメージの属性を含めることができます。もう1つの種類であるコンテンツ・メタデータには、イメージの標題、撮影者の名前および撮影日時を記述できます。

メタデータは、様々なメカニズムでイメージ・ファイルに格納されます。デジタル・カメラおよびスキャナは、作成するイメージに、自動的にメタデータを挿入します。Adobe Photoshopなどデジタル写真処理アプリケーションを使用すると、イメージとともに格納するメタデータを追加または編集できます。写真処理アプリケーションおよびニュースの取材アプリケーション、イメージの保存時、一般ユーザー・レベルにおいても、デジタル・イメージへのメタデータの追加は日常的な操作になっています。

イメージ・データと同じファイルに格納すると、メタデータはカプセル化されます。カプセル化により、両方の型のデータを共有し、1つのデータとして安全に交換できます。イメージ・ファイル・フォーマットに格納されたメタデータを埋込みメタデータと呼びます。

6.2 Oracle Multimedia Imageメタデータの概要

多数のイメージ・ファイル・フォーマットの場合、Oracle Multimediaが抽出および管理できるメタデータ属性は限られます。これらの属性には、height、width、contentLength、fileFormat、contentFormat、compressionFormatおよびmimeTypeがあります。少数のイメージ・ファイル・フォーマットの場合、Oracle Multimediaは多数のメタデータ属性を抽出できます。このメタデータは、スキーマ・ベースのXML文書で表されます。これらのXML文書は、データベースへの格納、索引付け、検索および更新が可能です。また、Oracle Databaseの標準的なメカニズムを使用してアプリケーションからも利用可能にできます。

また、Oracle Multimediaは、ユーザーが指定するメタデータを少数のイメージ・データ・ファイルに書き込んだり、組み込むことができます。メタデータは、アプリケーションによりスキーマ・ベースのXML文書として提供されます。Oracle Multimediaは、XML文書を処理し、イメージ・ファイルにメタデータを書き込みます。

6.3 イメージ・ファイル・フォーマット

Oracle Multimediaは、GIF、TIFFおよびJPEGファイル・フォーマットに対し、メタデータの抽出および埋込みをサポートしています。Oracle Multimediaがサポートするイメージ・ファイル・フォーマットの詳細は、『Oracle Multimediaリファレンス』を参照してください。

6.4 イメージ・メタデータ・フォーマット

イメージ・メタデータ・フォーマットとは、イメージ・メタデータをイメージ・ファイルに格納するための標準的なプロトコルおよび技術です。次の項では、Oracle Multimediaがサポートする埋込みイメージ・メタデータ・フォーマットについて説明します。

6.4.1 EXIF

Exchangeable Image File Format(EXIF)は、デジタル・スチール・カメラのイメージ・ファイルを格納するための規格です。デジタル・カメラで作成されたイメージとそのメタデータを格納する方法として、日本電子工業振興協会(JEIDA)が規格化したフォーマットです。EXIFイメージ・メタデータはTIFFおよびJPEGフォーマット・イメージとして格納できます。Oracle Multimediaは、TIFFおよびJPEGファイル・フォーマットからEXIFメタデータを抽出できます。

6.4.2 IPTC–IIM

International Press Telecommunications Council-Information Interchange Model(IPTC-IIM)バージョン4は、国際新聞通信委員会と米国新聞協会が共同で規格化したフォーマットです。このメタデータ規格は、ニュースの取材、報道および出版業務に特化した情報の取得を目的にしています。この規格の情報レコードは、一般的にIPTCタグと呼ばれます。

イメージ・ファイル・フォーマットでの埋込みIPTCタグの使用は、イメージ編集に使用されるAdobe Photoshopツールによって広まりました。IPTCメタデータはTIFFおよびJPEGフォーマット・イメージとして格納できます。Oracle Multimediaは、TIFFおよびJPEGファイル・フォーマットからのIPTCメタデータの抽出をサポートしています。

6.4.3 XMP

Extensible Metadata Platform(XMP)は、Adobeが様々なアプリケーションでメタデータを作成、処理および交換するために規格化したメタデータ・フォーマットです。XMPは、データ・モデリングにResource Description Framework(RDF)技術を使用します。XMPでは、データ・モデルのシリアル化(バイト・ストリームへの変換)およびイメージ・ファイルへの埋込み方法も定義されています。Oracle Multimediaでは、GIF、TIFFおよびJPEGファイル・フォーマットからXMPメタデータを抽出できます。また、Oracle Multimediaでは、GIF、TIFFおよびJPEGファイル・フォーマットへのXMPデータ・パケットの書込みも可能です。

XMPの詳細は、次のAdobe Systems IncorporatedのWebサイトを参照してください。

http://www.adobe.com/

PDFの詳細は、World Wide Web Consortiumの次のURLで「Resource Description Framework」を参照してください。

http://www.w3.org/RDF/

6.5 外部イメージへのメタデータの表示

バイナリ・イメージ・ファイルから抽出されたメタデータは、次に、簡単に格納、索引付け、問合せ、更新および表示できる形に変換されます。Oracle Multimediaでは、イメージ・メタデータはXML文書で戻されます。これらのXML文書は、Oracle Multimediaがデータベースに登録するXMLスキーマに基づいています。各型のイメージ・メタデータは、個別のXMLスキーマと対応しています。これらのXMLスキーマは、ORDImageオブジェクト型のメタデータ・メソッドで使用されます。Oracle MultimediaがサポートするXMLスキーマの詳細は、『Oracle Multimediaリファレンス』を参照してください。

XML文書は、データベース内のXMLType列に格納できます。これらのドキュメントは、Oracle XML DBで提供される標準ベースの様々なXML技術によって簡単に検索および処理できます。(詳細は、『Oracle XML DB開発者ガイド』を参照してください。)

6.6 Oracle Multimedia Imageメタデータの例

次に、photos表を使用したメタデータの抽出および埋込みの例を示します。photos表は、フォト・アルバム・サンプル・アプリケーションで定義されています。フォト・アルバム・サンプル・アプリケーションの実装は、PHOTO_ALBUMという名前のPL/SQLパッケージに定義されています。Oracle Multimedia PL/SQL Web Toolkitフォト・アルバム・サンプル・アプリケーションの詳細は、3.1項を参照してください。

photo表には、1つのイメージに対して、原寸の写真と縮小イメージの2つのインスタンスが格納されます。この表には、異なるイメージ・メタデータ・ドキュメントを4つまで格納できます。これらのドキュメントは、ORDImage、EXIF、IPTCおよびXMPメタデータ・フォーマットのイメージ・メタデータを表し、それぞれ、metaORDImagemetaEXIFmetaIPTCおよびmetaXMPという名前の列に格納されます。メタデータ列はXMLType型で、Oracle Multimediaが提供するそれぞれのメタデータXMLスキーマにバインドされています。

6.6.1 メタデータ格納用表の作成

メタデータを抽出または書き込むには、格納するための表と列が必要です。次に示すPL/SQLコードの一部は、photos表を作成します。この表は、各型のイメージ・メタデータを格納する4つのXMLTYPE列(metaORDImagemetaEXIFmetaIPTCおよびmetaXMP)と元のイメージおよび縮小イメージを格納する2つのORDIMAGE列(imageおよびthumb)で構成されます。各メタデータ列は、対応するメタデータのスキーマにバインドされます。たとえば、metaEXIF列はhttp://xmlns.oracle.com/ord/meta/exifに格納されているXMLスキーマにバインドされ、XML要素exifMetadataとして定義されます。

イメージ・メタデータ列の定義およびXMLスキーマへのバインドを示す部分は、太字で強調表示しています。

--
-- Create the PHOTOS table
--
CREATE TABLE photos( id           NUMBER PRIMARY KEY,
                     description  VARCHAR2(40) NOT NULL,
                     metaORDImage XMLTYPE,
                     metaEXIF     XMLTYPE,
                     metaIPTC     XMLTYPE,
                     metaXMP      XMLTYPE,
                     image        ORDSYS.ORDIMAGE,
                     thumb        ORDSYS.ORDIMAGE )
--
-- store full-size images and thumbnail images as SecureFile LOBs
--
LOB(image.source.localdata) STORE AS SECUREFILE
LOB(thumb.source.localdata) STORE AS SECUREFILE
-- and bind the XMLType columns to the interMedia metadata schemas
XMLType COLUMN metaORDImage
  XMLSCHEMA "http://xmlns.oracle.com/ord/meta/ordimage"
  ELEMENT "ordImageAttributes"
XMLType COLUMN metaEXIF
  XMLSCHEMA "http://xmlns.oracle.com/ord/meta/exif"
  ELEMENT "exifMetadata"
XMLType COLUMN metaIPTC
  XMLSCHEMA "http://xmlns.oracle.com/ord/meta/iptc"
  ELEMENT "iptcMetadata"
XMLType COLUMN metaXMP
  XMLSCHEMA "http://xmlns.oracle.com/ord/meta/xmp"
  ELEMENT "xmpMetadata";

6.6.2 イメージ・メタデータの抽出

次のPL/SQLプロシージャを使用して、イメージからメタデータを抽出し、作成したphotos表の指定した列に格納します。このプロシージャでは、XML文書の配列を戻すgetMetadata( )メソッドが使用されています。メタデータの型は、各ドキュメントのルート要素から判断されます。ドキュメントは、UPDATE文によって、photos表の対応する列に格納されます。

getMetadata( )メソッドをコールする部分は、太字で強調表示しています。

--
-- fetch the metadata and sort the results
--
PROCEDURE extractMetadata(inID IN INTEGER)
IS
  img ORDSYS.ORDIMAGE;
  metav XMLSequenceType;
  meta_root VARCHAR2(40);
  xmlORD XMLType;
  xmlXMP XMLType;
  xmlEXIF XMLType;
  xmlIPTC XMLType;

BEGIN

-- select the image
SELECT image
INTO img
FROM PHOTOS
WHERE id = inID;

-- extract all the metadata
metav := img.getMetadata( 'ALL' );

-- process the result array to discover what types of metadata were
returned
FOR i IN 1..metav.count() LOOP
  meta_root := metav(i).getRootElement();
  CASE meta_root
    WHEN 'ordImageAttributes' THEN xmlORD := metav(i);
    WHEN 'xmpMetadata' THEN xmlXMP := metav(i);
    WHEN 'iptcMetadata' THEN xmlIPTC := metav(i);
    WHEN 'exifMetadata' THEN xmlEXIF := metav(i);
    ELSE NULL;
  END CASE;
END LOOP;

-- Update metadata columns
--
UPDATE photos
SET metaORDImage = xmlORD,
    metaEXIF = xmlEXIF,
    metaIPTC = xmlIPTC,
    metaXMP = xmlXMP
WHERE id = inID;

END extractMetadata;

6.6.3 イメージ・メタデータの埋込み

次のPL/SQLプロシージャで、putMetadata( )メソッドを示します。このプロシージャには、6つの引数を指定できます。entry_id引数は、photos表の更新対象イメージを指定します。その他の引数(titlecreatordatedescriptionおよびcopyright)は、XMPパケットにフォーマットされ、ターゲット・イメージに埋め込まれる文字列です。

この例では、XMPメタデータ用のOracle Multimedia XMLスキーマに基づいたXML文書インスタンスを作成します。(このスキーマは、Oracle XML DBに事前登録されています。)(詳細は、『Oracle XML DB開発者ガイド』を参照してください。)XMPメタデータのスキーマは、単一のグローバル要素(<xmpMetadata>)を定義します。<xmpMetadata>要素には、整形式のRDFドキュメントが1つ含まれます。RDFドキュメントには、rdfネームスペースから導出された単一の<RDF>要素が含まれます。このRDFドキュメントは、Dublin Core Schemaで定義されている要素で構成されています。

メタデータ・ドキュメントは、putMetadata( )メソッドをコールすることによってイメージ・ファイルに埋め込まれます。新規イメージおよび新規メタデータは、UPDATE文によってphotos表に再度格納されます。

putMetadata( )メソッドをコールする部分は、太字で強調表示しています。

--
-- write the metadata to the image
--
PROCEDURE write_metadata( entry_id IN VARCHAR2,
                          title IN VARCHAR2,
                          creator IN VARCHAR2,
                          date IN VARCHAR2,
                          description IN VARCHAR2,
                          copyright IN VARCHAR2 )
IS
  img ORDSYS.ORDImage;
  xmp XMLType;
  buf VARCHAR2(5000);
BEGIN
-- select the image
SELECT image
INTO img
FROM PHOTOS
WHERE id = entry_id FOR UPDATE;

-- Create the XMP packet it must be schema valid
-- to "http://xmlns.oracle.com/ord/meta/xmp"
-- and contain an <RDF> element. This example uses
-- the Dublin Core schema.

/* An example XML instance document

<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp"
              xsi:schemaLocation="http://xmlns.oracle.com/ord/meta/xmp
              http://xmlns.oracle.com/ord/meta/xmp"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
      <dc:title>A Winter Day</dc:title>
      <dc:creator>Frosty S. Man</dc:creator>
      <dc:date>21-Dec-2004</dc:date>
      <dc:description>a sleigh ride</dc:description>
      <dc:copyright>North Pole Inc.</dc:copyright>
    </rdf:Description>
  </rdf:RDF>
</xmpMetadata>

*/

buf := '<xmpMetadata xmlns="http://xmlns.oracle.com/ord/meta/xmp"
         xsi:schemaLocation="http://xmlns.oracle.com/ord/meta/xmp
         http://xmlns.oracle.com/ord/meta/xmp"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description about="" xmlns:dc="http://purl.org/dc/elements/1.1/">';

IF title IS NOT NULL THEN
  buf := buf || '<dc:title>' || htf.escape_sc(title) || '</dc:title>';
END IF;

IF creator IS NOT NULL THEN
  buf := buf || '<dc:creator>' || htf.escape_sc(creator)
             || '</dc:creator>';
END IF;
IF date IS NOT NULL THEN
  buf := buf || '<dc:date>' || htf.escape_sc(date)
             || '</dc:date>';
END IF;
IF description IS NOT NULL THEN
  buf := buf || '<dc:description>' || htf.escape_sc(description)
             || '</dc:description>';
END IF;
IF copyright IS NOT NULL THEN
  buf := buf || '<dc:copyright>' || htf.escape_sc(copyright)
             || '</dc:copyright>';
END IF;

buf := buf || '
  </rdf:Description>
  </rdf:RDF>
  </xmpMetadata>';

-- create the XML document
xmp := XMLType.createXML(buf, 'http://xmlns.oracle.com/ord/meta/xmp');

-- write the metadata
img.putMetadata( xmp, 'XMP' );

-- update the image
UPDATE photos
SET image = img,
    metaXMP = xmp
WHERE id = entry_id;

END write_Metadata;

6.7 メタデータ・リファレンス

イメージ・メタデータの操作に関する規格および技術の詳細は、次のWebサイトを参照してください。

6.8 イメージのDICOMメタデータ属性の抽出およびマッピング

Oracle Multimediaは、医用デジタル画像と通信(DICOM)機能によって単体のDICOMオブジェクトを認識し、患者、研究など一連のものおよび設備に関連する属性を抽出できます。DICOMオブジェクトを認識するということは、指定したバイナリ・データが単体のDICOMオブジェクトを表すかどうかをOracle Multimediaで判断できることを意味します。その場合は、Oracle MultimediaはそのDICOMオブジェクトからDICOMメタデータを抽出できます。データは、ORDImageオブジェクトのコンテンツとして、またはBLOB、BFILEに直接格納できます。

DICOMオブジェクトは、様々な型のデータを格納できるオブジェクトです。患者のカルテ、波形図、イメージ、3D断面図、ビデオ映像、動的3D図などがその例です。単体のDICOMオブジェクトには、DICOM規格に準拠したファイル・ヘッダーが必要です。

現在のリリースでは、新しいORDDicomオブジェクト型が追加されました。また、アプリケーションでは、Oracle Multimedia Java APIおよびPL/SQL APIを使用して、DICOMオブジェクトを格納、管理および操作できるようになりました。これらの新しいOracle Multimedia DICOM機能拡張の詳細は、『Oracle Multimedia DICOM開発者ガイド』および『Oracle Multimedia DICOM Java API Reference』を参照してください。

Oracle Database 10gリリース2でOracle MultimediaがサポートするDICOMメソッド、暗号化規則、イメージ・フォーマットおよび例外の詳細は、『Oracle Multimediaリファレンス』を参照してください。

6.9 DICOMイメージ・ファイル・フォーマット

Oracle Multimediaでは、DICMイメージ・ファイル・フォーマットのメタデータを抽出できます。DICMとは、Oracle Multimediaで使用する医用デジタル画像と通信フォーマットの名称です。Oracle Multimediaがサポートするイメージ・ファイル・フォーマットの詳細は、『Oracle Multimediaリファレンス』を参照してください。

6.10 Oracle Multimedia DICOMイメージ・メタデータの例

次に示す、DICOMメタデータ抽出の例では、後述するサンプルPL/SQLコードで定義されているmedicalImages表を使用します。

medicalImages表には、1つのイメージに対して、原寸の写真と縮小イメージの2つのインスタンスが格納されます。また、この表には、単一のイメージ・メタデータ・ドキュメントを格納できます。このドキュメントは、metadataという名前の列に格納され、DICMメタデータ・フォーマットから抽出されたDICOMイメージ・メタデータを表します。metadata列はXMLType型で、Oracle Multimediaが提供するそれぞれのメタデータXMLスキーマにバインドされています。

6.10.1 DICOMメタデータ格納用表の作成

DICOMメタデータを抽出するには、格納するための表と列が必要です。次に示すPL/SQLコードの一部は、medicalImages表を作成します。この表は、DICOMイメージ・メタデータを格納する1つのXMLTYPE列(metadata)と元のイメージおよび縮小イメージを格納する2つのORDIMAGE列(imageおよびthumb)で構成されます。metadata列はhttp://xmlns.oracle.com/ord/meta/dicomImageに格納されているXMLスキーマにバインドされ、XML要素DICOM_IMAGEとして定義されます。

イメージのmetadata列の定義およびXMLスキーマへのバインドを示す部分は、太字で強調表示しています。

create table medicalImages( id number primary key,
                           description VARCHAR2(40),
                           metadata XMLType,
                           image ORDSYS.ORDIMAGE,
                           thumb ORDSYS.ORDIMAGE )
--
-- store full-size images and thumbnail images as SecureFile LOBs
--
LOB(image.source.localdata) STORE AS SECUREFILE
LOB(thumb.source.localdata) STORE AS SECUREFILE
-- and bind the XMLType columns to the interMedia metadata columns
XMLType column metadata
  XMLSCHEMA "http://xmlns.oracle.com/ord/meta/dicomImage"
  ELEMENT "DICOM_IMAGE";

6.10.2 DICOMイメージ・メタデータの抽出

次のPL/SQLプロシージャを使用して、イメージからDICOMメタデータを抽出し、作成したmedicalImages表の指定した列に格納します。プロシージャでは、XML文書を戻すgetDicomMetadata( )メソッドが使用されています。ドキュメントは、UPDATE文によって、medicalImages表の対応する列に格納されます。

getDicomMetadata( )メソッドをコールする部分は、太字で強調表示しています。

--
PROCEDURE extractDicomMetadata(inID INTEGER)
IS
   local_image ORDSYS.ORDIMAGE;
   local_id INTEGER;
   dicom_metadata XMLType := NULL;
BEGIN
   SELECT image INTO local_image FROM medicalImages WHERE id = inID;
   -- extract DICOM metadata
   dicom_metadata := local_image.getDicomMetadata('imageGeneral');
   IF (dicom_metadata IS NULL) THEN
      DBMS_OUTPUT.PUT_LINE('metadata is NULL');
   ELSE
      UPDATE medicalImages SET metadata = dicom_metadata where id = inID;
   END IF;
   -- let us print the namespace of the XML document containing the
   -- dicom metadata that we just extracted
   DBMS_OUTPUT.PUT_LINE('namespace: ' || dicom_metadata.getNamespace());

END extractDicomMetadata;
--

6.11 DICOMリファレンス

DICOMに関する医用デジタル画像規格および問題点の詳細は、次のWebサイトを参照してください。