博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win8 Metro(C#)数字图像处理--2.37Wallis图象锐化
阅读量:5764 次
发布时间:2019-06-18

本文共 2445 字,大约阅读时间需要 8 分钟。

原文:



[函数名称]

Wallis图象锐化        WallisSharpen(WriteableBitmap src)

[算法说明]

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

[函数代码]        ///         /// Wallis sharpen process.        ///         /// The source image.        /// 
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; } }[图象效果]
你可能感兴趣的文章
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>
DLA实现跨地域、跨实例的多AnalyticDB读写访问
查看>>
实时编辑
查看>>
北漂之毕业裁员后的又一波奇遇
查看>>
Python数据分析:pandas常用函数
查看>>
KVO原理分析及使用进阶
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【JS基础】初谈JS现有的数据类型
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
Microsoft发布了Azure Bot Service和LUIS的GA版
查看>>
Google发布Puppeteer 1.0
查看>>
.NET开源现状
查看>>
Dave Farley:持续交付的基本原理
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>