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