Win8Metro(C#)数字图像处理--2.26图像减法

简介: 原文:Win8Metro(C#)数字图像处理--2.26图像减法  [函数名称] 图像减法函数SubtractionProcess(WriteableBitmap src, WriteableBitmap subSrc) [算法说明]  图像减法就是将两幅图像对应像素值进行减法运算,这里要求两幅图像大小最好相同。
原文: 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;

           }     

       }

[图像效果]

 

目录
相关文章
|
2月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
67 0
|
2月前
|
存储 传感器 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C#)
90 0
|
2月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)
50 0
|
2月前
|
监控 算法 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现获取图像并对图像进行边缘检测(C#)
51 1
|
2月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C#)
41 0
|
2月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)
48 0
|
2月前
|
存储 传感器 监控
Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK将相机图像高速保存到电脑内存(C#)
70 0
|
2月前
|
存储 数据处理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机图像转换由Mono10转换为Mono8(C#)
50 0
|
1月前
|
并行计算 算法 C#
C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
此文档是一个关于分形图像生成器的介绍,作者分享了个人开发的M-J算法集成及色彩创新,包括源代码和历史版本。作者欢迎有兴趣的读者留言交流,并提供了邮箱(delacroix_xu@sina.com)以分享资源。文中还展示了程序的发展历程,如增加了真彩色效果、圈选放大、历史记录等功能,并分享了几幅精美的分形图像。此外,还提到了程序的新特性,如导入ini文件批量输出图像和更新一批图片的功能。文档末尾附有多张程序生成的高分辨率分形图像示例。
|
1月前
|
存储 编解码 算法
C#.NET逃逸时间算法生成分形图像的毕业设计完成!晒晒功能
该文介绍了一个使用C#.NET Visual Studio 2008开发的程序,包含错误修复的Julia、Mandelbrot和优化过的Newton三种算法,生成色彩丰富的分形图像。作者改进了原始算法的效率,将内层循环的画点操作移至外部,提升性能。程序提供五种图形模式,支持放大缩小及颜色更新,并允许用户自定义画布大小以调整精度。还具备保存为高质JPG的功能。附有四张示例图片展示生成的分形效果。
417 3