概述
2.8图像线性变换
[函数名称]
图像线性变换函数LinearTransformProcess(WriteableBitmap src, double k,int v)
[函数代码]
///<summary>
/// Linear transform process(f=kf+v).
///</summary>
///<param name="src">Source image.</param>
///<param name="k">Parameter,from 0 to 5.</param>
///<param name="v">Parameter,from -128 to 128.</param>
///<returns></returns>
publicstaticWriteableBitmap LinearTransformProcess(WriteableBitmap src,double k,int v)8线性变换处理
{
if(src!=null )
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap linearImage =newWriteableBitmap(w,h);
byte[] temp = src.PixelBuffer.ToArray();
for (int i = 0; i < temp.Length; i +=4)
{
temp[i] = (byte)(((k * temp[i] + v + 0.5) > 255 ? 255 : (k * temp[i] + v + 0.5)) < 0 ? 0 : ((k * temp[i] + v + 0.5) > 255 ? 255 : (k * temp[i] + v + 0.5)));
temp[i+1] = (byte)(((k * temp[i+1] + v + 0.5) > 255 ? 255 : (k * temp[i+1] + v + 0.5)) < 0 ? 0 : ((k * temp[i+1] + v + 0.5) > 255 ? 255 : (k * temp[i+1] + v + 0.5)));
temp[i+2] = (byte)(((k * temp[i+2] + v + 0.5) > 255 ? 255 : (k * temp[i+2] + v + 0.5)) < 0 ? 0 : ((k * temp[i+2] + v + 0.5) > 255 ? 255 : (k * temp[i+2] + v + 0.5)));
}
Stream sTemp = linearImage.PixelBuffer.AsStream();
sTemp.Seek(0,SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return linearImage;
}
else
{
returnnull;
}
}
[图像效果]
最后
以上就是清脆小甜瓜为你收集整理的Win8Metro(C#)数字图像处理--2.8图像线性变换的全部内容,希望文章能够帮你解决Win8Metro(C#)数字图像处理--2.8图像线性变换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复