我一直在尝试找到一个代码片段来在 C# 中做一个非锐化掩码,但找不到一个有效或完整的。我找到了一个 PHP 版本,但我想在 C# 中找到一个,然后再进行从 PHP 转换的所有艰苦工作。
我只是一个初学者。谁能指出我正确的方向?
我一直在尝试找到一个代码片段来在 C# 中做一个非锐化掩码,但找不到一个有效或完整的。我找到了一个 PHP 版本,但我想在 C# 中找到一个,然后再进行从 PHP 转换的所有艰苦工作。
我只是一个初学者。谁能指出我正确的方向?
AForge.NET Framework包括许多图像处理过滤器并支持插入您自己的过滤器。您可以在他们自己的图像处理实验室应用程序中看到它的实际效果。
更新:AForge.NET 有一个基于卷积的锐化过滤器(请参阅卷积过滤器),但没有提及不锐化掩码过滤器本身。再说一遍,您可以使用高斯模糊滤镜并从原始图像中减去结果,这基本上就是 unsharp mask 滤镜的作用。或者,基本的锐化可能足以满足您的需求。
更新:进一步看,AForge.NET 确实有一个高斯锐化,这似乎是一个不锐化蒙版过滤器的实现,你可以控制一些参数。
你愿意使用 FFT 吗?变换、删除或强调高频以品味、反转变换、如果需要的话与原始重新组合?那里几乎没有任何许可问题,因为 FFT 库比比皆是。
或者,您可以手动制作蒙版,根据需要改变大小和常数,然后将它们与图像像素进行卷积(嵌套的“for”循环......)。
这是一个 3x3x1 掩码作为文本文件,其尺寸在值之前给出:
//3x3x1
// x 大小
3
// y 大小
3
//z大小
1
//z = 0
2 3 2
3 5 3
2 3 2
//结尾
这可以扩展到 3 个维度(因此给出了 z 大小)。
最新版本的开源 C# 图像库具有不锐化蒙版滤镜(以及高斯模糊、亮度/对比度等),并且非常易于使用。
看看这个博客条目是否能帮助你朝着正确的方向前进:
http://anand-vinay.blogspot.com/2008/01/unsharp-mask-in-cnet.html
编辑:好的,该博客条目不起作用,抱歉链接错误。
我确实找到了一个完整的应用程序,您可以使用源代码下载它,其中包含我认为您正在寻找的代码。
Christian Graus 的C# 傻瓜图像处理第 2 部分包含源代码,以及如何进行不锐化的说明(假设您的意思是平滑)。整个系列很好地介绍了使用 GDI(在 C# 中)进行图像处理,并且不需要外部库。