对 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 阈值操作都使用全局阈值。
建议的方法:
- 将图片复制成灰度图
- 使用阈值
创建二进制掩码 0/1(与灰度图像大小相同)
- 将此蒙版与您要生成叠加层的替换颜色相乘
- 将叠加层应用于原始图像。
请注意,您在这里生成了不同类型的图像:首先是灰度图像,然后是黑白图像,最后是彩色图像(尽管在第 3 步中它是单色图像)
我需要对 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 阈值操作都使用全局阈值。
建议的方法:
- 将图片复制成灰度图
- 使用阈值 创建二进制掩码 0/1(与灰度图像大小相同)
- 将此蒙版与您要生成叠加层的替换颜色相乘
- 将叠加层应用于原始图像。
请注意,您在这里生成了不同类型的图像:首先是灰度图像,然后是黑白图像,最后是彩色图像(尽管在第 3 步中它是单色图像)