本文主要是介绍Win8Metro(C#)数字图像处理--2.29图像除法运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[函数名称]
图像除法函数DivisionProcess(WriteableBitmap src, WriteableBitmap divSrc)
[函数代码]
/// <summary>/// Division of two images./// </summary>/// <param name="src">The frist source image.</param>/// <param name="divSrc">The second source image.</param>/// <returns></returns>public static WriteableBitmap DivisionProcess(WriteableBitmap src,WriteableBitmap divSrc)29图像除法{if (src != null){int w = src.PixelWidth;int h = src.PixelHeight;WriteableBitmap divImage = new WriteableBitmap(w, h);byte[] temp = src.PixelBuffer.ToArray();byte[] divTemp = divSrc.PixelBuffer.ToArray();byte[] dst = new byte[w * h * 4];int r = 0, g = 0, b = 0, graySrc = 0, grayDiv = 0;for (int i = 0; i < w; i++){for (int j = 0; j < h; j++){graySrc = temp[i * 4 + (h - 1 - j) * w * 4] + temp[i * 4 + 1 + (h - 1 - j) * w * 4] + temp[i * 4 + 2 + (h - 1 - j) * w * 4];grayDiv = divTemp[i * 4 + (h - 1 - j) * w * 4] + divTemp[i * 4 + 1 + (h - 1 - j) * w * 4] + divTemp[i * 4 + 2 + (h - 1 - j) * w * 4];if (grayDiv + graySrc != 0){b = temp[i * 4 + (h - 1 - j) * w * 4] * (temp[i * 4 + (h - 1 - j) * w * 4] - divTemp[i * 4 + (h - 1 - j) * w * 4]) / (temp[i * 4 + (h - 1 - j) * w * 4] + divTemp[i * 4 + (h - 1 - j) * w * 4]);g = temp[i * 4 + 1 + (h - 1 - j) * w * 4] * (temp[i * 4 + 1 + (h - 1 - j) * w * 4] - divTemp[i * 4 + 1 + (h - 1 - j) * w * 4]) / (temp[i * 4 + 1 + (h - 1 - j) * w * 4] + divTemp[i * 4 + 1 + (h - 1 - j) * w * 4]);r = temp[i * 4 + 2 + (h - 1 - j) * w * 4] * (temp[i * 4 + 2 + (h - 1 - j) * w * 4] - divTemp[i * 4 + 2 + (h - 1 - j) * w * 4]) / (temp[i * 4 + 2 + (h - 1 - j) * w * 4] + divTemp[i * 4 + 2 + (h - 1 - j) * w * 4]);dst[i * 4 + j * w * 4] = (byte)(b > 0 ? (b < 255 ? b : 255) : 0);dst[i * 4 + 1 + j * w * 4] = (byte)(g > 0 ? (g < 255 ? g : 255) : 0);dst[i * 4 + 2 + j * w * 4] = (byte)(r > 0 ? (r < 255 ? r : 255) : 0);dst[i * 4 + 3 + j * w * 4] = 0;b = 0; g = 0; r = 0;}}}Stream sTemp = divImage.PixelBuffer.AsStream();sTemp.Seek(0, SeekOrigin.Begin);sTemp.Write(dst, 0, w * 4 * h);return divImage;}else{return null;} }
这篇关于Win8Metro(C#)数字图像处理--2.29图像除法运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!