D Oracle Multimediaイメージ処理

Oracle Multimediaイメージを処理するために使用できる複数の処理操作と、多くのコマンド・オプションがあります。

D.1 イメージ処理の共通の概念

一部の概念は、ORDIMAGE process( )およびprocessCopy( )メソッドのすべてのイメージ操作と、ORD_IMAGEパッケージのイメージ処理プロシージャおよびファンクションに共通です。

process()およびprocessCopyメソッドのリファレンス情報は、「Oracle Multimedia ORDImageオブジェクト型」を参照してください。ORD_IMAGEパッケージのイメージ処理プロシージャおよびファンクションのリファレンス情報は、「Oracle Multimedia ORD_IMAGE PL/SQLパッケージ」を参照してください。

関連項目:

サポートされるイメージ・ファイル・フォーマットおよびイメージ圧縮形式の詳細は、「Oracle Multimediaで使用するイメージ・ファイル・フォーマットおよび圧縮形式」を参照してください

D.1.1 ソース・イメージおよび宛先イメージ

イメージ処理メソッドおよびプロシージャは、あるイメージ(ソース・イメージ)を処理して別のイメージ(宛先イメージ)を作成します。

process( )メソッドは、ソース・イメージと同じ記憶域に宛先イメージを書き込み、ソース・イメージを上書きします。processCopy( )メソッドは、ソース・イメージと異なる記憶域に宛先イメージを格納します。

同様に、ソース引数と宛先引数の両方を受け入れるORD_IMAGEパッケージのイメージ処理プロシージャでは、宛先イメージの記憶域は、ソース・イメージの記憶域と異なります。単一のイメージ・パラメータのみを受け入れるORD_IMAGEパッケージのイメージ処理プロシージャでは、宛先イメージがソース・イメージと同じ記憶域に書き込まれ、ソース・イメージが完全に置き換えられます。

D.1.2 process( )およびprocessCopy( )

process( )およびprocessCopy( )のメソッドとプロシージャは機能的には同じですが、process( )メソッドは入力元のBLOBに出力を書き込むのに対し、processCopy( )メソッドは別のBLOBに出力を書き込む点が異なります。これらのコマンド文字列オプションは、同一です。

後続の説明では、process( )をprocessCopy( )に置き換えて読むことができます。process( )に関する説明は、特に指示がないかぎり、process( )とprocessCopy( )の両方に該当します。

D.1.3 演算子と値

特に指示がないかぎり、process( )の演算子は、<演算子> = <値>という形式でコマンド文字列に指定します。式の右側を演算子のといい、演算子の適用方法を決定します。

D.1.4 演算子の組合せ

通常、必要に応じて任意の数の演算子を組み合せて、process( )メソッドまたはプロシージャに渡すコマンド文字列に指定できます。ただし、一部の演算子は、他の演算子が存在する場合のみ、または他の条件が満たされている場合のみサポートされます。たとえば、compressionQuality演算子は、宛先イメージの圧縮形式がJPEGの場合にのみサポートされます。ソース・イメージまたは宛先イメージがロー・ピクセルまたは外部イメージであることが必要な演算子もあります。

演算子を柔軟に組み合せることによって、1つの操作で、イメージ・フォーマットの変更、色数の増減、データの圧縮および結果イメージの切取りまたはスケール変更を行うことができます。複数のコールによってそれらの操作を順次実行するより、大幅に効率的です。

D.1.5 イメージ演算子のタイプ

Oracle Multimediaでは、イメージ演算子の基本タイプとして、イメージ・フォーマット演算子、イメージ処理演算子およびフォーマット固有の演算子の3つがサポートされます。表D-1に、各演算子と、それが3つのタイプのどれに該当するかを示します。

表D-1 サポートされるイメージ演算子およびタイプ

名前 タイプ

channelOrder

フォーマット固有

compressionFormat

イメージ・フォーマット

compressionQuality

イメージ・フォーマット

contentFormat

イメージ・フォーマット

contrast

イメージ処理

cut

イメージ処理

fileFormat

イメージ・フォーマット

flip

イメージ処理

gamma

イメージ処理

inputChannels

フォーマット固有

mirror

イメージ処理

nometadata

イメージ処理

page

イメージ処理

pixelOrder

フォーマット固有

quantize

イメージ処理

rotate

イメージ処理

スケール変更演算子:

fixedScale

maxScale

scale

xScale

yScale

イメージ処理

scanlineOrder

フォーマット固有

sharpen

イメージ処理

tiled

イメージ処理

transparencyFillColor

イメージ処理

D.1.6 グローバリゼーション・サポートの問題点への対処

この例では、グローバリゼーション・サポートの問題に対処する方法について示します。カンマを小数点として使用する言語設定でprocess( )メソッドを使用する方法を示します。たとえば、地域がFRANCEである場合、小数点はカンマであることが予想されます。そのため、スケール係数は",75"と指定します。

関連項目:

process( )メソッドの使用時にグローバリゼーション・サポートの正しい解釈を保証する方法の詳細は、「process( )およびprocessCopy( )」を参照してください

例D-1 グローバリゼーション・サポートの問題点への対処

-- globalization.sql
--
ALTER SESSION SET NLS_LANGUAGE = FRENCH;
ALTER SESSION SET NLS_TERRITORY = FRANCE;
DECLARE
myimage ORDImage;
BEGIN
 
SELECT image into myimage from image_table where id=1 for update;
myimage.process('scale=",75"');
UPDATE image_table SET image = myimage where id=1;
COMMIT;
END;
/

D.2 イメージ・フォーマット演算子

