本文主要是介绍Win8Metro(C#)数字图像处理--2.26图像减法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[函数名称]
图像减法函数SubtractionProcess(WriteableBitmap src, WriteableBitmap subSrc)
[算法说明]
图像减法就是将两幅图像对应像素值进行减法运算,这里要求两幅图像大小最好相同。
算法过程如下:
[函数代码]
///<summary>
/// Subtraction of two images(Both of them should be in same size).
///</summary>
///<param name="src">The first source image.</param>
///<param name="subSrc">The second source image.</param>
///<returns></returns>
publicstaticWriteableBitmap SubtractionProcess(WriteableBitmap src,WriteableBitmap subSrc)26图像减法
{
if (src !=null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap subImage =newWriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
byte[] subTemp = subSrc.PixelBuffer.ToArray();
byte[] dst =newbyte[w * h * 4];
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
dst[i * 4 + j * w * 4] = (byte)Math .Abs(temp[i * 4 + (h - 1 - j) * w * 4] - subTemp[i * 4 + (h - 1 - j) * w * 4]);
dst[i * 4 + 1 + j * w * 4] = (byte)Math .Abs(temp[i * 4 + 1 + (h - 1 - j) * w * 4] - subTemp[i * 4 + 1 + (h - 1 - j) * w * 4]);
dst[i * 4 + 2 + j * w * 4] = (byte)Math .Abs(temp[i * 4 + 2 + (h - 1 - j) * w * 4] - subTemp[i * 4 + 2 + (h - 1 - j) * w * 4]);
dst[i * 4 + 3 + j * w * 4] = 0;
}
}
Stream sTemp = subImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(dst, 0, w * 4 * h);
return subImage;
}
else
{
returnnull;
}
}
[图像效果]
这篇关于Win8Metro(C#)数字图像处理--2.26图像减法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!