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#程序设计有所帮助。