Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
原文:Win8 Metro(C#)数字图像处理--2.42图像光照效果算法
[函数名称]
图像光照效果 SunlightProcess(WriteableBitmap src,int X,int Y,float thresould)
[算法说明]
图像光照效果就是在图像中添加上一个太阳光源,以此模仿光照条件。主要算法包括:
1光源选择;2光照像素值求取。
1,光源选择。我们假设光源位置坐标为S(X,Y),其中光源坐标一定要保证在图像大小
范围内。有了光源位置,我们就可以来构建一个圆形区域模拟光照了。我们设定光源半
径为R,那么,光照范围就是以S(X,Y)为圆心,以R为半径的圆了。
根据光源特性,在图像中表现为中间靠近圆心最亮,亮度延半径方向向四周逐渐减弱。
因此,我们根据光源圆形的范围内像素距离圆心的欧几里得距离来构建线性变换的公式,
假设欧几里得距离为D,变换后的像素值为f,则公式如下:
/// <summary>
/// Sun light process.
/// </summary>
/// <param name="src">The source image.</param>
/// <param name="A">X location of light source.</param>
/// <param name="B">Y location of light source.</param>
/// <param name="thresould">Light intensity value.</param>
/// <returns></returns>
public static WriteableBitmap SunlightProcess(WriteableBitmap src,int X,int Y,float thresould)////41图像光照函数
{
if (src != null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap srcImage = new WriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
byte[] tempMask = (byte[])temp.Clone();
double b = 0, g = 0, r = 0;
if (X >= w || Y >= h || X < 0 || Y < 0)
{
X = w / 2;
Y = h / 2;
}
Point Cen = new Point(X, Y);
int R = Math.Min(X, Y);
float curR = 0;
float pixelValue = 0;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i ++)
{
b = tempMask[i * 4 + j * w * 4];
g = tempMask[i * 4 + 1 + j * w * 4];
r = tempMask[i * 4 + 2 + j * w * 4];
curR=(float)Math .Sqrt(Math .Pow((i-Cen .X ),2)+Math .Pow ((j-Cen.Y ),2));
if (curR < R)
{
pixelValue = thresould * (1.0f - curR / R);
b = b + pixelValue;
g = g + pixelValue;
r = r + pixelValue;
temp[i*4 + j * w * 4] = (byte)(b > 0 ? (b < 255 ? b : 255) : 0);
temp[i * 4 + 1 + j * w * 4] = (byte)(g > 0 ? (g < 255 ? g : 255) : 0);
temp[i * 4 + 2 + j * w * 4] = (byte)(r > 0 ? (r < 255 ? r : 255) : 0);
b = 0; g = 0; r = 0;
}
}
}
Stream sTemp = srcImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return srcImage;
}
else
{
return null;
}
}
Win8 Metro(C#)数字图像处理--2.42图像光照效果算法的更多相关文章
- Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
原文:Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法 [函数名称] 图像雾化 AtomizationProcess(WriteableBitmap src,i ...
- Win8 Metro(C#)数字图像处理--3.2图像方差计算
原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...
- Win8 Metro(C#)数字图像处理--3.3图像直方图计算
原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary> /// Get the array of histrgram. /// </sum ...
- Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...
- Win8 Metro(C#)数字图像处理--3.5图像形心计算
原文:Win8 Metro(C#)数字图像处理--3.5图像形心计算 /// <summary> /// Get the center of the object in an image. ...
- Win8 Metro(C#)数字图像处理--3.1图像均值计算
原文:Win8 Metro(C#)数字图像处理--3.1图像均值计算 /// <summary> /// Mean value computing. /// </summary> ...
- Win8 Metro(C#)数字图像处理--2.74图像凸包计算
原文:Win8 Metro(C#)数字图像处理--2.74图像凸包计算 /// <summary> /// Convex Hull compute. /// </summary> ...
- Win8 Metro(C#)数字图像处理--2.68图像最小值滤波器
原文:Win8 Metro(C#)数字图像处理--2.68图像最小值滤波器 /// <summary> /// Min value filter. /// </summary> ...
- Win8 Metro(C#)数字图像处理--2.52图像K均值聚类
原文:Win8 Metro(C#)数字图像处理--2.52图像K均值聚类 [函数名称] 图像KMeans聚类 KMeansCluster(WriteableBitmap src,i ...
随机推荐
- hadoop集群ambari搭建(1)之ambari-server安装
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应.管理和监控. Ambari眼下已支持大多数Hadoop组件,包含HDFS.MapReduce.Hive.Pi ...
- Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
摘要: 转载请注明出处:http://blog.csdn.net/allen315410/article/details/42914501 概述 今天这篇博客将记录一些关于DrawerL ...
- 【hdu 1864】最大报销额
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- activiti自己定义流程之整合(五):启动流程时获取自己定义表单
流程定义部署之后,自然就是流程定义列表了,但和前一节一样的是,这里也是和之前单独的activiti没什么差别.因此也不多说.我们先看看列表页面以及相应的代码,然后在一步步说明点击启动button时怎样 ...
- [Postgres] Filter Data in a Postgres Table with Query Statements
We have all this data, but how do we answer questions about it? In this lesson we’ll learn how to fi ...
- JavaScript经典面试题(二)
前言: 近年来T行业就业者越来越多,有关于编程行业的高薪工作也变得越来越难找,竞争力越来越大,想要在众多的应聘者当中脱颖而出,面试题和笔试题一定要多加研究和琢磨,以下记录的是自己的面试过程之中遇到的一 ...
- 个人官网第8次升级(新功能、用户体验、修复bug、系统优化)
1.新功能. 操作日志和搜索日志的Excel报表下载. 2.用户体验. 如果是通过搜索,进入到一篇内容, 搜索关键词需要高亮. 比如,搜索"程序员"出现若干内容链接,打开链接的页面 ...
- css中背景 字体 文体属性练习
@charset "utf-8"; body{ background-color:#332244;/*//背景颜色*/ background-image:("../kk. ...
- 课后作业 04 --DateTime应用,判断多久后生日之类
try { Console.Write("请以年-月-日的形式输入您的生日:"); string strA = Console.ReadLine(); DateTime bir = ...
- scala 伴生对象与伴生类
package cn.scala_base.oop.scalaobject import java.security.cert.Extension /** * object的构造器必须是无参的,且且构 ...