Matlabを使用した肝臓セグメンテーションの適応しきい値処理


11

適応しきい値法を使用して腹部CT画像から肝臓をセグメント化する必要があります。しかし、前景全体を背景だけから分離しています。前景の肝臓部分だけを分離する必要があります。http://www.ijcaonline.org/casct/number1/SPE34T.pdf にあるpdfファイルを確認してください。図6に示すような出力が必要です。

ここにコーディングを添付します。親切に私を助けてください。

%testadaptivethresh.m
clear;close all;
im1=imread('nfliver2.jpg');
bwim1=adaptivethreshold(im1,11,0.03,0);
figure,imshow(im1);
figure,imshow(bwim1);
imwrite(bwim1,'at2.jpg');

function bw=adaptivethreshold(IM,ws,C,tm)
%ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the
%foreground from the background with nonuniform illumination.
%  bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local 
%   threshold mean-C or median-C to the image IM.
%  ws is the local window size.
%  tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.
%
%  Contributed by Guanglei Xiong (xgl99@mails.tsinghua.edu.cn)
%  at Tsinghua University, Beijing, China.
%
%  For more information, please see
%  http://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm

if (nargin<3)
    error('You must provide the image IM, the window size ws, and C.');
elseif (nargin==3)
    tm=0;
elseif (tm~=0 && tm~=1)
    error('tm must be 0 or 1.');
end

IM=mat2gray(IM);

if tm==0
    mIM=imfilter(IM,fspecial('average',ws),'replicate');
else
    mIM=medfilt2(IM,[ws ws]);
end
sIM=mIM-IM-C;
bw=im2bw(sIM,0);
bw=imcomplement(bw);

元の画像 セグメンテーション後

testadaptivethresh.m用に変更したコード

clear;
im=imread('nfliver7.gif');
figure,imshow(im)
bwim1=adaptivethreshold(im,300,-0.15,0);
bw=bwareaopen(bwim1,3000);
se=strel('diamond',4);
er=imerode(bw,se);
bw1=bwareaopen(er,3000);
er1=imerode(bw1,se);
bw2=bwareaopen(er1,1000);
fi=imfill(bw2,'holes');
figure,imshow(fi)

op=uint8(fi);
seg=im.*op;
figure,imshow(seg)
imwrite(seg,'sliver7.jpg');

適応しきい値処理を使用する必要がありますか?
vini

blogs.mathworks.com/steve/2006/06/02/cell-segmentationは、これを試すことができると発見しました
vini

はい、適応しきい値処理のみを使用する必要があります。そうでない場合は、他の適切なセグメンテーション方法を提案できますか(リージョン成長とFCM以外)。
Gomathi

www4.comp.polyu.edu.hk/~cslzhang/code.htmこのuは、K。Zhang、H。Song、L。Zhangのコードを検索できることがわかりました。「ローカル画像フィッティングエネルギーによって駆動されるアクティブな輪郭」パターン認識、ボリューム。43、第4号、1199〜1206頁、2010年4月。この画像には十分に機能しました
vini

どうもありがとうございます。出力を得た。パラメータ値を変更し、モルフォロジー演算を行いました。みんなありがとう。
Gomathi

回答:


6

あなたが参照した(SS Kumarの)論文のリンクとコードを入手したリンク(HIPR)のリンクは2つの異なるアルゴリズムです。どちらも適応しきい値処理のように聞こえますが

まず、違いをお話ししたいと思います。

HIPRメソッドでは、一般的な仮定は基本的に2クラスレベルの画像、つまり前景と背景です。2つのクラスのしきい値処理では、画像のヒストグラム内に2つのピークまたは領域、特に背景と背景、テキストとホワイトペーパーが必要です。どういうわけかヒストグラムで最適な谷のポイントを見つけた場合-あなたは最もきれいな分割を得ます。ヒストグラムは次のようになります。
ここに画像の説明を入力してください

ただし、この谷のポイントはローカルでわずかにシフトしている可能性があります。そこに与えられた照明のバリエーションの良い例があります。したがって、この最適な谷点はどこにでも存在しますが、空間的にわずかに変化するため、普遍的なしきい値は失敗します。したがって、谷のポイント(しきい値)はすべての局所領域で計算されます。

SS Kumarの論文の方法、より具体的には、処理している画像のクラスは、マルチクラス(それぞれ異なる強度帯域と広がりを持つ複数のオブジェクト)です。この場合、ヒストグラムはマルチモーダルです。つまり、ヒストグラムには多くの山と谷があり、おそらく各ピークは異なるオブジェクトに対応していますが、さらに複雑な場合もあります。

ヒストグラムは次のようになります(紙と同じ画像です)。 ここに画像の説明を入力してください

この場合、上記の2クラスのアプローチは、良い谷が1つもないため、失敗します。これが、最初に投稿した画像が周囲全体に黒/白のドットのように見える理由です。

ここでの適応しきい値処理の意味は、正しいピークと、レバーのほとんどの強度をカバーするグレースケールのバンドを特定する必要があることを意味します。

あなたは何をするべきか?

まず、アダプティブスレッショルドを使用する必要がある場合は、ヒストグラムを見つけ、どの強度範囲を確認します。次に、左または右のしきい値について、ピクセルを破棄する必要のある強度境界を示します。

別の方法として、Region Growingまたは分割とマージのアルゴリズムを使用することもできます。いくつかの情報についてはこの質問を参照してください:単純な画像に使用できるセグメンテーション方法は何ですか?


どうもありがとうございます。それは非常に有益な回答でした。
Gomathi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.