【问题标题】:Apply GaussianBlur to Individual Pixels对单个像素应用 GaussianBlur
【发布时间】:2013-04-14 11:27:22
【问题描述】:

我正在使用 OpenCV 在 C++ 中编写一个应用程序,以将高斯滤波器应用于图像中的单个像素。例如,我循环遍历图像中的每个像素,如果它们匹配特定的 RGB 值,我想仅对这些像素应用高斯算法,以便仅在图像的这些部分周围发生模糊。

但是,我很难找到执行此操作的方法。 OpenCV 库提供的GaussianBlur() 函数只允许我模糊整个图像,而不是简单地将算法和内核一次应用于一个像素。有没有人对我如何实现这一点有任何想法(例如,有没有我不知道的另一种方法)?我希望我不必自己编写整个算法来将其应用于单个像素。

【问题讨论】:

    标签: c++ opencv blur gaussian


    【解决方案1】:

    我的一个朋友想出了一个很好的解决方案:

    • 克隆原始矩阵
    • GaussianBlur() 应用于克隆
    • 将每个像素与 RGB 值进行比较
    • 如果匹配,则将原始像素替换为克隆像素

    简直不敢相信这有多么简单。

    【讨论】:

    • 这确实是一个巧妙的解决方案,但它可能不是最有效的。你知道有多少像素实际上会通过选择过滤器吗?如果大图像中只有几个像素,最好只手动对这些像素应用模糊。
    【解决方案2】:

    如果您只需要在几个像素上应用高斯模糊,您可以自己编写代码。它比你想象的要容易得多,只需要几行。这是一个简单的stencil operator,其内核使用gaussian function。您只需要像素及其邻居的坐标。

    其余的都是直截了当的。这是一个高斯矩阵的示例,您可以轻松编码或使用高斯函数生成:

    简而言之,它只是相邻值的加权平均值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多