最も抽象的なレベルで言えば、イメージ・フォーマット演算子は、イメージ記憶域内のデータのレイアウトを変更するために使用します。これらは、イメージのセマンティック・コンテンツを変更することはなく、宛先イメージが格納できるより多くの情報がソース・イメージに含まれないかぎり、イメージの外観を変更することもありません。宛先イメージが格納できるより多くの情報を含むソース・イメージの例は、次のとおりです。

  • 24ビット・イメージを8ビット・イメージに変換する場合(1ピクセルに対するビット数が多すぎる)

  • カラー・イメージをグレースケールまたはモノクロ・イメージに変換する場合(カラー・プレーンが多すぎる)

  • 非圧縮イメージ、または可逆圧縮形式で格納されたイメージを不可逆圧縮形式に変換する場合(詳細が多すぎる)

次の各項では、これらのイメージ・フォーマット演算子について説明します。

D.2.1 fileFormat

fileFormat演算子は、出力イメージのイメージ・ファイル・タイプ(フォーマット)を決定します。この演算子の値は、新しいファイル・フォーマット名のニーモニックである4文字のコードです。fileFormatイメージ演算子に指定可能な値のリストは、表10-1を参照してください。ファイル・フォーマットと各ファイル・フォーマットのニーモニック、一般的なファイル拡張子、使用可能な圧縮形式とコンテンツ・フォーマット、その他の主な機能などの基本情報は、「Oracle Multimediaで使用するイメージ・ファイル・フォーマットおよび圧縮形式」を参照してください。

fileFormat演算子に指定する値によって、process( )の出力に、単独では最も重要な詳細を指定できます。この値は、使用可能なコンテンツ・フォーマットと圧縮形式の種類、圧縮品質が有効かどうか、およびフォーマット固有の演算子が有効かどうかを決定します。

fileFormat演算子がprocess( )コマンド文字列に指定されていない場合、Oracle Multimediaはソース・イメージのファイル・フォーマットを判断し、そのフォーマットをデフォルトのファイル・フォーマット値として使用します。ソース・イメージのファイル・フォーマットが出力をサポートしていない場合、エラーが発生します。ソース・イメージが外部イメージの場合、出力イメージはロー・ピクセルとして書き込まれます。

D.2.2 contentFormat

contentFormat演算子は、イメージのコンテンツ・フォーマットを決定します。コンテンツとは、イメージがサポートする色数およびそのサポート方法です。出力イメージの格納に使用されるファイル・フォーマットによっては、コンテンツ・フォーマットの一部または大部分がサポートされない場合があります。

イメージ・コンテンツ・フォーマットは、次のとおり、大きく2つのカテゴリに分類されます。

  • 直接色(DRCT)イメージ

    直接色イメージでは、追加情報を参照せずに、ピクセル・データに直接色値を指定します。このカテゴリには、モノクロ・イメージ(白黒のみ)、グレースケール・イメージ(グレーの濃淡)およびRGB(トゥルー・カラー)イメージが含まれます。

    直接色イメージのビット深度は、ピクセル・データのサイズを表します。モノクロ・イメージの深度は常に1ビット、グレースケール・イメージの深度は8ビットまたは16ビット(オプションの8ビット・アルファ・チャネルが存在する場合)、RGBイメージの深度は24ビット(通常は、赤、緑、青にそれぞれ8ビット)または32ビット(オプションの8ビット・アルファ・チャネルが存在する場合)です。

  • 参照表(LUT)イメージ

    LUTイメージ(インデックス・カラー・イメージともいう)では、使用可能な色の組合せ表に使用可能な色値を格納し、表のどの色を使用するかをピクセル・データに指定します。

    LUTイメージのビット深度は、ピクセル・データのサイズと参照表内の使用可能な色数の両方を表します。1ビットLUTイメージには1ビットのピクセルおよび2色(2の1乗)、4ビット・イメージには16色(2の4乗)、8ビット・イメージには256色(2の8乗)が使用可能です。通常、色表では使用可能な色を24ビットで表すため、イメージで使用可能な色が16色のみの場合でも、最大1600万色のRGBの組合せのうちで任意の色を各色に使用できます。LUTイメージがアルファ・チャネルをサポートする場合、この表では通常32ビットを使用して各色が表現されます。

    contentFormat演算子がprocess( )メソッドまたはプロシージャに指定されていない場合、Oracle Multimediaは、ソース・イメージのコンテンツ・フォーマットが宛先イメージのファイル・フォーマットでサポートされている場合は、そのコンテンツ・フォーマットの複製を試行します。サポートされていない場合、宛先イメージのファイル・フォーマットに基づいて、デフォルトのコンテンツ・フォーマットが選択されます。

contentFormat演算子の構文およびオプションを、次の図に示します。

図D-1に、モノクロへのイメージ変換に使用するcontentFormat構文を示します。

イメージをモノクロに変換する際にイメージ出力をより詳細に制御するには、量子化演算子と値ERRORDIFFUSION、ORDEREDDITHERまたはTHRESHOLDを使用します。量子化演算子の詳細は、「quantize」を参照してください。

図D-1 モノクロ用のcontentFormatの構文図

図D-1の説明が続きます
「図D-1 モノクロ用のcontentFormatの構文図」の説明

図D-2に、LUTフォーマットへのイメージ変換に使用するcontentFormat構文を示します。

contentFormat構文のビット深度部分によって、最終的なイメージのLUTに含まれる色数が次のとおり決まります。

  • 8ビット・イメージは最大256色をサポートします。

  • 4ビット・イメージは最大16色をサポートします。

  • 1ビット・イメージは最大2色をサポートしますが、各色には任意の24ビットRGB値を使用できます。

contentFormat構文の色部分によって、結果イメージをRGBの組合せとグレースケール値のどちらで構成するかが制御されます。GRAYとGREYは同じであり、オプションのSCALE接尾辞に機能的な効果はありません。

contentFormat構文のA部分とT部分によって、イメージのアルファ(A)値または透過(T)値を保持できます。この透過度構文では、32ビット・イメージをアルファ値または透過値を持つ8ビット・イメージに減色することはできませんが、イメージのファイル・フォーマットを変換する際にアルファ値または透過値を保持することができます。この構文は、透過効果を完全なアルファ効果に変換する場合も使用できます(ただし、出力では透過インデックスのみにアルファ値が適用されます)。

