画像からエッジを抽出しようとしています。次のアルゴリズムを使用しました。512 * 512 グレースケール画像である入力画像 (e11) も与えられます。
- 入力画像の形態勾配を求める(gradientim)
- グラデーション画像のネガ画像を求める(negativeim)
- ボトムハット変換 (bottomhatim) を使用して、閉じたイメージから元のイメージを減算します。
- 入力画像の平均ピクセルを計算する(AVG)
- AVG に基づいてバイナリ イメージを見つけて、イメージを滑らかにします。
- より大きなオブジェクト (CC) を見つけるために、最大の連結領域を見つけます。
- 平滑化された画像 (エッジ) から最大領域を減算します。
私が書いたmatlabコードを以下に示します
e11 = imread("lena.jpg");
e11= double(e11);
gradientim = imdilate(e11,se) - imerode(e11,se);
negativeim = imcomplement(gradientim);
bottomhatim = imclose(negativeim,se) - e11 ;
AVG = mean2(e11);
%-------Computing binary image--------
for i=1:(height)
for j=1:(width)
if(AVG > bottomhatim(i,j,:))
bottomhatim(i,j,:) = 1;
else
bottomhatim(i,j,:) = 0;
end
end
end
CC = bwconncomp(bottomhatim);
edge = bottomhatim - CC;
手順 7 を実行中に、接続されたコンポーネント (CC) の型が 'struct' であるため、次のようなエラーが発生します。
「タイプ 'struct' の入力引数に対して未定義の関数 'minus'」.
「bwconncomp」関数を使用して、最大の接続領域を見つけることができますか?これに代わる関数はありますか?このコードを修正するのを手伝ってください。よろしくお願いします。