Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 反向;jpeg";压缩算法?_Algorithm_Compression_Intel Ipp - Fatal编程技术网

Algorithm 反向;jpeg";压缩算法?

Algorithm 反向;jpeg";压缩算法?,algorithm,compression,intel-ipp,Algorithm,Compression,Intel Ipp,我必须编写一个工具来管理非常大的数据集(好吧,对于普通工作站来说是很大的)。我需要的基本上是与jpeg格式相反的东西。我需要数据集在磁盘上保持完整,在磁盘上它可以任意大,但是当它在内存中被读取时,它需要进行有损压缩,并且只有在任何给定时间使用的子部分需要在飞行中解压缩。我已经开始研究ipp(英特尔集成性能原件),但目前还不清楚我是否可以将它们用于我需要做的事情。 谁能给我指出正确的方向吗 谢谢。鉴于数据的性质,您似乎正在处理某种原始样本。 因此,最简单和最通用的“有损”技术将是降低较低的位,降低

我必须编写一个工具来管理非常大的数据集(好吧,对于普通工作站来说是很大的)。我需要的基本上是与jpeg格式相反的东西。我需要数据集在磁盘上保持完整,在磁盘上它可以任意大,但是当它在内存中被读取时,它需要进行有损压缩,并且只有在任何给定时间使用的子部分需要在飞行中解压缩。我已经开始研究ipp(英特尔集成性能原件),但目前还不清楚我是否可以将它们用于我需要做的事情。 谁能给我指出正确的方向吗


谢谢。

鉴于数据的性质,您似乎正在处理某种原始样本。 因此,最简单和最通用的“有损”技术将是降低较低的位,降低精度,达到您想要的水平

请注意,您将需要“删除较低的位”,这与“舍入到下一个10次方”完全不同。计算机以2为基数工作,您希望所有的低位都是“00000”,以便尽可能好地执行压缩。此方法假设所选压缩算法将使用可预测的0位模式

另一种更复杂、更具体的方法是将值作为索引转换为表。优点是你可以在你想要的地方“瞄准”精度。明显的缺点是该表将特定于一种分布模式

除此之外,您还可以存储的不是值本身,而是值与其前一个值之间的增量(如果它们之间存在某种关系)。这也将有助于压缩

对于要压缩的数据,您需要按适当大小的数据包(如64KB)对其进行“分组”。在单个字段上,没有任何压缩算法会给出合适的结果。这反过来意味着,每次您想要访问一个字段时,您都需要对整个数据包进行解压缩,因此最好根据您想要对其执行的操作对其进行调优。在这种情况下,顺序存取更容易处理

关于压缩算法,由于这些数据将是“实时的”,您需要非常快的速度,因此访问数据的延迟影响非常小

有几种开源的替代方案可供使用。为了便于许可证管理,我建议使用BSD替代方案。既然你使用C++,下面的例子看起来很合适: 和

您基本上是在寻找JPEG编解码器的实现吗?你用什么语言工作?涉及什么样的数据?图像压缩与文本、外汇非常不同。这听起来在统计SE网站会更好。数据采集、转换、汇总、分析等都属于统计领域。如果数据具有特定的性质,例如图像、音频、文本等,那么将采用更专门的方法。在这种情况下,“有损”到底意味着什么。你认为什么样的数据会丢失?压缩/解压缩需要尽可能快,所以我将使用C++。数据将是大于5GB的大型矩阵和阵列。