编码没有傅立叶函数的UnsharpMask

时间:2010-01-18 15:10:52

标签: c# image-processing fft gaussian

我正在用C#做一些图像处理代码,但我不能使用任何库或类似GNU的代码。

UnsharpMask函数依赖于高斯模糊,高斯模糊又依赖于傅立叶变换。我为所有这些编写了代码并且工作正常,但总而言之,我需要删除FFT函数。有没有办法以另一种方式执行非锐化掩码,可能不需要FFT?

3 个答案:

答案 0 :(得分:3)

高斯模糊的傅里叶变换部分只是用高斯核进行卷积的有效方法。您可以使用具有适当标准偏差和大小的高斯内核的直接卷积来实现(奇数大小的内核大约是标准偏差的5-6倍左右)。

请参阅Convolution on Wikipedia

答案 1 :(得分:2)

我找到了符合我需求的解决方案。

我尝试了几种快速而肮脏的模糊算法,发现Box BlurStack Blur都足够了。 Stack Blur有一个更清晰的模糊然后Box Blur,比Gaussian快几倍。所以我可以用任何一个代替高斯。

所以现在我可以摆脱所有的FFT代码混乱,并用更易于管理的东西替换它。这个解决方案可能不适合所有人,但由于UnsharpMask基于模糊,我并不觉得它太精确了。

顺便说一句,Gimp的高斯模糊似乎也避免了FFT。

答案 2 :(得分:0)

我相信即使您不能使用任何库或GNU东西,您也可以查看它们的实现并尝试根据您的要求重现类似的代码?

openCV功能列表。在这里查看功能详细信息,然后查看头文件中的实现细节。 http://opencv.willowgarage.com/documentation/genindex.html

另外,如果您对基于C#的实现感兴趣,我建议如下 http://aforgenet.com/framework/