C#图像线性变换的方法
本文实例讲述了C#图像线性变换的方法。分享给大家供大家参考。具体如下:
//定义图像线性运算函数(y=kx+v)
privatestaticBitmapLinearOP(Bitmapa,doublek,doublev)
{
Rectanglerect=newRectangle(0,0,a.Width,a.Height);
System.Drawing.Imaging.BitmapDatasrcData=a.LockBits(rect,System.Drawing.Imaging.ImageLockMode.ReadWrite,a.PixelFormat);
IntPtrptr=srcData.Scan0;
intbytes=0;
bytes=srcData.Stride*a.Height;
byte[]grayValues=newbyte[bytes];
System.Runtime.InteropServices.Marshal.Copy(ptr,grayValues,0,bytes);
inttemp=0;
for(inti=0;i<bytes;i++)
{
temp=(int)(k*grayValues[i]+v+0.5);
temp=(temp>255)?255:temp<0?0:temp;
grayValues[i]=(byte)temp;
}
System.Runtime.InteropServices.Marshal.Copy(grayValues,0,ptr,bytes);
a.UnlockBits(srcData);
returna;
}
希望本文所述对大家的C#程序设计有所帮助。