MATLABによる画像処理5

ページトップへ 一つ上へ

ポイント


閾値、二値化



さてさて、今回も画像処理の続きをやってみたいと思います。
前回は画像の明るさを調整しましたが、
今回は画像のニ値化につして行います。

ニ値化というのは、白と黒の二つにしてしまうという事です。
そして、それをどの基準で行うかというのが閾値になります。

具体的に方法を説明すると、まず各画素の明るさを求めます。
カラー画像の場合は、0〜255のRGB値の平均が明るさになります。
その明るさが閾値より大きければ白、小さければ黒という事になります。
では、実際にその方法をMATLABで書いてみましょう。

今回使った素材の画像は、



この画像はIEEEの研究用標準画像です。
今まではモノクロ画像を使っていましたが、
今回はわかりやすくするために、カラー画像を使います。

では実際のプログラムは以下のように
function image_proc8(t)

% 画像処理
% 閾値処理によるニ値化
%

imagedata=imread('Lenna.bmp');

for ii = 1 : 256
    for jj = 1 : 256
        average = mean(imagedata(ii,jj,:));
        if (average > t)
            imagedata2(ii,jj)=255;
        else 
            imagedata2(ii,jj)=0;
        end
            
    end
end

image(real(imagedata2));
colormap(gray(256));


コマンドから閾値を引数として入力します。
MATLABで配列Aの平均を求めるのは、

mean(A)

で求める事ができます。

とりあえず上のプログラムを実行すれば、
ニ値化が出来ます。いろいろやって見て下さい。