Graphics | ![]() ![]() |
イメージデータまたはグラフィックタイプの変換
uint8
やuint16
配列をサポートしていない演算を実行したい場合、データを関数double
を使って倍精度に変換する必要があります。たとえば、つぎのように行います。
BW3 = double(BW1) + double(BW2);
データタイプ間の変換は、MATLABやツールボックスがイメージデータを解釈する方法を変更することであることに注意してください。イメージデータを適切に変換した配列とするには、変換するときにスケーリングを行ったり、オフセットを適用する必要があります(オフセットに関する情報は、"イメージタイプ"や"8-ビットや16-ビットのインデックス付きイメージ"の節を参照してください) 。
ある演算で、イメージを異なるイメージタイプに変換することが有効な場合があります。たとえば、インデックス付きイメージとしてストアしているカラーイメージをフィルタ処理したい場合、まず、それをRGBフォーマットに変換しなければなりません。これを効率的に行うには、関数ind2rgb
を使ってください(Image Processing Toolboxに用意されています)。RGBイメージにフィルタを適用する場合、MATLABは、イメージ内の強度値にフィルタ処理を行います。また、インデックス付きイメージにフィルタを適用しようとすると、MATLABは、単にインデックス付きイメージ行列のインデックスにフィルタを適用し、結果は、なんら意味のないものになる可能性があります。
MATLABの書式を使った、ある変換を行うこともできます。たとえば、グレースケールイメージをRGBに変換したい場合、つぎのように、3番目の次元に従ってオリジナル行列を繋いでください。
RGB = cat(3,I,I,I);
結果のRGBイメージは、赤、緑、青のパネルに対する単位行列になり、イメージはグレーのシェーディングが適用されたように表示されます。
しばしば、他のソフトウエアで使用するため、イメージのグラフィックスフォーマットを変更した場合があります。これは、非常に簡単なものです。たとえば、BMPからPNGへのイメージの変換は、 imread
を使ってBMPデータを読み込み、データタイプをuint8
、uint16
、double
のいずれかに設定し、'PNG'
の指標を付けて、imwrite
を使って、イメージをセーブします。種々のグラフィックスフォーマットに対してサポートされているビットデプスの指標やイメージをファイルに書き込むときのフォーマットタイプの設定方法については、imread
とimwrite
を参照してください。
![]() | イメージの印刷 | 基本的な印刷法と出力法 | ![]() |