Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

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

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

I = imread("pout.tif");

関数imshowを使用してこのイメージを表示します。イメージ ビューアーアプリでイメージを表示することもできます。このアプリは、イメージを表示し、いくつかの一般的なイメージ処理タスクを実行するための統合環境を提供します。イメージ ビューアー アプリは 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 を呼び出してヒストグラムを作成します イメージの強度の範囲が狭いことがヒストグラムによって示されている点に注目してください。この範囲は [0, 255] の有効範囲に及んでいません。また、イメージには高い値と低い値がなく、コントラストが良好ではありません。

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.

関数imhistを使用してイメージのコントラストを改善し、結果を表示します。ヒストグラム均等化を実行するとイメージの範囲全域に強度値が拡散されます。このツールボックスには、imadjustadapthisteq などのコントラスト調整を実行する他の関数や、イメージ ビューアー アプリで利用できるコントラスト調整ツールなどの対話型ツールが含まれています。

I2 = histeq(I);
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 はイメージを Portable Network Graphics (PNG) 形式でファイルに書き込みます。他のファイル形式を指定することもできます。

imwrite(I2,"pout2.png");

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

関数imfinfoを使用して、ファイル内のイメージに関する情報 (形式、サイズ、幅、高さなど) を表示します。

imfinfo("pout2.png")
ans = struct with fields:
                  Filename: '/tmp/Bdoc23b_2463843_965647/tpbe76c22a/images-ex89505080/pout2.png'
               FileModDate: '04-Dec-2023 12:42:48'
                  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: '4 Dec 2023 17:42:48 +0000'
                     Title: []
                    Author: []
               Description: []
                 Copyright: []
              CreationTime: []
                  Software: []
                Disclaimer: []
                   Warning: []
                    Source: []
                   Comment: []
                 OtherText: []

参考

| | |

関連するトピック