对RGB图像执行阈值操作

时间:2017-12-14 10:41:24

标签: c++ image image-processing intel-ipp

我需要对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库执行此操作。在那里,我发现很少有与thresholding of images相关的API。 (ippiThreshold_LTVal_8u_C3R

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

建议的方法:

  1. 将图像复制为灰度图像
  2. 使用阈值
  3. 创建二进制掩码0/1(与灰度图像大小相同)
  4. 将此蒙版与要生成叠加的替换颜色相乘
  5. 将叠加层应用于原始图像。
  6. 请注意,您在此处生成不同类型的图像:首先是灰度,然后是黑色和白色,最后是彩色图像(尽管在步骤3中它是单色图像)