10

私は医療画像のセグメンテーションに取り組んでおり、ファジー接続性アルゴリズムとグラフカットを組み合わせたいと考えています.背景と前景がファジー接続性で画像をセグメント化し、グラフカットアルゴリズムのシンクとソースとして使用されます.グラフカットセグメンテーションのシード座標を取得するための私のコードです

FC=afc(S,K); %// Absolute FC
u=FC>thresh;
v=FC<thresh;

s=regionprops(u, 'PixelIdxList'); %// listes de pixels de l´objet
t=regionprops(v, 'PixelIdxList'); %// listes de pixels de l´arrière plan
[a,b]=size(s);
[w,c,z]= size(t)

for i=1:a
    for j=1:b
        [y,x] = ind2sub(size(u), s(i,j).PixelIdxList);
    end
end
for k=1:w
    for d=1:c
        [y1,x1] = ind2sub(size(v), t(k,d).PixelIdxList);
    end
end

グラフ カットには、File Exchangeのアルゴリズムを使用しました。

たとえば、次のように定義できます

Cs=-log([y x])
Ct=-log([y1 x1])

しかし問題は、コード ソースのこの部分のように、コスト関数からの情報をどのように組み合わせるかです。

u = double((Cs-Ct) >= 0);
ps = min(Cs, Ct);
pt = ps

行列のサイズを超えます

4

1 に答える 1

6

リンク先の FEX からのグラフ カットの実装には詳しくありませんが、matlab ラッパー
を使用した例を示します(適切な開示: このラッパーを実装しました)。GCMex

ピクセルを含むサイズの画像と、 とsize(S)ピクセルがどの程度うまく接続されているかを表す(隣接すると)のサイズの疎行列があると仮定します。 さらに、ハード制約として扱われる前景ピクセルのマスクと背景ピクセルのマスクがあります。nKnnK(ii,jj)iijjiijj
uv

まず、 と を使用してデータ項を作成uvます。

Dc = 1000*[u(:), v(:)]; %// assign very large cost for picking FG pixel to label zero and vice versa

ご覧のとおり、 data-termDcは、nラベルl(0 または 1) をピクセルに割り当てるコストを伴う 2 行 2 列の配列であり、iiに格納されDc(ii,l+1)ます。したがって、前景 ( = u(ii)1) のピクセルにラベルl=0(つまり背景) を割り当てる場合、支払うコストは 1000 です。同じことが背景 ( = 1) のピクセルにもv(ii)当てはまり、それらを前景に割り当てる (つまり、l=1) のコストは 1000 です。したがって、データ項Dcは、誤ったラベルを取得するシード ピクセル (前景または背景のいずれか) に非常に高いコストをもたらします。

グラフ カット オブジェクトを構築する

gch = GraphCut('open'), Dc, [0 1; 1 0], K );
[gch L] = GraphCut('expand',gch);
gch = GraphCut('close',gch);
L = reshape(L, size(u)); 
figure; imshow(L,[]); title('the resulting mask');

GCMex使用するには、インストール手順に従い、コンパイルして動作させる必要があることに注意してください。

于 2016-04-21T12:27:05.580 に答える