【问题标题】:Preserve Color with Gaussian Blurring and Sobel Operators使用高斯模糊和 Sobel 算子保留颜色
【发布时间】:2017-07-18 03:48:18
【问题描述】:

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

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

以前,我只是将像素数据中的红色分量作为 RGB 的灰度值。

我需要先将我的 RGB 图像转换为灰度图像吗?

如果没有,我如何将所有 3 个颜色通道与每个运算符的内核一起使用?

【问题讨论】:

  • 您希望在所有三个渠道上实现什么? Sobel 算子是一个导数算子,因此它告诉您相邻像素之间颜色值的变化。您真的需要特别了解红色、绿色或蓝色值的变化吗?如果没有,只需转换为灰度。 “保留颜色”是什么意思?你可以例如从灰度创建一个边缘图像,用作遮罩,然后用边缘图像遮罩原始图像,边缘图像将在边缘点显示图像的原始颜色。

标签: c++ opencv image-processing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2018-05-30
    • 2011-12-07
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多