インデックスが配列の境界外です。と出てしまいます。
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));
}
}
}
補足
>hue は特定の色の陰影を言います wikiには色相とあるのですが、「色相=陰影」なのでしょうか?互いに直行する概念のようにもみえますが。