我需要在输入图像数据上调用以下Intel IPP方法。
到目前为止,我一直使用这种方法的8位和16位版本。但现在我们也允许12位图像作为输入。对于 ippiLUTPalette ,我看到我们可以传递我们正在处理的bitSize。但对于其他API,我们还没有。
我想到的一种方法是将位深度介于8位和16位之间的图像转换为16位图像并继续处理结果。我相信,ippiScale会进行此类转换。但我无法找到适用于除了8,16和8之外的钻头深度的它。 32。
有没有办法执行此转换?
或者是否可以在比特深度不是8位和16位的图像上调用前面提到的API?
答案 0 :(得分:2)
数据类型基于处理器体系结构。通常它们是word length的一小部分或多个。
因此,现代编程语言中的现代CPU及其没有12位数据类型。你有64,32,16,8个可加压内存。
但没有人阻止你将少量的比特放入寄存器。
因此,如果您想存储12位,通常将它们存储在16位类型的较低12位中。
这就是图像处理算法通常支持8,16 ......位的原因。您可以使用任何16位算法处理12位强度信息,就像在16位上一样。
在某些情况下,您可以将12位信息缩放到16位。但在大多数情况下,这是不必要的。
缩放12到16位是简单的数学运算。 12bit_value / (2^12-1) = 16bit_value / (2^16-1)
。
当然,您也可以将12位值引用到图像中的最大值,而不是2^12
。然后你总是使用完整的16位。