filter2d()与高斯核和高斯模糊()的区别

时间:2012-01-26 14:43:03

标签: c++ opencv filtering gaussian

我是opencv的新手。我应该为涉及使用2D低通高斯滤波器的项目执行操作。我使用的OpenCV是2.2,里面有两个函数:filter2d()和GaussianBlur()。

执行相同的工作?让我解释一下,如果filter2d()步骤使用()创建高斯内核getGaussiankernel并应用过滤器并直接用GaussianBlur()运行它,我会得到相同的结果吗? 很明显,我将为两个内核函数采用相同的值。

2 个答案:

答案 0 :(得分:2)

GaussianBlur()只是具有相同内核值的更复杂的设置filter2d()的快捷方式。它以相同的速度执行相同的操作,调用相同的核心功能。

答案 1 :(得分:0)

您可能会看到的差异是filter2D执行互相关而不是卷积运算。当使用simetrical kernels / filters时,X-相关和卷积给出相同的结果。为了使用内核执行卷积,您需要将其翻转并将锚点设置为内核的中间位置。请参阅文档:http://opencv.willowgarage.com/documentation/cpp/image_filtering.html#cv-filter2d

我不确定从那里出现的差异,但我需要在我的应用程序中使用卷积,这就是我实现它的方式,并且它按预期工作。