原文:Win8 Metro(C#)数字图像处理--2.37Wallis图象锐化



[函数名称]

Wallis图象锐化        WallisSharpen(WriteableBitmap src)

[算法说明]

 Wallis锐化算法是在拉普拉斯算子的基础上,考虑人的视觉特性中包含一个对数环节,因此在锐化时,采用对数处理的方法进行改进,公式如下:

<strong><span style="font-size:14px;">[函数代码]</span></strong>
/// <summary>
/// Wallis sharpen process.
/// </summary>
/// <param name="src">The source image.</param>
/// <returns></returns>
public static WriteableBitmap WallisSharpen(WriteableBitmap src)////37Wallis锐化函数
{
if (src != null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap sharpenImage = new WriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
byte[] tempMask = (byte[])temp.Clone();
double b = 0, g = 0, r = 0, srR = 0, srG = 0, srB = 0;
for (int j = 1; j < h - 1; j++)
{
for (int i = 4; i < w * 4 - 4; i += 4)
{ srB = tempMask[i + j * w * 4];
srG = tempMask[i + 1 + j * w * 4];
srR = tempMask[i + 2 + j * w * 4];
b = 46*Math.Abs(5 * Math .Log(srB+1) - Math .Log(tempMask[i - 4 + j * w * 4]+1) - Math .Log(tempMask[i + 4 + j * w * 4]+1) - Math .Log(tempMask[i + (j - 1) * w * 4]+1) - Math .Log(tempMask[i + (j + 1) * w * 4]+1));
g = 46*Math.Abs(5 * Math .Log(srG+1) - Math .Log(tempMask[i - 4 + 1 + j * w * 4]+1) - Math .Log(tempMask[i + 4 + 1 + j * w * 4]+1) - Math .Log(tempMask[i + 1 + (j - 1) * w * 4]+1) - Math .Log(tempMask[i + 1 + (j + 1) * w * 4]+1));
r = 46*Math.Abs(5 * Math .Log(srR+1) - Math .Log(tempMask[i - 4 + 2 + j * w * 4]+1) - Math .Log(tempMask[i + 4 + 2 + j * w * 4]+1) - Math .Log(tempMask[i + 2 + (j - 1) * w * 4]+1) - Math .Log(tempMask[i + 2 + (j + 1) * w * 4]+1));
temp[i + j * w * 4] = (byte)(b > 0 ? (b < 255 ? b : 255) : 0);
temp[i + 1 + j * w * 4] = (byte)(g > 0 ? (g < 255 ? g : 255) : 0);
temp[i + 2 + j * w * 4] = (byte)(r > 0 ? (r < 255 ? r : 255) : 0);
b = 0; g = 0; r = 0; srR = 0; srG = 0; srB = 0;
}
}
Stream sTemp = sharpenImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return sharpenImage;
}
else
{
return null;
}
}
<strong><span style="font-size:14px;">[图象效果]</span></strong>


Win8 Metro(C#)数字图像处理--2.37Wallis图象锐化的更多相关文章

  1. Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法

    原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3 ...

  2. Win8 Metro(C#)数字图像处理--4图像颜色空间描述

    原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述  图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary> / ...

  3. Win8 Metro(C#)数字图像处理--3.2图像方差计算

    原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...

  4. Win8 Metro(C#)数字图像处理--3.3图像直方图计算

    原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary> /// Get the array of histrgram. /// </sum ...

  5. Win8 Metro(C#)数字图像处理--3.4图像信息熵计算

    原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...

  6. Win8 Metro(C#)数字图像处理--3.5图像形心计算

    原文:Win8 Metro(C#)数字图像处理--3.5图像形心计算 /// <summary> /// Get the center of the object in an image. ...

  7. Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效

    原文:Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效 /// <summary> /// Image merge process. /// </summar ...

  8. Win8 Metro(C#)数字图像处理--3.1图像均值计算

    原文:Win8 Metro(C#)数字图像处理--3.1图像均值计算 /// <summary> /// Mean value computing. /// </summary> ...

  9. Win8 Metro(C#)数字图像处理--2.74图像凸包计算

    原文:Win8 Metro(C#)数字图像处理--2.74图像凸包计算 /// <summary> /// Convex Hull compute. /// </summary> ...

随机推荐

  1. [React Router v4] Use Regular Expressions with Routes

    We can use regular expressions to more precisely define the paths to our routes in React Router v4. ...

  2. Python将被加入高考科目?你怎么看?

    今天看到这样的一则新闻:不禁感叹,人工智能这股风来的太快,已经掀起全民学习Python的浪潮. 2017年中观察:看上去这个大纲内容基本是这样了,但是实行年份可能要往后推了,不在2017年执行了(据说 ...

  3. 实际工程Quartz与Spring设计与实现一体化的热部署

    1.需求说明 主要负责项目任务调度.使用Quartz.以Spring为辅助. 如今有这样一个需求:我们不知道管理员想设定过多厂时间运行主任务,须要在配置文件定义.在配置好后须要马上运行.实现热部署. ...

  4. 【BZOJ 1018】 [SHOI2008]堵塞的交通traffic

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1018 [题意] [题解] 按照这里的题解写的http://blog.csdn.net/ ...

  5. 【序列操作I】线段树

    题目描述 Lxhgww 最近收到了一个 01 序列,序列里面包含了 n(1≤n≤105)个数,这些书要么是 0,要么是 1,现在对这个序列有五种变换操作和询问操作:1. 0 a b ,把[a,b]区间 ...

  6. windows 7、Windows10 系统目录迁移,修改安装的默认路径:Users,Program Files,ProgramData

    Tips:本文只针对Win7.windows 10系统有过测试,其他系统尚未测试:不过大家想尝试也可.这次实验是我做的全新 win7_32位系统来测试的,windows10当然64位的系统也可.至少现 ...

  7. Android如何获得系统版本

    如何获得Android系统版本 项目移植中,遇到需要区分不同系统版本的问题.于是查找相关方法如下: android.os.Build类提供了当前系统信息. 可用if (Build.VERSION.SD ...

  8. WPF中MVVM模式的 Event 处理

    WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答案就是使用EventTrigger可以实现. 继 ...

  9. HTC VIVE 虚拟现实眼镜VR游戏体验

    HTC的VIVE入手一段时间了,体验了几个免费的VR游戏,效果还不错,分享一下. 1. VIVE主要部件 VIVE的主要部件有3个,分别是头盔,两个无线控制手柄和两个定位器. 1.1 头盔 头盔整体照 ...

  10. Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

    PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...