自己MATLABプログラミング閾値画像セグメンテーション

アイデアの実現

  1. 原画像のヒストグラムは、ヒストグラムと二つのピークに対応する階調範囲の推定された観測値をレンダリング
  2. (に対応する2つのピークの階調値の範囲の底検索最小値を階調値に対応します)
  3. 底部は、階調閾値の階調値に対応する検索し、対応する処置のためのグレーの閾値よりも大きいか小さいです
    探ししきい値

目標点と呼ばれるオブジェクトの点の閾値より大きい画像の全ての画素の階調値、グレースケール画像は、それらの画素の背景点と呼ばれる背景ドット、と考えられる閾値に等しい又は未満。

この場合の処理​​に多くの方法があり、実際の状況に応じて調整することができます。

  • 閾値処理方法の階調値以上の閾値画素の値とグレースケール値は、以下のピクセルのしきい値よりもさらに明るい背景セグメンテーション暗所で暗い背景から分割明るいオブジェクトを表示するには、特に、0と1に設定されていますこれは、オブジェクト。
  • 半閾値法明画素のグレー値の閾値よりは変更されないまま、黒に暗いピクセルの小さい閾値、暗画素の閾値よりグレー値以下は一定のままであるが、意志白に明るい画素の閾値よりも大きいです。

結果を実現

セグメンテーション

参照コード

それぞれグレースケールの二次元配列の長さのランクに応じた画像処理、二次元のグレースケール画像、サイズ(IM、1)、サイズ(IM、2)を担持するMATLABカメラマンに使用。

im=imread('cameraman.tif');
im2=imhist(im);		//im2为原图像对应的灰度直方图,数组索引号代表灰度值,索引号所对应的值为该灰度值下像素点的个数
min=size(im,1)*size(im,2); 
minindex=0;
figure('name','灰度直方图')
imhist(im)
figure('name','半阈值化图像分割')
subplot(1,2,1)
imshow(im)
title('原图像')
for i=10:165		//观察灰度直方图估计两个峰值对应的灰度值范围
    if(im2(i)<min)
        min=im2(i);
        minindex=i;	//注意索引号对应的才是灰度值!!
    end
end
for i=1:size(im,1)
    for j=1:size(im,2)
        if(im(i,j)>=minindex)
            im(i,j)=255;	//半阈值化的方法,从亮的背景中分割出暗的物体
        end
    end
end
subplot(1,2,2)
imshow(im)
title('阈值分割图像')
公開された18元の記事 ウォン称賛40 ビュー50000 +

おすすめ

転載: blog.csdn.net/seawaysyyy/article/details/103319837