直接色イメージをLUT色イメージに変換する際にイメージ出力をより詳細に制御するには、量子化演算子と値ERRORDIFFUSION、ORDEREDDITHERまたはMEDIANCUTを使用します。量子化演算子の詳細は、「quantize」を参照してください。

図D-2 LUT用のcontentFormatの構文図

図D-2の説明が続きます
「図D-2 LUT用のcontentFormatの構文図」の説明

図D-3に、グレースケールへのイメージ変換に使用するcontentFormat構文を示します。

contentFormat構文のビット深度部分によって、グレースケール・イメージの全体的なタイプが決まります。8ビット・グレースケール・イメージではアルファ・チャネルを指定できませんが、16ビット・グレースケール・イメージでは、現在のところアルファ・チャネルを指定する必要があります。任意の非LUTイメージは常に直接色であるため、いずれの場合もDRCTの指定はオプションです。GRAYとGREYは同じであり、オプションのSCALE接尾辞に機能的な効果はありません。アルファ指定(A)は、16ビット・グレースケール出力では必須で、現在のグレースケール・イメージで既存のアルファ・チャネルを保持するか、32ビットRGBAイメージからアルファを持つグレースケールに減色するために使用できます。

量子化演算子は、グレースケールへの変換では無効です。

図D-3 グレースケール用のcontentFormatの構文図

図D-3の説明が続きます。
「図D-3 グレースケール用のcontentFormatの構文図」の説明

図D-4に、直接色へのイメージ変換に使用するcontentFormat構文を示します。

contentFormat構文のビット深度部分によって、直接RGBイメージの全体的なタイプが決まります。24ビットRGBイメージはアルファ・チャネルを含みませんが、32ビットRGBイメージは常にアルファ・チャネルを含む必要があります。任意の非LUTイメージは常に直接色であるため、いずれの場合もDRCTの指定はオプションです。アルファ指定(A)は、32ビットRGB出力では必須で、32ビットまたは64ビットのRGBイメージで既存のアルファ値を保持し、また、RGBに昇格される16ビット・グレースケール・イメージでアルファ・チャネルを保持します。

オプションのピクセル・チャンキング構文を使用すると、イメージに対して、ピクセル単位のバンドのインターリーブ(BIP、チャンク方式ともいう)、ライン単位のバンドのインターリーブ(BIL)またはプレーン単位のバンドのインターリーブ(BSQ、順次バンドまたはプレーナ方式ともいう)を指定できます。構文のこの部分は、RPIX形式でのみサポートされます。

量子化演算子は、直接色への変換には使用しません。

図D-4 直接RGB用のcontentFormatの構文図

図D-4の説明が続きます
「図D-4 直接RGB用のcontentFormatの構文図」の説明

contentFormat演算子の一般的な使用例を次に示します。

  • 出力イメージがモノクロ(白黒のみ)になるように指定するには、次の文を使用します。

    image1.process('contentFormat=monochrome');
    
  • 出力イメージがRGB参照表(インデックス・カラー)になるように指定するには、次のいずれかの文を使用します。

    image1.process('contentFormat=8bitlutrgb');
    image1.process('contentFormat=8bitlut');
    
  • 出力イメージがグレースケール参照表(インデックス・カラー)になるように指定するには、次の文を使用します。

    image1.process('contentFormat=8bitlutgray');
    
  • 出力イメージがグレースケールになるように指定するには、次のいずれかの文を使用します。

    image1.process('contentFormat=8bitgray');
    image1.process('contentFormat=8bitgreyscale');
    
  • 出力イメージが直接色になるように指定するには、次のいずれかの文を使用します。

    image1.process('contentFormat=24bitrgb');
    image1.process('contentFormat=24bitdrctrgb');
    
  • 出力イメージが直接色および順次バンドになるように指定するには、次の文を使用します。

    image1.process('contentFormat=24bitbsqrgb');

D.2.3 compressionFormat

compressionFormat演算子によって、イメージ・データの圧縮に使用される圧縮アルゴリズムが決まります。サポートされる圧縮形式の範囲は、出力イメージのファイル・フォーマットによって大きく異なります。複数のファイル・フォーマットで1つの圧縮形式のみがサポートされることもあれば、1つのファイル・フォーマットで複数の圧縮形式がサポートされることもあります。

compressionFormat演算子に使用可能な値のリストは、表10-1を参照してください。

ニーモニックにRLEを含むすべての圧縮形式は、ランレングス・エンコーディング圧縮方式で、同一色の大きな領域を含むイメージでのみ適切に機能します。PACKBITS圧縮タイプは、Macintoshシステムに由来するランレングス・エンコーディング方式ですが、他のシステムでもサポートされます。これには、他のランレングス・エンコーディング圧縮形式と同様の制限があります。LZWまたはHUFFMAN圧縮タイプを含むフォーマットは、イメージで冗長情報を検査する複雑な圧縮方式で、様々なクラスのイメージに対して有効です。FAX3およびFAX4は、FAXデータを圧縮するためのCCITT Group 3およびGroup 4標準で、モノクロ・イメージに対してのみ有効です。この段落に記載されているすべての圧縮形式は、可逆圧縮方式で、イメージの圧縮によるデータの破棄はありません。可逆形式に圧縮されてから解凍されたイメージは、元のイメージと同じように見えます。

JPEG圧縮形式は、特殊なケースです。写真イメージを圧縮するために開発されたJPEGは、不可逆形式のため、通常は、重要ではない詳細部分を破棄することでイメージを圧縮します。この形式は、写真などの鮮やかなイメージを圧縮するために最適化されているため、線画のイメージや類似色の広い領域のあるイメージなどの他のイメージ・タイプでは、不十分な結果となることがよくあります。JPEGは、Oracle Multimediaで現在サポートされる唯一の不可逆圧縮方式です。

