Win8Metro(C#)数字图像处理--2.29图像除法运算
原文: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图像除法运算的更多相关文章
- Win8Metro(C#)数字图像处理--2.27图像加法运算
原文:Win8Metro(C#)数字图像处理--2.27图像加法运算 [函数名称] 图像加法函数AddProcess(WriteableBitmap src, WriteableBitmap a ...
- Win8Metro(C#)数字图像处理--2.3图像反色
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明] 反色公式如下: ...
- Win8Metro(C#)数字图像处理--2.33图像非线性变换
原文:Win8Metro(C#)数字图像处理--2.33图像非线性变换 [函数名称] 图像非线性变换函数NonlinearTransformProcess(WriteableBitmap src ...
- Win8Metro(C#)数字图像处理--2.32图像曝光算法
原文:Win8Metro(C#)数字图像处理--2.32图像曝光算法 [函数名称] 图像曝光函数ExposureProcess(WriteableBitmap src,int exposureV ...
- Win8Metro(C#)数字图像处理--2.28图像乘法运算
原文:Win8Metro(C#)数字图像处理--2.28图像乘法运算 [函数名称] 图像乘法函数MultiplicationProcess(WriteableBitmap src, Writea ...
- Win8Metro(C#)数字图像处理--2.26图像减法
原文:Win8Metro(C#)数字图像处理--2.26图像减法 [函数名称] 图像减法函数SubtractionProcess(WriteableBitmap src, WriteableBi ...
- Win8Metro(C#)数字图像处理--2.19图像水平镜像
原文:Win8Metro(C#)数字图像处理--2.19图像水平镜像 [函数名称] 图像水平镜像函数MirrorXProcess(WriteableBitmap src) [函数代码] ...
- Win8Metro(C#)数字图像处理--2.20图像垂直镜像
原文:Win8Metro(C#)数字图像处理--2.20图像垂直镜像 [函数名称] 图像垂直镜像函数MirrorYProcess(WriteableBitmap src) [函数代码] ...
- Win8Metro(C#)数字图像处理--2.18图像平移变换
原文:Win8Metro(C#)数字图像处理--2.18图像平移变换 [函数名称] 图像平移变换函数TranslationProcess(WriteableBitmap src,int x,in ...
随机推荐
- [CSS] Change the auto-placement behaviour of grid items with grid-auto-flow
We can change the automatic behaviour of what order our grid items appear. We can even re-order the ...
- iOS 下APNS推送处理函数具体解释
相比起Android,iOS在推送方面无疑惯例得更好.APNS(Apple Push Notification Service)是苹果公司提供的消息推送服务.其原理就是.第三方应用将要推送给用户的信息 ...
- Android Thread.setDaemon设置说明
Thread.setDaemon的用法,经过学习以后了解: 1. setDaemon需要在start方法调用之前使用 2. 线程划分为用户线程和后台(daemon)进程,setDaemon将线程设置为 ...
- js调用百度地图api
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Hive的日期函数
1.unix时间戳转时间函数 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string 说明: 转化UNIX时间戳(从1970-0 ...
- 一起学Python:字典介绍
字典介绍 想一想: 如果有列表 nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi']; 需要对"xiaoWang"这个名字写错了,通过代码修 ...
- redis举例调用两种方式方式
在以下的代码演示样例中.将给出两种最为经常使用的Redis命令操作方式,既普通调用方式和基于管线的调用方式. 注:在阅读代码时请留意凝视. 1 #include <stdio.h> ...
- 让C#语言充当自身脚本!——.NET中的动态编译
原文:让C#语言充当自身脚本!--.NET中的动态编译 代码的动态编译并执行是.NET平台提供给我们的很强大的一个工具,用以灵活扩展(当然是面对内部开发人员)复杂而无法估算的逻辑,并通过一些额外的代码 ...
- 【20.35%】【codeforces 651D】Image Preview
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- WPF 高性能笔
原文:WPF 高性能笔 本文告诉大家WPF的INK的实现,和如何做一个高性能的笔. 高性能的笔迹在 WPF 包含两个部分,一个是就是输入,第二个就是渲染. 如果需要经过路由事件才收到输入,如果有人在路 ...