我正在用C#做一些图像处理代码,但我不能使用任何库或类似GNU的代码。
UnsharpMask函数依赖于高斯模糊,高斯模糊又依赖于傅立叶变换。我为所有这些编写了代码并且工作正常,但总而言之,我需要删除FFT函数。有没有办法以另一种方式执行非锐化掩码,可能不需要FFT?
答案 0 :(得分:3)
高斯模糊的傅里叶变换部分只是用高斯核进行卷积的有效方法。您可以使用具有适当标准偏差和大小的高斯内核的直接卷积来实现(奇数大小的内核大约是标准偏差的5-6倍左右)。
答案 1 :(得分:2)
我找到了符合我需求的解决方案。
我尝试了几种快速而肮脏的模糊算法,发现Box Blur和Stack 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/