DEFLATE圧縮タイプはZIP/Deflate方式で、PNGイメージ・ファイル・フォーマットで使用されます。DEFLATE-ADAM7圧縮形式はインターレースありのZIP/Deflate方式で、PNGイメージ・ファイル・フォーマットで使用されます。ASCII圧縮タイプはASCIIエンコーディング、RAW圧縮タイプはバイナリ・エンコーディングで、いずれもPNMイメージ・ファイル・フォーマットで使用されます。

compressionFormat演算子が指定されず、宛先イメージのファイル・フォーマットがソース・イメージと同じであるか指定されず、かつ、宛先イメージのコンテンツ・フォーマットがソース・イメージと同じであるか指定されない場合、宛先イメージの圧縮形式はソース・イメージと同じになります。

compressionFormat演算子が指定されず、宛先イメージのファイル・フォーマットがソース・イメージのファイル・フォーマットと異なる場合、宛先イメージのファイル・フォーマットに基づいてデフォルトの圧縮形式が選択されます。デフォルトの圧縮形式は、通常、NONE (圧縮なし)です。

D.2.4 compressionQuality

compressionQuality演算子は、不可逆圧縮形式で圧縮されるイメージの相対的な品質を決定します。この演算子は、可逆圧縮形式では意味を持たないため、JPEG以外の圧縮形式では現在サポートされていません。JPEG圧縮をサポートするファイル・フォーマットには、JFIF、TIFFおよびPICTがあります。

compressionQuality演算子は、最大圧縮(最低の表示品質)から最小圧縮(最高の表示品質)までMAXCOMPRATIO、HIGHCOMP、MEDCOMP、LOWCOMPおよびMAXINTEGRITYの5つの値を受け入れます。MAXCOMPRATIO値を使用すると、イメージ・データを最小の領域に格納できますが、イメージの外観が保持されない場合があります。MAXINTEGRITY値を使用すると、結果イメージが元のイメージにより忠実に保持されますが、格納に必要な領域は大きくなります。また、compressionQuality演算子は、JFIFおよびTIFFファイル・フォーマットに対してのみ0(最低品質)から100(最高品質)の整数値を受け入れます。

compressionQuality演算子のデフォルト値は、JFIFおよびTIFFファイル・フォーマットではLOWCOMP、PICTファイル・フォーマットではMAXINTEGRITYです。

D.3 イメージ処理演算子

Oracle Multimediaでサポートしているイメージ処理演算子は、表示されるイメージの外観を直接変更します。Oracle Multimediaでサポートしているイメージ処理演算子で可能な操作は、すべての可能なイメージ処理操作の一部のみであり、複雑なイメージ解析を実行するユーザー向けではありません。

次の各項では、これらのイメージ処理演算子について説明します。

D.3.1 contrast

contrast演算子は、コントラストの調整に使用します。コントラストは、次のとおり、割合または上限値と下限値を指定して調整できます。

  • 割合の指定

    割合を指定してコントラストを調整するには、次の構文を使用します。

     contrast = <percent1> [<percent2> <percent3>]
    

    割合でコントラストを指定する場合、パラメータを1つまたは3つ指定できます。値を1つ指定した場合、入力イメージのすべての色コンポーネント(グレー、または赤、緑、青)にその値が適用されます。値を3つ指定した場合、percent1がイメージの赤コンポーネント、percent2が緑コンポーネント、percent3が青コンポーネントに適用されます。

    割合値は、イメージの出力可能な範囲全体にマップされる入力ピクセル値の割合を示す浮動小数点数です。残りの入力値は、いずれかの極限値(0 (ゼロ)または最高コントラスト)に強制的に設定されます。たとえば、割合が60の場合、入力範囲の中央の60%が色領域の全出力範囲にマップされ、入力範囲の下限の20%がコントラスト0 (グレースケール・イメージの場合は黒)に、入力範囲の上限の20%が最高コントラスト(グレースケール・イメージの場合は白)に強制的に設定されます。

  • 上限値および下限値の指定

    下限値および上限値を指定してコントラストを調整するには、次の構文を使用します。

      contrast = <lower1> <upper1> [<lower2> <upper2> <lower3> <upper3>]
    

    下限値および上限値は、全出力範囲に割り当てられる入力ピクセル値の下限と上限を示す整数です。下限より小さい値は強制的にコントラスト0になり、上限より大きい値は強制的に最高コントラストになります。8ビット・グレースケール・イメージおよび24ビットRGBイメージの場合、上限値と下限値の範囲は0から255です。

    このコントラスト・モードでは、値を2つまたは6つ指定できます。値を2つ指定する場合、その上限値と下限値がイメージのすべての色コンポーネントに使用されます。値を6つ指定する場合、lower1とupper1がイメージの赤コンポーネント、lower2とupper2が緑コンポーネント、lower3とupper3が青コンポーネントに適用されます。

    注意:

    グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.2 cut

cut演算子は、元のイメージのサブセットの作成に使用します。cut演算子に指定する値は、ソース・イメージ内の切取りウィンドウの原点座標(x,y)、および切取りウィンドウのピクセル単位の幅と高さです。この演算子は、要求するすべてのスケール変更の前に適用されます。

cut演算子を指定しない場合、ソース・イメージ全体が使用されます。

D.3.3 flip

flip演算子は、イメージの上端の走査線が下端になるように、走査線を逆順に配置します。この演算子には値は不要です。

D.3.4 gamma

gamma演算子は、イメージのガンマ(輝度)を修正します。この演算子には、次の構文を使用して、浮動小数点数値を1つまたは3つ指定します。

gamma = <gamma1> [<gamma2> <gamma3>]

値gamma1、gamma2およびgamma3は、入力イメージに適用されるガンマ指数の分母です。値を1つのみ指定した場合、入力イメージのすべての色コンポーネント(グレー、または赤、緑、青)にその値が適用されます。値を3つ指定した場合、gamma1がイメージの赤コンポーネント、gamma2が緑コンポーネント、gamma3が青コンポーネントに適用されます。

