Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

イメージのインポート、処理およびエクスポートの基本

この例では、ワークスペースにイメージを読み取り、イメージのコントラストを調整した後、調整したイメージをファイルに書き込む方法を説明します。

手順 1: イメージの読み取りと表示

imread コマンドを使用してイメージをワークスペースに読み取ります。この例では、ツールボックスに含まれるサンプル イメージのうち pout.tif というファイル名の少女のイメージを読み取り、I という配列に格納します。imread は、このファイルからグラフィックス ファイル形式が TIFF (Tagged Image File Format) であると推測します。

I = imread('pout.tif');

関数 imshow を使用してこのイメージを表示します。イメージはイメージ ビューアー アプリでも表示できます。イメージ ビューアー アプリは、関数 imtool によって開き、イメージの表示と一般的なイメージ処理タスクを行うための統合環境が提供されます。イメージ ビューアー アプリは imshow のイメージ表示機能をすべて備えているほか、スクロール バー、ピクセル領域ツール、イメージ情報ツール、コントラスト調整ツールなどイメージのナビゲートや確認のためのツールも備えています。

imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

手順 2: イメージがワークスペースにどのように表示されるかの確認

whos コマンドを使用して、イメージ データが関数 imread によりどのようにワークスペースに格納されているかを確認します。この変数はワークスペース ブラウザーで確認することもできます。関数 imread は、変数 I にイメージ データを返します。これは uint8 データの 291 行 240 列の要素で構成される配列です。

whos I
  Name        Size             Bytes  Class    Attributes

  I         291x240            69840  uint8              

手順 3: イメージ コントラストの改善

イメージのピクセル強度の分布を表示します。pout.tif はコントラストが若干低いイメージです。イメージ内の強度の分布を見るには、関数 imhist を呼び出してヒストグラムを作成します (関数 imhist の呼び出しの前に Figure コマンドを挿入して、ヒストグラムが現在の Figure ウィンドウに表示されているイメージ I を上書きしないようにします)。イメージの強度の範囲が狭いことがヒストグラムによって示されている点に注目してください。強度の範囲が最大範囲 [0, 255] を網羅しておらず、良好なコントラストをもたらす高い値と低い値が欠けています。

figure
imhist(I)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

イメージのコントラストを改善するには、関数 histeq を使用します。ヒストグラム均等化を実行するとイメージの範囲全域に強度値が拡散されます。イメージを表示します。(このツールボックスには他にもいくつかのコントラスト調整機能があります。たとえば imadjustadapthisteq、イメージ ビューアーにあるコントラスト調整ツールなどの対話型ツールです)。

I2 = histeq(I);
figure
imshow(I2)

Figure contains an axes object. The axes object contains an object of type image.

関数 imhist を再び呼び出して、均等化されたイメージ I2 のヒストグラムを作成します。2 つのヒストグラムを比較すると、I2 のヒストグラムが I のヒストグラムより範囲全体に拡散していることがわかります。

figure
imhist(I2)

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains 2 objects of type image, line.

手順 4: 調整したイメージのディスク ファイルへの書き込み

調整した新たなイメージ I2 をディスク ファイルに書き込むには、関数 imwrite を使用します。この例ではファイル名にファイル名拡張子 '.png' が含まれているため、関数 imwrite はイメージを PNG (Portable Network Graphics) 形式でファイルに書き込みますが、他の形式を指定することもできます。

imwrite (I2, 'pout2.png');

手順 5: 新たに書き込んだファイルの内容の確認

imwrite がディスク ファイルに書き込んだ内容を表示するには、関数 imfinfo を使用します。関数 imfinfo は、ファイル内のイメージに関する情報、たとえばイメージの形式、サイズ、幅、高さなどを返します。

imfinfo('pout2.png')
ans = struct with fields:
                  Filename: '/tmp/Bdoc22b_2089663_1262858/tp9872029b/images-ex89505080/pout2.png'
               FileModDate: '10-Oct-2022 01:17:45'
                  FileSize: 36938
                    Format: 'png'
             FormatVersion: []
                     Width: 240
                    Height: 291
                  BitDepth: 8
                 ColorType: 'grayscale'
           FormatSignature: [137 80 78 71 13 10 26 10]
                  Colormap: []
                 Histogram: []
             InterlaceType: 'none'
              Transparency: 'none'
    SimpleTransparencyData: []
           BackgroundColor: []
           RenderingIntent: []
            Chromaticities: []
                     Gamma: []
               XResolution: []
               YResolution: []
            ResolutionUnit: []
                   XOffset: []
                   YOffset: []
                OffsetUnit: []
           SignificantBits: []
              ImageModTime: '10 Oct 2022 05:17:45 +0000'
                     Title: []
                    Author: []
               Description: []
                 Copyright: []
              CreationTime: []
                  Software: []
                Disclaimer: []
                   Warning: []
                    Source: []
                   Comment: []
                 OtherText: []