Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用“英特尔IPP”将具有n位深度的图像转换为16位深度的图像。(其中8<;n<;16)_Performance_Image Processing_Intel_Intel Ipp - Fatal编程技术网

Performance 使用“英特尔IPP”将具有n位深度的图像转换为16位深度的图像。(其中8<;n<;16)

Performance 使用“英特尔IPP”将具有n位深度的图像转换为16位深度的图像。(其中8<;n<;16),performance,image-processing,intel,intel-ipp,Performance,Image Processing,Intel,Intel Ipp,我需要对输入图像数据调用以下Intel IPP方法 单色射线 iPilutPalette iPiscale(仅适用于16位图像) 伊皮克比 伊皮塞特 伊皮亚法康 到目前为止,我一直在使用这种方法的8位和16位版本。但现在我们也允许12位图像作为输入。对于ippilutplate,我发现我们可以传递我们正在处理的位大小。但是对于其他API,我们没有它 我想到的一种方法是将深度在8到16位之间的图像转换为16位图像,然后继续处理结果。我相信,iPiscale会执行这样的转换。但除了8、16和32

我需要对输入图像数据调用以下Intel IPP方法

  • 单色射线
  • iPilutPalette
  • iPiscale(仅适用于16位图像)
  • 伊皮克比
  • 伊皮塞特
  • 伊皮亚法康
到目前为止,我一直在使用这种方法的8位和16位版本。但现在我们也允许12位图像作为输入。对于ippilutplate,我发现我们可以传递我们正在处理的位大小。但是对于其他API,我们没有它

我想到的一种方法是将深度在8到16位之间的图像转换为16位图像,然后继续处理结果。我相信,iPiscale会执行这样的转换。但除了8、16和32之外,我找不到一种对比特深度有效的方法

有没有办法执行此转换


或者可以对位深度不是8位和16位的图像调用前面提到的API吗?

数据类型基于处理器体系结构。通常情况下,它们是该值的分数或倍数

因此,现代CPU和现代编程语言中没有12位数据类型。您有64、32、16、8个可寻址内存

但是没有人会阻止你将少量的比特放入寄存器

因此,如果您想存储12位,通常将其存储在16位类型的较低12位中

这就是为什么图像处理算法通常支持8,16,。。。一点您可以使用任何16位算法处理12位强度信息,就像处理16位强度信息一样

在某些情况下,您可以将12位信息缩放为16位。但在大多数情况下,这是不必要的

将12位缩放到16位是一个简单的数学问题<代码>12位U值/(2^12-1)=16位U值/(2^16-1)。
当然,您也可以将您的12位值引用到图像中的最大值,而不是
2^12
。那么您将始终使用完整的16位

您的10位或12位图像很可能是使用每个样本16位存储的。如果是这样,您可以将其视为16位图像,但其中的最大值是1024或4092,而不是65k。@CrisLuengo感谢您的回答。不过,只有一个问题,如果我们最终对12位和16位使用相同的内存量,那么使用12位图像的优势是什么?@sajas没有优势。这只是一个量化的问题。大多数相机只有8、10或12位ADC。因此,对于12位分辨率,任何强度值都将在区间[04095]内。他们没有理由将其扩展到16位。是否有任何未压缩的存储格式将10位或12位组件分组打包?e、 g.6*12位=72位=每2像素9字节(对于yuv444或rgb,无子采样)。我检查了FFmpeg源代码,在内部,高深度格式似乎对每个组件都有一个完整的字节数。()@PeterCordes:我不是压缩方面的专家,但我想如果不压缩位,利用图像中的冗余可能会更容易。例如,MPEG编码像素块的移位,如果这些像素被压缩,这可能很难做到。图像压缩的目标是输出具有尽可能高的信息内容的比特流。因此,输出流将以某种方式进行压缩(例如哈夫曼编码),但该输出流不再是每像素位数的固定值。@CrisLuengo;我问的是未压缩的格式,例如,在高深度视频模式下的视频RAM中,或者在OpenGL纹理中,专用硬件将对其进行处理。有了硬件支持,从一组连续像素的位字段中解包组件不是问题。