A という名前の m 行 n 列の行列があり、値は 1 と 0 です。8 つの隣接ピクセルのうち少なくとも 5 つが 1 の場合、すべての 0 の値を 1 に変換したいと考えています。私が試したのはnlfilter
関数を使用することですが、引数のfun
使用方法がわかりません。助けが必要です。nlfilter
次のようにハンドルとして関数を作成しました。
function b = gap_fill(A)
b=A;
index= A([1 2 3 4 6 7 8 9]);
if sum(index)>=5
b(5)= 1
end
end
それから私はこれをやろうとしました:
B= nlfilter(A,[3 3],@gap_fill)
しかし、それはこのエラーを出しました:
??? Subscripted assignment dimension mismatch.
Error in ==> nlfilter at 75
b(i,j) = feval(fun,x,params{:});
なにか提案を?主な問題は、関数の処理に慣れていないことです。
= 更新中 =
やっと良い結果にたどり着きました。関数を変更してスカラーを出力し、それをfun
引数として使用すると、希望どおりに機能しますnlfilter
。これは私のコードです。助けてくれてありがとう。誰にとっても役立つことを願っています:
function b = gap_fill(A)
index= A([1 2 3 4 6 7 8 9]);
if sum(index)>=5
A(5)= 1;
end
b=A(5);
end
MATLAB では:
b= nlfilter (A,[3 3],'gap_fill')