Здравствуйте, FLUID, Вы писали:
Меня берет сомнение по поводу правильности работы алгоритма.
Если это не так и алгоритм правильный убедите меня.
nTreshold — как его правильно использовать.
С уважением
Alexey
FLU>Попробуй вот это:
FLU>FLU>public Image EqualizeImage(Bitmap bmp, int nTreshold)
FLU> {
FLU> BitmapData bmpData = bmp.LockBits(new Rectangle(0,0,
FLU> bmp.Width,bmp.Height),ImageLockMode.ReadWrite,
FLU> PixelFormat.Format24bppRgb);
FLU> int stride = bmpData.Stride;
FLU> System.IntPtr Scan0 = bmpData.Scan0;
FLU> try
FLU> {
FLU> unsafe
FLU> {
FLU> byte *p = (byte *)(void *)Scan0;
FLU> int nOffset = stride - bmp.Width*3;
FLU> int nWidth = bmp.Width*3;
FLU> for(int y = 0; y < bmp.Height; ++y)
FLU> {
FLU> for(int x = 0; x < nWidth; ++x)
FLU> {
FLU> if(p[0] >= nTreshold)
FLU> p[0] = 255;
FLU> if(p[0] < nTreshold)
FLU> p[0] = 0;
FLU> ++p;
FLU> }
FLU> p += nOffset;
FLU> }
FLU> }
FLU> }
FLU> catch(Exception e)
FLU> {
FLU> this._strErrorString = e.Message;
FLU> }
FLU> bmp.UnlockBits(bmpData);
FLU> Image testImg = Image.FromHbitmap(bmp.GetHbitmap());
FLU> return testImg;
FLU> }
FLU>
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>