イメージを明るくするには、1.0より大きいガンマ値を指定します。一般的な値の範囲は、1.0から2.5です。イメージを暗くするには、0より大きく1.0より小さいガンマ値を指定します。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.5 mirror

mirror演算子は、イメージの左側のピクセル列が右側になるように、走査線の左右を逆にして配置します。この演算子には値は不要です。

D.3.6 nometadata

nometadata演算子は、結果イメージのメタデータをエンコードせずにイメージを処理します。この例では、メタデータなしでJPEG縮小イメージを生成する方法を示します。

image.processCopy('fileformat=jpeg maxscale=100 100 nometadata', dest);

D.3.7 page

page演算子では、複数ページの入力イメージの任意のページを選択できます。値には、処理操作のソース・イメージとして使用する入力ページを指定します。1ページ目の番号は0(ゼロ)、2ページ目は1、のようにページ番号で指定します。

現在、ページ選択はTIFFイメージのみでサポートされています。

D.3.8 quantize

quantize演算子は、イメージのビット深度を変更した場合のcontentFormat演算子の結果に影響します。コンテンツ・フォーマットの変更を明示的に要求する場合、または指定した別の操作でコンテンツ・フォーマットの変更が必要な場合(LUTイメージのスケール変更前に直接色に変換する必要がある場合や、LUTイメージのみをサポートするファイル・フォーマットに変換する場合など)、quantize演算子によって、必要な量子化(色数の削減)の実行方法を指定します。

quantize演算子の値には、次の量子化値のいずれかを指定します。

  • ERRORDIFFUSION

    ERRORDIFFUSION量子化値は、8ビット・グレースケール・イメージをモノクロ・イメージに減色する場合、または24ビットRGBイメージを8ビットLUTイメージへ減色する場合に使用できます。

    ERRORDIFFUSION量子化値は、既存のピクセルの量子化によって発生した誤差を保持し、隣接するピクセルにその誤差を拡散します。この量子化では、固定色表を使用します。この場合、ほとんどの写真イメージで良好な結果となりますが、合成イメージでは不自然な斑点状のアーティファクトが生成されます。アーティファクトの原因は、既存の量子化方法で使用される固定色参照表で、これはRGB色領域全体に対して統計的に均等化されていますが、通常、ごく少数の色で多くのコントラストを含むイメージではうまく一致しません。結果は、ORDEREDDITHER量子化値を指定した場合より正確ですが、処理はより低速です。

    これはデフォルトの量子化値です。

  • ORDEREDDITHER

    ORDEREDDITHER量子化値は、8ビット・グレースケール・イメージをモノクロ・イメージに減色する場合、または24ビットRGBイメージを8ビットLUTイメージに減色する場合に使用できます。

    ORDEREDDITHER量子化値を指定すると、各ピクセルの近似色が固定色表から検索され、色の置換による影響を最小化するように結果がディザリングされます。ほぼすべてのイメージで適切な結果が得られますが、ディザリング処理によって細部が消失する場合があります。この結果はERRORDIFFUSION量子化値を指定した場合ほど正確ではありませんが、処理はより高速です。

  • THRESHOLD <しきい値>

    THRESHOLD量子化値は、8ビット・グレースケール・イメージをモノクロ・イメージに減色する場合に使用します。

    THRESHOLD量子化値を指定すると、ピクセルのグレースケール値と、量子化値とともに指定したしきい値引数の値が比較され、モノクロ出力値(白または黒)がピクセルに割り当てられます。入力グレースケール値が、指定したしきい値引数以上の場合は出力は白になり、しきい値より小さい場合は黒になります。8ビット・グレースケール・イメージまたは24ビットRGBイメージの場合、グレースケール値255は白を意味し、0(ゼロ)は黒を意味します。

    たとえば、しきい値引数が128の場合、128より小さいすべての入力値は黒になり、イメージのその他の部分は白になります。しきい値が0の場合はイメージ全体が白になり、256の場合はイメージ全体が黒になります(入力イメージが8ビット・グレースケールまたは24ビットRGBの場合)。

    THRESHOLD量子化値は、合成イメージに最も適切に適用されます。ERRORDIFFUSIONおよびORDEREDDITHER量子化値では、写真イメージをモノクロに変換する場合に良好な出力が得られますが、合成イメージでは結果が不明瞭になります。THRESHOLD量子化値を使用すると、この不明瞭さを排除できますが、入力イメージの様々なコントラストを区別することができなくなります。

  • MEDIANCUT [オプションのサンプリング・レート]

    MEDIANCUT量子化値は、24ビットRGBイメージを8ビットLUTイメージに減色する場合に使用します。

    MEDIANCUT量子化値では、元のイメージでその使用率に応じて色を選択することで、ほとんどの合成イメージを含むいくつかのイメージでERRORDIFFUSIONまたはORDEREDDITHER量子化値より適切な色表を生成できます。ただし、元のイメージのサイズが大きい場合は分析に時間がかかり、一部の写真イメージについては、ERRORDIFFUSIONまたはORDEREDDITHERを使用して量子化した方が良好な外観を得られる可能性があります。

    MEDIANCUT量子化値では、オプションの整数の引数を指定して、色の使用統計を収集する目的で入力イメージをスキャンする際に使用するサンプリング・レートを指定できます。この量子化値の引数のデフォルト値は1で、すべての入力ピクセルが調査されますが、1より大きい任意の値も指定できます。サンプリング・レートnが1より大きい場合、n個のピクセルごとに1つのピクセルが調査されます。

quantize演算子に値と引数を指定する方法の例を次に示します。

image.process('contentformat=8bitlutrbg quantize = mediancut 2');
image.process('contentformat=monochrome quantize = threshold 128');

D.3.9 rotate

rotate演算子は、指定した角度に基づいてイメージ・プレーン内でイメージを回転します。

