原文: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图像除法运算的更多相关文章

  1. Win8Metro(C#)数字图像处理--2.27图像加法运算

    原文:Win8Metro(C#)数字图像处理--2.27图像加法运算  [函数名称] 图像加法函数AddProcess(WriteableBitmap src, WriteableBitmap a ...

  2. Win8Metro(C#)数字图像处理--2.3图像反色

    原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明]     反色公式如下: ...

  3. Win8Metro(C#)数字图像处理--2.33图像非线性变换

    原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换  [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...

  4. Win8Metro(C#)数字图像处理--2.32图像曝光算法

    原文:Win8Metro(C#)数字图像处理--2.32图像曝光算法  [函数名称] 图像曝光函数ExposureProcess(WriteableBitmap src,int exposureV ...

  5. Win8Metro(C#)数字图像处理--2.28图像乘法运算

    原文:Win8Metro(C#)数字图像处理--2.28图像乘法运算  [函数名称] 图像乘法函数MultiplicationProcess(WriteableBitmap src, Writea ...

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

    原文:Win8Metro(C#)数字图像处理--2.26图像减法  [函数名称] 图像减法函数SubtractionProcess(WriteableBitmap src, WriteableBi ...

  7. Win8Metro(C#)数字图像处理--2.19图像水平镜像

    原文:Win8Metro(C#)数字图像处理--2.19图像水平镜像  [函数名称] 图像水平镜像函数MirrorXProcess(WriteableBitmap src) [函数代码]      ...

  8. Win8Metro(C#)数字图像处理--2.20图像垂直镜像

    原文:Win8Metro(C#)数字图像处理--2.20图像垂直镜像  [函数名称] 图像垂直镜像函数MirrorYProcess(WriteableBitmap src) [函数代码]      ...

  9. Win8Metro(C#)数字图像处理--2.18图像平移变换

    原文:Win8Metro(C#)数字图像处理--2.18图像平移变换  [函数名称] 图像平移变换函数TranslationProcess(WriteableBitmap src,int x,in ...

随机推荐

  1. mysqlsla安装

    #下载mysqlsla https://github.com/daniel-nichter/hackmysql.com   yum install perl-ExtUtils-CBuilder per ...

  2. Android BlueDroid(一):BlueDroid概述

    关键词:bluedroid bluez作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!)欢迎指正错误.共同学习.共同进步!! 一.名词解释:(实用信息添加中--) BTI F: ...

  3. JS调用ATL COM中的C++接口的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 首先创建一个ATL COM对象,其过程参考下面文章: C#调用ATLCOM 其实给COM对象添加方法和属性可以不用界面 ...

  4. numpy tricks(二)—— 删除多维数组的行或列

    numpy.delete numpy 下的多维数组,如果要删除其中的某些行,或某些列,不可以用置空的方式,进行设置: A[1, :] = None, ⇒ 会将 A 中的第一行数据全部置为 Nan 1. ...

  5. Silverlight三维透视+倒影效果

    原文:Silverlight三维透视+倒影效果 知识概要: 1.使用2D内容创建3D体验,了解图像的PlaneProjection属性,具体内容读者自己查看文档. 2.Silverlight图形图形的 ...

  6. 【codeforces 768A】Oath of the Night's Watch

    [题目链接]:http://codeforces.com/contest/768/problem/A [题意] 让你统计这样的数字x的个数; x要满足有严格比它小和严格比它大的数字; [题解] 排个序 ...

  7. BFKit:对常用 UIButton,UIColor,UIDevice,UIFont ,UIImage 等开发类进行了扩展

    BFKit对常用于开发的类进行了扩展,整合了多个常用的控件和开发所需要的功能,是一个通用性的类库.集成后可以帮助更快的App开发.有兴趣的同学可以看看哦. http://code4app.com/io ...

  8. erlang 中带下划线变量的使用

    在erlang里'_'是一个特殊的变量(其实erlang里不应该叫“变”量,照顾习惯,姑且这么叫吧),它可以代替任何东西,在match的时候非常有用,例如: {A, _, [B|_], {B}} =  ...

  9. sitecore-CMS

    安装sitecore数据库和客户端到本机   (提前先装好数据库和IIS) 安装教程下载:http://download.csdn.net/detail/qq1162195421/6436799 安装 ...

  10. 【a603】加工生产调度

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加 ...