C#图像线性变换的方法

本文实例讲述了C#图像线性变换的方法。分享给大家供大家参考。具体如下:

//定义图像线性运算函数(y=kx+v)

private static Bitmap LinearOP(Bitmap a, double k, double v)

{

Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);

System.Drawing.Imaging.BitmapData srcData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, a.PixelFormat);

IntPtr ptr = srcData.Scan0;

int bytes = 0;

bytes = srcData.Stride * a.Height;

byte[] grayValues = new byte[bytes];

System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);

int temp = 0;

for (int i = 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);

return a;

}

希望本文所述对大家的C#程序设计有所帮助。

以上是 C#图像线性变换的方法 的全部内容, 来源链接: utcz.com/z/330379.html

回到顶部