1

出力画像と返されるピクセルデータの間に不一致があるようですが、現在、しきい値処理のために画像を準備するコードに取り組んでいます。

コードを通してお話しします。まず、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は大きく異なって見えるはずです。

ここで私が間違っていることを誰かが指摘できますか?

4

1 に答える 1