使用高斯模糊和Sobel算子保留颜色

时间:2017-07-18 03:48:18

标签: c++ opencv image-processing

我想在图像上使用高斯模糊作为使用sobel边缘检测滤波器的预处理步骤。

我之前已经在灰度图像上有效地实现了sobel和高斯模糊算子,但是,我从未试图在彩色图像上使用它们。

以前,我刚刚拍摄了像素数据的红色成分,因为RGB在灰度级中都是相同的。

我是否需要先将RGB图像转换为灰度图像?

如果没有,我如何为每个操作符使用内核的所有3个颜色通道?

1 个答案:

答案 0 :(得分:1)

您可以单独对每个颜色通道应用线性滤镜。高斯模糊和Sobel算子是线性滤波器。通常,将三个通道分离为三个灰度值图像,并单独过滤它们,然后将三个结果组合成新的RGB图像。但是,如果您的软件允许在多通道图像上应用卷积,则您不需要手动执行此过程。

请注意,应用高斯模糊然后应用Sobel算子来确定渐变是次优的。最好使用高斯导数直接计算梯度。 Here is an old blog post of mine that describes Gaussian derivatives。简而言之,应用具有高斯导数的卷积(可以通过分析和样本确定)得到平滑图像的精确导数。请注意,高斯是可分离的(它的导数也是可分的),这意味着2D卷积可以作为两个1D卷积应用,从而节省了大量的计算。