matlab で独自の dilate および erode 関数を作成しようとしています。機能する実装がありますが、出力画像のサイズが変わります。
これは私が持っているものです:
浸食
function eroded = erode(X)
eroded = col2im(min(im2col(X, [3 3])), [3 3], size(X));
end
拡張する
function dilated = dilate(X)
dilated = col2im(max(im2col(X, [3 3])), [3 3], size(X));
end
これらは視覚的に機能しますが、それらで作成された領域をオーバーレイしようとすると、画像マトリックスの次元が変更されたため、めちゃくちゃになります。問題がcol2im
またはにあることを確認しましたim2col
。誰が私が間違っているのか教えてもらえますか?
それをいじってみると、変換されたマトリックスの列のサイズを1に減らす方法min
に関連している可能性が高いことがわかりました。max