gpt4 book ai didi

c# - 高斯模糊C#实现(类似OpenCV)

转载 作者:行者123 更新时间:2023-11-28 03:14:27 35 4
gpt4 key购买 nike

我有个小问题。我想在 C# 中实现高斯卷积,但它(出于某些目的)具有与 EmguCV 的高斯模糊相同的结果(这也意味着与 OpenCV 相同)。内核值的计算在高斯卷积中应该始终相同,我唯一需要知道的是,OpenCV 实现如何计算内核大小。我仔细查看了 OpenCV 源代码,但我对 C++ 的经验很少,这就是我没有找到这个的原因。也许其他人可以帮助我解决这个问题。OpenCV 实现对“原始”是否有任何其他更改?

最佳答案

高斯模糊是用特定大小的高斯核进行卷积(它是一个参数)。

所以卷积的步骤是:

make Gaussian kernel
convolve image

据我所知,如果内核大小大于预定义的阈值(我认为是 7),OpenCV 会使用一些优化。然后不是在空间域而是在频域执行卷积。

步骤是:

calculate result image size (needs to be power of 2 -> look at FFT)
transform image to frequency domain (e.g. FFT)
transform kernel to frequency domain (e.g. FFT)
multiply those matrices (element by element)
transform result matrix in spatial domain (e.g. inverse FFT)
clip matrix (convolution in frequency domain is cyclic convolution)

如果您只想要基本版本,请查看:AForge.NET 库中的 GaussianBlur.cs 类(首先尝试使用该类以查看是否符合您的需求)文档:

http://www.aforgenet.com/framework/docs/html/f074e0dd-865c-fd5f-ba0a-80e336a0eaea.htm

关于c# - 高斯模糊C#实现(类似OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382151/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com