Features.ImageInfo.createImf C# (CSharp) Method

createImf() private method

**** THIS FUNCTION CAN BE CALLED ONLY ONES IN THE OBJECT LIFE TIME*** creates an array with _imGray pixel values normalized(1) and saves it in _imf(float[])
private createImf ( ) : float[]
return float[]
        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;
            }
        }