助けてください!添付されたものに似た画像があります(興味深い水平の白い線で南から北に移動する暗いから明るいへのグラデーション)画像の下から始まるy軸の各ベクトルに沿って見ようとしています白線の一番下を探します。ソーベルのようなエッジ検出器を使用できますが、白い線の南に暗いスポットがあります..スポットに入ると、検出器に大きな負の値が与えられますが、無視できますが、暗いスポットを離れて勾配に戻ります検出器から大きな正の値が得られますが、これは白線の下部にあるエッジと区別できません。私がまとめようとしたコードは、各ポイントでソーベル値と強度を同時に取得し、2 つの個別のベクトルに追加します (ソーベル値を持つベクトルは、後で各 y 軸ベクトルの最大値/白線の下端を見つけるために使用します)。大きな負のソーベル値がある場合 (つまり、暗いスポットに入った場合)、スポットの開始前の最後の強度ポイントを保持し、「while」を使用してソーベル ベクトルをゼロで埋め、カーネルが安全に外れるまで上向きに移動します。その時点で、実際のソーベル値の収集を再開します。高さ 715 の画像を読み込んでいますが、ソーベル ベクトルがそれよりかなり大きくなってしまいます...何が間違っているのかわかりません: ダーク スポットに入る) スポットの開始前の最後の強度ポイントを保持し、'while' を使用してソーベル ベクトルをゼロで埋め、カーネルが安全にダーク スポットから出るまで上方に移動します (強度値がより大きくなります)ダーク スポットに入る前より) その時点で、実際のソーベル値の収集を再開します。高さ 715 の画像を読み込んでいますが、ソーベル ベクトルがそれよりかなり大きくなってしまいます...何が間違っているのかわかりません: ダーク スポットに入る) スポットの開始前の最後の強度ポイントを保持し、'while' を使用してソーベル ベクトルをゼロで埋め、カーネルが安全にダーク スポットから出るまで上方に移動します (強度値がより大きくなります)ダーク スポットに入る前より) その時点で、実際のソーベル値の収集を再開します。高さ 715 の画像を読み込んでいますが、ソーベル ベクトルがそれよりかなり大きくなってしまいます...何が間違っているのかわかりません:
for n=1:1:width
sobVec=[];
intVec=[];
for k=height-5:-1:5
if (-4*double(J((k+4),n))-3*double(J((k+3),n))-2*double(J((k+2),n))-1*double(J((k+1),n))+0*double(J((k),n))+1*double(J((k-1),n))+2*double(J((k-2),n))+3*double(J((k-3),n))+4*double(J((k-4),n)))>-150
sobVec(end+1)=-4*double(J((k+4),n))-3*double(J((k+3),n))-2*double(J((k+2),n))-1*double(J((k+1),n))+0*double(J((k),n))+1*double(J((k-1),n))+2*double(J((k-2),n))+3*double(J((k-3),n))+4*double(J((k-4),n));
intVec(end+1)=J(k,n);
else
if isempty(intVec)
intVec=[1];
end
while J((k-1),n)<intVec(end)
k=k-1;
sobVec(end+1)=0;
end
if J((k-1),n)>intVec(end)*1.1
for i=1:1:5
k=k-1;
sobVec(end+1)=0;
end
end
end
end
end