32.1 画像の読み込みと保存
ほとんどの画像処理タスクの最初のステップは、関数を使用して画像を Octave にロードすることですimread。imwrite関数は、画像をディスクに書き込むための対応する関数です。
要約すると、ほとんどの画像処理コードはこのコードの構造に従います。
I = imread ("my_input_image.img");
J = プロセス_my_image (I);
imwrite(J, "my_output_image.img");
:読み込み[img, map, alpha] = (filename)
:[…] = 読み込み (url)
:[…] = 読み込み (…, ext)
:[…] = 読み込み (…, idx)
:[…] = 読み込み (…, param1, value1, …)
さまざまなファイル形式から画像を読み取ります。
ファイルfilenameまたはオンライン リソースurlから画像をマトリックスとして読み取ります。どちらも指定されていないが、extが指定されている場合は、拡張子extを持つファイルを検索します。
出力のサイズとクラスは、画像の形式によって異なります。カラー画像は、MxNx3 マトリックスとして返されます。グレースケールおよび白黒画像のサイズは MxN です。複数ページの画像には、4 番目の次元が追加されます。
画像のビット深度によって出力のクラスが決まります。 グレースケールとカラーの場合は、 "uint8"、または 、白黒の場合は です。インデックス付き画像は、map が要求された出力であるかどうかに関係なく、常にカラーマップのインデックスを返すことに注意してください。実際の RGB 画像を取得するには を使用します。複数のインデックス付き画像が読み取られている場合、map は最初の画像から取得されます。まれに、これが間違っている場合があり、を使用して各画像のカラーマップを取得できます。 "uint16""single""logical"ind2rgbimfinfo
画像の表現の詳細については、Octave のマニュアルを参照してください。(画像の表現を参照)
TIFF や GIF などの一部のファイル形式では、1 つのファイルに複数の画像を保存できます。idx は、読み取る画像のインデックスを指定するスカラーまたはベクトルです。デフォルトでは、Octave は最初のページのみを読み取ります。
ファイル形式に応じて、パラメータ、値のペアを使用して画像の読み取りを設定できます。次のオプションがサポートされています。
"Frames"または"Index"
これはidxを指定する別の方法です。この方法で指定する場合、その値は文字列にすることもできます"all"。
"Info"
このオプションはMATLAB との互換性のために存在しますが、効果はありません。 単一のファイルから複数の画像を読み取るときにパフォーマンスを最大限に高めるには、 この"Index"オプションを使用します。
"PixelRegion"
読み取られる画像領域を制御します。値は、3 つの要素を持つ 2 つの配列を持つセル配列である必要があります。配列内の要素は、読み取られる開始ピクセル、増分ピクセル、および終了ピクセルです。増分値が省略された場合、デフォルトで 1 になります。たとえば、次のものはすべて同等です。 {[rows], [cols]}
imread (ファイル名、「ピクセル領域」、{[200 600]、[300 700]});
imread (ファイル名、「ピクセル領域」、{[200 1 600]、[300 1 700]});
imread (ファイル名)(200:600, 300:700);
参照: imwrite、imfinfo、imformats。
: imwrite (img, filename)
: imwrite (img, filename, ext)
: imwrite (img, map, filename)
: imwrite (…, param1, val1, …)
さまざまなファイル形式で画像を書き込みます。
画像img は、バイナリ、グレースケール、RGB、または多次元画像にすることができます。img のサイズとクラスは、読み取り時に予想されるものと同じである必要がありますimread。3 番目と 4 番目の次元はそれぞれ色空間と複数のページ用に予約されています。インデックス付き画像の場合は、カラーマップマップも指定する必要があります。
extが指定されていない場合は、 filenameのファイル拡張子を使用して形式が決定されます。実際にサポートされる形式は、Octave のビルド時に指定されたオプションによって異なります。imformatsさまざまな画像形式のサポートを確認するために使用します。
ファイル形式に応じて、 param、val のペアを使用して画像の書き込みを設定できます。次のオプションがサポートされています。
'アルファ'
画像のアルファ (透明度) チャネル。これは、 imgと同じクラス、行数、列数のマトリックスである必要があります。複数ページの画像の場合、4 番目の次元のサイズも一致し、3 番目の次元はシングルトンである必要があります。デフォルトでは、画像は完全に不透明になります。
'圧縮'
画像に使用する圧縮。次のいずれかになります: 「none」(デフォルト)、「bzip」、「fax3」、「fax4」、「jpeg」、「lzw」、「rle」、または「deflate」。Magick ライブラリにデフォルト設定されているすべての画像形式で、すべての圧縮タイプが使用できるわけではないことに注意してください。
'遅延時間'
アニメーションを受け入れる形式 (GIF など) の場合、次のフレームに移動するまでのフレームの表示時間を制御します。値はスカラー ( img内のすべてのフレームに適用されます)、またはim内のフレーム数と同じ長さのベクトルである必要があります。値は秒単位で、0 から 655.35 までの範囲で、デフォルトは 0.5 です。
'廃棄方法'
アニメーションを受け入れる形式 (GIF など) の場合、次のフレームを描画する前にフレームに何が起こるかを制御します。その値は、次の文字列のいずれかになります: "doNotSpecify" (既定値)、"leaveInPlace"、"restoreBG"、および "restorePrevious"、またはimg内のフレーム数と同じ長さのこれらの文字列のセル配列。
'ループカウント'
アニメーションを受け入れる形式 (GIF など) の場合、シーケンスを繰り返す回数を制御します。Inf の値は無限ループ (デフォルト) を意味し、0 または 1 の値はシーケンスが 1 回だけ再生され (0 回ループ)、2 以上の値はその回数ループします (2 回ループすると、完全なシーケンスが 3 回再生されます)。このオプションは、ファイルの書き込みの最後に 1 つの画像しかない場合は無視されます。
'品質'
圧縮の品質を設定します。値は 0 から 100 までの整数で、値が大きいほど画質が高くなり、圧縮率が低くなります。デフォルトは 75 です。
'書き込みモード'
TIFF や GIF などの一部のファイル形式では、複数の画像を 1 つのファイルに保存できます。このオプションは、img をファイルに追加するか (存在する場合)、新しいファイルを作成するか (既存のファイルを上書きする可能性あり) を指定します。値は文字列 "Overwrite"(デフォルト) またはです"Append"。
このオプションにかかわらず、複数ページのイメージを書き込む最も効率的な方法は、オプション を に設定してを使用した場合に予想されるのと同じ行列である4 次元のimgを に渡すことです。 imwriteimread"Index""all"
参照: imread、imfinfo、imformats。
:val = イメージパス ()
:old_val = イメージパス (new_val)
:old_val = イメージパス (new_val, "local")
画像ファイルを検索するディレクトリのコロンで区切られたリストを指定する内部変数を照会または設定します。
オプションを使用して関数内から呼び出されると"local"、関数とそれが呼び出すサブルーチンに対して変数がローカルに変更されます。関数を終了すると、元の変数値が復元されます。
参照: EXEC_PATH、OCTAVE_HOME、OCTAVE_EXEC_HOME。
実際に Octave に読み込まなくても、ディスク上の画像ファイルに関する情報を取得することができます。これは、imfinfo画像ファイルのヘッダーに格納されている多くのパラメータへの読み取りアクセスを提供する関数を使用して行われます。
: info = imfinfo (filename)
: info = imfinfo (url)
: info = imfinfo (…, ext)
ファイルから画像情報を読み取ります。
imfinfoファイルfilenameに保存されている画像に関する情報を含む構造体を返します。ファイルfilenameが存在せず、extが指定されている場合は、 filenameという名前のファイル と拡張子extのファイル、つまりfilename . extという名前のファイルを検索します。
出力構造情報には次のフィールドが含まれます。
'ファイル名'
画像ファイルの完全な名前。
'ファイル変更日'
ファイルの最終変更日。
'ファイルサイズ'
ディスク上のイメージのバイト数
'形式'
画像形式(例"jpeg":)。
'身長'
画像の高さ(ピクセル単位)。
'幅'
画像の幅(ピクセル単位)。
'ビット深度'
ピクセルあたりのチャネルあたりのビット数。
'カラータイプ'
画像タイプ。値は "grayscale"、、、、、またはです"indexed"。 "truecolor""CMYK""undefined"
'X解像度'
画像のX解像度。
'Y解像度'
画像の Y 解像度。
'解像度単位'
画像解像度の単位。値は"Inch"、、 "Centimeter"またはです"undefined"。
'遅延時間'
アニメーション シーケンスで次の画像を表示する前に経過しなければならない時間 (1/100 秒単位、0 ~ 65535)。
'ループカウント'
アニメーションをループする反復回数。
'バイト順序'
サポートされている形式のエンディアン オプション。値は "little-endian"、、"big-endian"またはです"undefined"。
'ガンマ'
画像のガンマ レベル。 2 つの異なるワークステーションに表示される同じカラー画像は、ディスプレイ モニターの違いにより異なって見える場合があります。
'品質'
JPEG/MIFF/PNG 圧縮レベル。値は [0 100] の範囲の整数です。
'廃棄方法'
GIF 画像にのみ有効で、GIF アニメーションを作成するときに、後続のフレームをレンダリングする方法 (前のフレームを処理する方法) を制御します。値は"doNotSpecify"、、、、または です"leaveInPlace"。GIF以外のファイルの場合、値は空の文字列になります。 "restoreBG""restorePrevious"
'色度'
値は、白、赤、緑、青の点の x、y 色度値をこの順序で含む 1x8 マトリックスです。
'コメント'
画像コメント。
'圧縮'
圧縮タイプ。値は"none"、、、、、、、、、、、、、、または になります。 "bzip""fax3""fax4""jpeg""lzw""rle""deflate""lzma""jpeg2000""jbig2""jbig2""undefined"
'カラーマップ'
各画像のカラーマップ。
'オリエンテーション'
行と列に対する画像の方向。値は、TIFF 6 仕様で定義され、MATLAB互換性のために 1 ~ 8 の整数です。
'ソフトウェア'
画像を生成するために使用されたカメラまたは画像入力デバイスのソフトウェアまたはファームウェアの名前とバージョン。
'作る'
記録機器の製造元。これは、画像を生成した DSC、スキャナー、ビデオ デジタイザー、またはその他の機器の製造元です。
'モデル'
現場に記載されている録音機器のモデル名またはモデル番号"Make"。
'日時'
Exif 標準で定義されている画像作成日時、つまりファイルが変更されたときの日時です。
'画像の説明'
Exif 標準で定義された画像のタイトル。
'アーティスト'
カメラの所有者、写真家、または画像作成者の名前。
'著作権'
画像の権利を主張する個人または組織の著作権表示。
'デジタルカメラ'
Exif タグから取得した情報を含む構造体。
'GPS情報'
Exif タグから取得したジオタグ情報を含む構造体。
参照: imread、imwrite、imshow、imformats。
デフォルトでは、Octave のイメージ IO 関数 ( imread、imwrite、imfinfo)GraphicsMagickは、その操作にライブラリを使用します。これは、膨大な数のイメージ形式がサポートされていることを意味しますが、科学におけるイメージ形式の多さと、その一般的に閉じられた性質を考慮すると、それらすべてを読み取ることができるライブラリを持つことは不可能です。このため、関数は、 imformats使用可能な形式、その拡張子、およびイメージ IO 関数が使用する関数の構成可能なリストを保持します。これにより、特定のファイル形式で動作することを目的とした関数を作成することで、Octave のイメージ IO 機能を拡張できます。
追加関数を直接呼び出すことも可能ですが、Octave を適切に構成することで、imformatsファイル形式から抽象化された一貫したコードを維持できます。
ファイル形式は実際にはファイル拡張子によって定義されるわけではなく、GraphicsMagickにリストされているものよりも多くのファイル形式の読み取りと書き込みが可能であることに注意することが重要ですimformats。つまり、拡張子が間違っていたり、拡張子が欠落していても、画像を正しく読み取ることができる場合があり、リストされていない形式であっても必ずしもサポートされていないわけではありません。
:インポートフォーマット ()
:formats = インポートフォーマット (ext)
:formats = インポートフォーマット (format)
:formats = インポートフォーマット ("add", format)
:formats = インポートフォーマット ("remove", ext)
:formats = インポートフォーマット ("update", ext, format)
:formats = インポートフォーマット ("factory")
サポートされている画像形式を管理します。
formats は、サポートされている各ファイル形式に関する情報、または特定の形式extからフィールドextに表示される値を含む構造体です。次のフィールドが含まれます。
内線
ファイル形式の名前。これはファイル拡張子と一致する場合もありますが、Octave はファイル形式を自動的に検出します。
説明
ファイル形式の詳細な説明。
イサ
ファイルが指定された形式であるかどうかを確認する関数ハンドル。
書く
ファイルが指定された形式である場合に書き込む関数ハンドル。
読む
指定された形式のファイルを開くための関数ハンドル。
情報
指定された形式の画像情報を取得するための関数ハンドル。
アルファ
フォーマットがアルファ チャネル (透明度またはマット) をサポートしている場合の論理値。
複数ページ
形式が複数ページ (ファイルごとに複数の画像) をサポートしている場合の論理値。
"add"、、"remove"およびオプションを使用して、必要なフィールドを含む"update"構造形式を指定することにより、Octave がファイル形式を管理する方法を変更することができます。 オプションは、 "factory"設定をデフォルトにリセットします。
これは、PKG_ADD および PKG_DEL コマンドを使用して Octave パッケージで使用し、Octave の画像読み取り機能を拡張するために使用できます。
参照: imfinfo、imread、imwrite。