原文: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. Google VR技术大揭秘

    VR 虚拟现实(Virtual Reality)技术是一种能够创建和体验虚拟世界的计算机仿真系统.它利用计算机生成一种模拟环境.是一种多源信息融合的.交互式的三维动态视景和实体行为的系统仿真, 使用户 ...

  2. QPalette实例教程(QWidget自带的颜色设置工具,对Window的各个部分都可设置颜色)

    QPalette是一款非常好用的颜色设置工具: 头文件:#include <QPalette> (^-^我没有用这个头文件也可以使用QPalette) 常用函数: void setBrus ...

  3. Qt Roadmap for 2018(对3D有很多改进)

    When it comes to new features, we have many things ongoing related to graphics, so I’ll start with t ...

  4. eclipse 编写scala代码时提示computing additional info

    window->proference,把方框中那两个选项去掉不选,保存即可(或者只选择scala completions(java sources)),(只不过这么做之后就没有代码提示了)遇到这 ...

  5. 解决eclipse 保存卡顿的问题

    开发十年,就只剩下这套Java开发体系了 >>>   eclipse 如果启动慢,还可以接收. 可是如果是 保存的时候卡顿, 有时候会 卡顿 3秒-5 秒的,感觉到写代码特别的不顺畅 ...

  6. 《大话操作系统——扎实project实践派》(8.2)(除了指令集.完)

  7. webcollector 2.x 爬取搜狗搜索结果页

    /** * 使用搜狗搜索检索关键字并爬取结果集的标题 * @author tele * */ public class SougouCrawler extends RamCrawler{ public ...

  8. DOS批处理

    DOS批处理命令-注释   注释是每个程序中不可或缺的(不是对计算机来说,而是对我们这些程序员阅读代码来说) 语法: ①rem 这是批处理的注释命令,rem后面的内容全部是注释 例:rem 这是一行注 ...

  9. Arcgis api for javascript学习笔记 - 不改变默认端口(6080)情况下,外网访问Arcgis Server 发布的接口

    Arcgis Server发布的地图服务地址默认端口号是6080,假设本机上只对80端口做了外网映射,在IIS中部署了一个网站绑定了80端口,那么网站中某个页面通过arcgis api for js ...

  10. LaTeX —— 特殊符号与数学字体

    1. 特殊符号 ℓ(\ell):用于和大小的 I 和 数字 1 相区分 R(\Re) ∇(\nabla):微分算子 2. 数学字体 mathbb:blackboard bold,黑板粗体 mathca ...