dポイントプレゼントキャンペーン実施中!

C#で、HLS色空間による2値化などを利用した顔領域検出のプログラムを作っています。
文献を参考にプログラミングし、エラーも出なかったのですが…
デバックすると、
f[i, j] = 0;のところで「インデックスが配列の境界外です。」と言われてしまいます。
何故なのか、どなたか教えてください。
よろしくお願いします。


--------------------プログラムの一部--------------------


public double minHue, maxHue;//肌色領域(色相)
public double minSat, minLight;//肌色領域(彩度、明度)

public void BinaryHue(Bitmap bmp0, int[,] f, bool flagBinaryDisp )
{
int i, j, nx, ny, gray;
double rr, gg, bb, c1, c2;
double light, hue, saturation;
Color col;
nx = bmp0.Width;
ny = bmp0.Height;

for (j = 0; j < ny; j++)
{
for (i = 0; i < nx; i++)
{
col = bmp0.GetPixel(i, j); //原画像
rr = col.R;
gg = col.G;
bb = col.B;
light = 0.299 * rr + 0.587 * gg + 0.114 * bb;
c1 = (rr - light);
c2 = (bb - light);
hue = calcHue(c1, c2);//C2を基準
if (hue < 0) hue += 360.0;
saturation = Math.Sqrt(c1 * c1 + c2 * c2);// / 255.0;//最大値を1
if ((hue >= minHue && hue <= maxHue && saturation > minSat))
{
f[i, j] = 1; gray = 255;
}
else
{
f[i, j] = 0; gray = 0;
}
if (flagBinaryDisp)
bmp0.SetPixel(i, j, Color.FromArgb(gray, gray, gray));
}
}
}

A 回答 (1件)

普通に考えれば引数で渡しているfの配列が小さすぎるのではと思いますが、その前のコードがないのではっきりしたことはわかりません。

    • good
    • 0
この回答へのお礼

ありがとうございます!
なんとか画像も表示されるようになりました^^

お礼日時:2012/02/01 17:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!