値には、浮動小数点数を指定する必要があります。正の値を指定すると、右方向に回転します。負の値を指定すると、左方向に回転します。回転後、イメージ・コンテンツが原点(0,0)を基準に変換され、回転後のイメージ・フットプリント範囲外のピクセルに、その色領域の値である黒が適用されます。

回転値が90、180および270の場合、ジオメトリ的な投影なしでピクセルを高速にコピーする特別なコードが使用されるため、操作が高速になります。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.10 スケール変更演算子

Oracle Multimediaは、イメージのスケールを変更する複数の演算子をサポートしています。この項では、それらの演算子について説明します。

D.3.10.1 fixedScale

fixedScale演算子は、縮小イメージなどの、特定のサイズのイメージを簡単に作成するために使用します。scale、xScaleおよびyScaleのすべての演算子には浮動小数点数のスケール変更比率を指定しますが、fixedScale(およびmaxScale)演算子にはピクセル単位のスケール変更値を指定します。

fixedScale演算子には、宛先イメージに適用する寸法(幅と高さ)を示す2つの整数値を指定します。ソース・イメージより大きい寸法または小さい寸法を(または1辺を大きく、もう1辺を小さく)指定できます。

この演算子で使用されるスケール変更方法は、すべての場合にscale演算子で使用されるスケール変更方法と同じです。この演算子は、他のスケール変更演算子と組み合せることはできません。

D.3.10.2 maxScale

maxScale演算子は、fixedScale演算子の変形で、ソース・イメージのアスペクト比(相対的な幅と高さ)を保持します。maxScale演算子にも2つの整数値で寸法を指定しますが、これらの値は、スケール変更後の該当する寸法の最大値として使用されます。最終的な実際の寸法は、指定した値より小さくなる場合があります。

fixedScale演算子と同様に、この演算子も、特定のサイズのイメージを簡単に作成するために使用します。maxScale演算子を使用して作成した縮小イメージは元のイメージと同じアスペクト比になるため、maxScale演算子はfixedScale演算子よりも縮小イメージの作成に適しています。

maxScale演算子は、ソース・イメージのアスペクト比を保持したまま、指定された寸法内に収まるようにソース・イメージのスケールを変更します。アスペクト比が保持されるため、演算子に指定した値に実際に一致しているのは、宛先イメージの寸法の一方のみである場合があります。他方の寸法は、指定した値以下になります。このスケール変更方法は、maxScale演算子によって指定された寸法内に宛先イメージ全体を収めるという制約のもとで、使用可能なスケール変更係数の大きい方を使用してソース・イメージのスケールを変更すると考えることもできます。

cut演算子をmaxScale演算子と組み合せて使用する場合、入力イメージのアスペクト比ではなく切取りウィンドウのアスペクト比が保持されます。

この演算子で使用されるスケール変更方法は、すべての場合にscale演算子で使用される方法と同じです。この演算子は、他のスケール変更演算子と組み合せることはできません。

D.3.10.3 scale

scale演算子は、演算子の値として指定された比率で、イメージを拡大または縮小します。この値が1.0より大きい場合、宛先イメージは大きくなります(拡大)。この値が1.0より小さい場合、宛先イメージは小さくなります(縮小)。この値が1.0の場合はスケールが変更されず、エラーも発生しません。scale演算子がprocess( )メソッドに渡されない場合、ソース・イメージにスケール変更は適用されません。

Oracle Multimediaでは、2つのスケール変更方法が使用されます。1つ目の方法はサンプリングによるスケール変更で、要求された圧縮品質がMAXCOMPRATIOまたはHIGHCOMPの場合か、またはイメージの縦横両方の寸法を拡大する場合にのみ使用されます。このスケール変更方法では、スケール変更アルゴリズムによって計算されたピクセルに最も近いソース・イメージ・ピクセルが選択され、そのピクセルの色が使用されます。この方法は高速ですが、結果のイメージ品質は低くなります。

2つ目のスケール変更方法は平均値計算によるスケール変更で、1つ目の方法が使用される場合以外のすべての場合に使用されます。この方法では、スケール変更アルゴリズムによって計算されたピクセルに近い複数のピクセルが選択され、その平均色が計算されます。この方法は低速ですが、結果のイメージ品質は高くなります。

scale演算子を指定しない場合、デフォルトのスケール変更値1.0が使用されます。この演算子は、他のスケール変更演算子と組み合せることはできません。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.10.4 xScale

xScale演算子はscale演算子に類似していますが、イメージの幅(x寸法)のみに影響します。xScaleとscaleの重要な違いは、xScaleでは、イメージ品質がMAXCOMPRATIOまたはHIGHCOMPに指定された場合、イメージが拡大されるか縮小されるかに関係なく、必ずサンプリングによるスケール変更が使用されることです。

この演算子は、yScale演算子と組み合せて使用して、各軸を個別にスケール変更することができます。その他のスケール変更演算子(scale、fixedScale、maxScale)と組み合せることはできません。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.10.5 yScale

yScale演算子はscale演算子に類似していますが、イメージの高さ(y寸法)のみに影響します。yScaleとscaleの重要な違いは、yScaleでは、イメージ品質がMAXCOMPRATIOまたはHIGHCOMPに指定された場合、イメージが拡大されるか縮小されるかに関係なく、必ずサンプリングによるスケール変更が使用されることです。

この演算子は、xScale演算子と組み合せて使用して、各軸を個別にスケール変更することができます。その他のスケール変更演算子(scale、fixedScale、maxScale)と組み合せることはできません。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.11 sharpen

sharpen演算子は、イメージの鮮鋭度を向上します。最適な品質を得るには、この演算子をイメージのスケール変更とともに使用します(「スケール変更演算子」を参照)。

sharpen演算子の構文は次のとおりです。

sharpen=kernelType gainFactor

kernelTypeは、イメージの鮮鋭化でローパス・フィルタとして機能するカーネル・タイプを指定する整数値です。次の表に、有効なkernelTypeの値とその意味を示します。

