对 RGB 图像执行阈值操作

Performing threshold operation on an RGB image

我需要对 RGB 图像执行阈值操作。我打算做的阈值应该如下所示。

如果一个像素的灰度等效值(计算为0.299 * R' + 0.587 * G' + 0.114 * B')为Y,则输出图像的像素值为:

P = Threshold_color, if Y < threshold_value
  = (R,G,B), Original value

,其中Threshold_color是一个RGB颜色值,

我想使用英特尔 IPP 库执行此操作。在那里我发现很少 API 与 thresholding of images 相关。 (ippiThreshold_LTVal_8u_C3R)

但是这些方法似乎一次只能处理一个数据点。但我想要做的阈值取决于 3 个不同值(R、G、B)的组合。 有没有办法通过 IPP 库实现这个?

是的,您可以使用 IPP 实现此功能,但我不知道有任何标准功能可以满足您的需求。

我在参考资料中找到的所有 IPP 阈值操作都使用全局阈值。

建议的方法:

  1. 将图片复制成灰度图
  2. 使用阈值
  3. 创建二进制掩码 0/1(与灰度图像大小相同)
  4. 将此蒙版与您要生成叠加层的替换颜色相乘
  5. 将叠加层应用于原始图像。

请注意,您在这里生成了不同类型的图像:首先是灰度图像,然后是黑白图像,最后是彩色图像(尽管在第 3 步中它是单色图像)