4

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

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

4

2 回答 2

4

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

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

简直不敢相信那是多么简单。

于 2013-04-21T16:36:01.637 回答
1

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

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

高斯模糊矩阵示例

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

于 2013-04-21T15:28:43.603 回答