表D-2 kernelType値のリスト

kernelType値 説明

0

平均カーネル

1

ラプラス・カーネル

2

拡張ラプラス・カーネル

kernelType値が大きくなるほど、イメージのエッジが強調され、イメージは鮮鋭化されます。ただし、ノイズ・レベルは増加することがあります。

gainFactorは、イメージの鮮鋭化で使用されるゲイン係数を指定する浮動小数点値です。gainFactor値が大きくなるほど、イメージのエッジが強調され、イメージは鮮鋭化されます。ただし、ノイズ・レベルは増加することがあります。

次の例の引数kernelType=0およびgainFactor =2.0では、良好な結果が得られます。

image.process('maxScale=200 200, sharpen=0 "2.0"');
image.process('sharpen=0 "2.0"');

これらの引数に様々な値を試してみて、アプリケーションで最良のイメージが得られる組合せを決定できます。

注意:

グローバリゼーション・サポートで正しく解釈されるように、すべての浮動小数点の引数を二重引用符("")で囲んでください。

D.3.12 tiled

tiled演算子は、出力イメージを強制的にタイル処理するもので、TIFFファイル・フォーマット・イメージでのみ使用できます。結果のタイル・サイズは、選択する圧縮形式に応じて異なります。

D.3.13 transparencyFillColor

transparencyFillColor演算子は、PNGイメージ・ファイル・フォーマットの透明な領域を色で塗りつぶします。この演算子は、他のイメージ処理演算子の有無に関係なく使用できます。

この演算子には、有効な色の文字列値または有効な色の3つのRGB整数値を指定します。次の表に、transparencyFillColor演算子の有効な値を示します。

表D-3 transparencyFillColor演算子の有効な値

文字列値 RGB値

black

0 0 0

blue

0 0 255

cyan

0 255 255

dark_gray

169 169 169

gray

128 128 128

green

0 255 0

light_gray

211 211 211

magenta

255 0 255

orange

255 128 0

pink

255 192 203

red

255 0 0

white

255 255 255

yellow

255 255 0

次の例では、両方とも、イメージの透明な領域を赤い色で塗りつぶします。

image.process('transparencyFillColor=red');
image.processCopy('transparencyFillColor=255 0 0');

D.4 フォーマット固有の演算子

次の演算子は、宛先イメージのファイル・フォーマットがロー・ピクセルまたはBMPF (scanlineOrder演算子のみ)の場合にのみサポートされますが、例外として、inputChannels演算子は、ソース・イメージがロー・ピクセルまたは外部イメージの場合にのみサポートされます。ソース・フォーマットはロー・ピクセル、BMPFまたは外部イメージであるため、宛先イメージ・フォーマットがfileFormat演算子を使用してロー・ピクセルまたはBMPFに明示的に設定されているかどうか、またはロー・ピクセルまたはBMPFフォーマットがOracle Multimediaによって自動的に選択されるかどうかは、問題になりません。

次の各項では、これらのフォーマット固有の演算子について説明します。

D.4.1 channelOrder

channelOrder演算子は、宛先ロー・ピクセル・イメージ内の赤、緑および青のチャネル(バンド)の相対順序を決定します。この演算子に渡されるニーモニック値内の文字R、GおよびBの順序によって、出力内のこれらのチャネルの順序が決定されます。ロー・ピクセル・イメージのヘッダーには、各チャネルがこの順序どおりに書き込まれます。

ロー・ピクセル・ファイル・フォーマットおよびチャネルの順序付けの詳細は、「Oracle Multimediaで使用するイメージ・ロー・ピクセル・フォーマット」を参照してください。

D.4.2 pixelOrder

pixelOrder演算子は、ロー・ピクセル・イメージの走査線内のピクセルの方向を制御します。値NORMALを指定すると、走査線の左端のピクセルが、イメージ・データ・ストリームの先頭になります。値REVERSEを指定すると、走査線の右端のピクセルが先頭になります。

ロー・ピクセル・ファイル・フォーマットおよびピクセルの順序付けの詳細は、「Oracle Multimediaで使用するイメージ・ロー・ピクセル・フォーマット」を参照してください。

D.4.3 scanlineOrder

scanlineOrder演算子は、ロー・ピクセル・イメージまたはBMPFイメージ内の走査線の順序を制御します。値にNORMALを指定すると、上端に表示される走査線が、イメージ・データ・ストリームの先頭になります。値INVERSEを指定すると、下端の走査線が先頭になります。BMPFの場合、scanlineOrder = INVERSEがデフォルトであり、一般的な値です。

ロー・ピクセル・ファイル・フォーマットまたはBMPFファイル・フォーマットと、走査線の順序付けの詳細は、「Oracle Multimediaで使用するイメージ・ロー・ピクセル・フォーマット」を参照してください。

D.4.4 inputChannels

「フォーマット固有の演算子」で説明したとおり、inputChannels演算子は、ソース・イメージがロー・ピクセル・フォーマットまたは外部イメージの場合にのみサポートされます。

inputChannels演算子は、マルチバンド・イメージの個々のバンドを、後で実行するイメージ処理のために赤、緑および青のチャネルに割り当てます。ソース・イメージ内の任意のバンドを任意のチャネルに割り当てることができます。必要に応じて、1つのバンドのみを指定することも可能で、その選択したバンドはグレースケール・チャネルとして使用されるため、グレースケールの出力イメージが生成されます。イメージの最初のバンドは番号1で、inputChannels演算子に渡されるバンド番号は、1以上であり、かつ、ソース・イメージのバンドの合計数以下である必要があります。inputChannels演算子によって選択されたバンドのみが、出力に書き込まれます。その他のバンドは、出力イメージがロー・ピクセル・フォーマットであっても転送されません。

すべてのロー・ピクセル・イメージまたは外部イメージのヘッダー・ブロックには、これらの入力チャネルの割当てが書き込まれていますが、そのデフォルトの割当てはこの演算子によって上書きされます。

