出力画像と返されるピクセルデータの間に不一致があるようですが、現在、しきい値処理のために画像を準備するコードに取り組んでいます。
コードを通してお話しします。まず、3 つのパラメーター (IMAGE
しきい値処理される画像) を取る関数を定義します。r
中心ピクセルの周囲を定義する半径。そこからピクセル データを計算できます。そしてk
、しきい値処理の詳細を決定する「カーネル」。
function [t] = imadaptive ( IMAGE, r, k )
次に、前に定義した関数を呼び出して、各ピクセルの平均偏差と標準偏差が格納された画像を作成します。
meanpic = immean (IMAGE, r);
stdpic = imstd (IMAGE, r);
次に、各ピクセルの強度が 0 の新しいイメージを作成します。t
これは、各ピクセルの適切なしきい値を格納するために使用されます。
t = zeros(size(IMAGE));
次に、画像のサイズを計算して、for ループにいつ停止するかを伝えます。
[nx, ny] = size(IMAGE);
次に、for ループを開始し、一連の if ステートメントを実行して、プログラムが (-2,-2) のような位置のピクセル値を検査しようとするのを停止します。
if x-r <= 0
startx = 1;
else
startx = x-r;
end
if x+r > nx
endx = nx;
else
endx = x+r;
end
if y-r <= 0
starty = 1;
else
starty = y-r;
end
if y+r > ny
endy = ny;
else
endy = y+r;
end
最後に、コードを実行して各ピクセルの適切なしきい値を計算し、その値を画像に追加しますt
。
R = 128;
for xp = startx : endx
for yp = starty : endy
if (x-xp)^2 + (y-yp)^2 <= r^2
thresh = meanpic(xp,yp) * (1 + (k * (((stdpic(xp,yp) / R) - 1))));
end
end
end
t(x,y) = thresh;
問題は、このコードを実行すると、私と同じ画像が得られることですstdpic
:各画像の標準偏差値を示す画像です。しかし、これがなぜなのかわかりません。方程式は正しいようです。方程式;
から を削除すると、出力される値が 0 から 255 の間で非常に多様であることがわかります。そのため、出力イメージt
は大きく異なって見えるはずです。
ここで私が間違っていることを誰かが指摘できますか?