1

ではなく、自分の Matlab コードで再構成して形態学的オープニングを行う必要がありますimreconstruct。これは私のコードですが、うまくいきません:

S = input('Enter the structuring element: ');
Im = input('Enter the input image: ');

marker = imerode(Im,S);
mask = Im;

Im2 = imdilate(marker,S);
Im3 = min(Im2,Im);

i=1;

while Im3(i+1)~= Im3(i)
    i=i+1;
    Im2 = imdilate(Im3(i),S);
    Im3(i+1) = min(Im2,Im);
end

imrecon = Im3;

誰かがより良いコードを持っているか、私のコードを編集できますか? 私を助けてください。前もって感謝します。

4

1 に答える 1

0

MatLab はわかりませんが、コードは正しいようです。ただし、ユーザーが単一の構造化要素 (最大 3x3 次元) を指定していることを確認する必要があることに注意してください。

以下は、再構成による開口部の古典的な擬似コードです。

Input: Image, Marker, SE (unitary, 3x3 maximum)
Var: Reconstructed, Dilated
Output: Result

Reconstructed <-- Marker

while Reconstructed != Result
    Result <-- Reconstructed
    Dilated <-- Dilate(Result, SE)
    Reconstructed <-- Minimum(Image, Dilated)

これはアカデミックな方法ですが、間違いなく最速ではありません。より迅速な方法は、階層待機キュー (HQ) を使用して実装することです。マーカー ピクセルを HQ に入力し、以前と同様に 1 つずつ処理します: 膨張と最小値。HQ を使用すると、各ピクセルは 1 回だけ処理されます。私が知っている最速の実装は、Down Hill アルゴリズム (Java では 3 倍、c/C++ では最大 20 倍) を使用していますが、それを説明するのに十分ではありません。

于 2016-06-02T16:43:12.217 に答える