ロー・ピクセル・ファイル・フォーマットおよび入力チャネルの詳細は、「Oracle Multimediaで使用するイメージ・ロー・ピクセル・フォーマット」を参照してください。

D.5 CMYKイメージ処理

process( )およびprocessCopy( )のメソッドとプロシージャは、CMYKコンテンツ・フォーマットに格納されたピクセル・データを持つTIFFおよびJFIFイメージでサポートされます。cut、scale、rotateなどのすべての処理演算子は、CMYKイメージでサポートされます。処理中に、CMYKデータは、次の標準式に従って標準RGBに変換されます。

32ビットCMYKイメージの場合:

R = 255*(1-K/255)*(1-C/255)
G = 255*(1-K/255)*(1-M/255)
B = 255*(1-K/255)*(1-Y/255)

64ビットCMYKイメージの場合:

R = 65535*(1-K/65535)*(1-C/65535)
G = 65535*(1-K/65535)*(1-M/65535)
B = 65535*(1-K/65535)*(1-Y/65535) 

CMYKコンテンツ・フォーマットのイメージに対するI/Oサポートの詳細は、「Oracle Multimediaで使用するイメージ・ファイル・フォーマットおよび圧縮形式」を参照してください。

D.6 ウォーターマークの設定操作

Oracle Multimediaでは、ソース・イメージへのウォーターマークの追加がサポートされます。ウォーターマークには、イメージまたはテキスト(会社のロゴ、著作権、デジタル署名など)を含めることができます。この機能を使用すると、データベースでウォーターマークの追加を強制できます。

ウォーターマークは、通常、著作権や商標が付されたイメージの不正使用の防止に使用されます。そのため、ウォーターマークをイメージに追加してから、それらをWebサイトなどの公開フォーラムに送信できます。自分がイメージの所有者であると示すウォーターマークによって、権限のない使用を防止できます。

次の各項では、これらのウォーターマーク設定の詳細について説明します。

関連項目:

D.6.1 イメージ・ウォーターマークの追加

イメージ・ウォーターマークでは、ソース・イメージ内の位置(ソース・イメージに対する相対位置として、またはXおよびY座標として指定)、フレームの幅と高さ、透過性などのプロパティを指定できます。

たとえば、イメージ・ウォーターマークをイメージの左上隅に表示するように指定するには、次の構文を使用します。

  prop := ordsys.ord_str_list(
                   'position=topleft');

イメージ・ウォーターマークのフレームのサイズ(ピクセル単位)および透過性を指定するには、次の構文を使用します。

  prop := ordsys.ord_str_list(
                   'width=100',
                   'height=80',
                   'transparency=0.2');

関連項目:

D.6.2 テキスト・ウォーターマークの追加

テキスト・ウォーターマークでは、ソース・イメージ内の位置、フレームの幅と高さ(テキストの折返しと切捨ても設定)、テキストのフォント・サイズ、スタイル、色および透過性などのプロパティを指定できます。

たとえば、Oracle Multimediaの著作権のテキスト・ウォーターマークを、XおよびY座標が100の位置に、フォントがTimes New Roman、スタイルがイタリック、透過性が0.6で表示するように指定するには、次の構文を使用します。

 added_text := 'Oracle Multimedia © 2009';
  -- specify properties
 prop := ordsys.ord_str_list(
                   'font_name=Times New Roman',
                   'font_style=italic',
                   'position_x=100',
                   'position_y=100',
                   'transparency=0.6');

関連項目:

D.6.3 ウォーターマークのプロパティ

ウォーターマークのプロパティは、名前/値ペアとして定義されます。表D-4に、これらのプロパティの説明と、各プロパティの有効な値を示します。

表D-4 ウォーターマークのプロパティおよび有効な値

名前 説明

font_name

ウォーターマーク・テキストに使用するフォントの名前

有効な値: 使用しているシステムで有効なすべてのフォントの名前。デフォルトはArialです。

font_style

ウォーターマーク・テキストに使用するフォントのスタイル

有効な値: PLAINBOLDおよびITALIC。デフォルトはPLAINです。

font_size

ウォーターマーク・テキストに使用するフォントのサイズ

有効な値: 正の整数デフォルトは30です。

text_color

ウォーターマーク・テキストに使用する色

有効な値: blackbluecyandark_graygraygreenlight_graymagentaorangepinkredwhiteおよびyellow。デフォルトはblueです。

text_color_red、text_color_green、text_color_blue

ウォーターマーク・テキストに使用する色の赤、緑および青のチャネル

有効な値: 0から255の整数。デフォルトは0です。

注意: 同時に3つのプロパティすべてを指定する必要があります。これら3つのプロパティの有効な指定によって、text_colorプロパティの有効な指定は上書きされます。

position

ソース・イメージ内のウォーターマークの相対位置

有効な値: toplefttopcentertoprightmiddleleftmiddlecentermiddlerightbottomleftbottomcenterおよびbottomright。デフォルトはmiddlecenterです。

position_x、position_y

ソース・イメージ内のウォーターマークの位置のxおよびy座標

有効な値: 正の整数。デフォルトは50です。

注意: 同時に2つのプロパティを指定する必要があります。これら2つのプロパティの有効な指定によって、positionプロパティの有効な指定は上書きされます。

transparency

ソース・イメージ内のウォーターマークの透過性

有効な値: 0から1の間の浮動小数点数(0は完全な透過状態を表し、1は不透過状態を表します)。デフォルトは0.5です。

width

ソース・イメージ内のウォーターマークの幅(ピクセル単位)

有効な値: 正の整数デフォルトは、ウォーターマークの実際の幅です。

height

ソース・イメージ内のウォーターマークの高さ(ピクセル単位)

有効な値: 正の整数デフォルトは、ウォーターマークの実際の高さです。

注意: 長いテキストをフレーム内で折り返すには、フレームの幅と高さを指定します。フレーム内に収まらないテキストは、切り捨てられます。