private float[] createImf()
{
lock (imfLcok)
{
if (_imf != null) return _imf;
// get image data (for the raw data pointer)
BitmapData imGrayData =
_imGray.LockBits(new Rectangle(0, 0, _imGray.Width, _imGray.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly,
_imGray.PixelFormat);
_imf = new float[_imGray.Width * _imGray.Height];
// copy image gray val's into normalized float (0.....1)
unsafe
{
for (int i = 0; i < imGrayData.Height; i++)
{
byte* row = (byte*)imGrayData.Scan0 + (i * imGrayData.Stride);
for (int j = 0; j < imGrayData.Width; j++)
{
_imf[i * imGrayData.Width + j] = (float)row[j] / MAX_GRAY_VALUE;
}
}
}
_imGray.UnlockBits(imGrayData);
return _imf;
}
}