Matlab创建HDF5数据集-压缩

概述

创建HDF5数据集必须先后使用h5create h5write命令
h5create官方链接
h5write官方链接
我创造的数据集大小是256x256x3x50000
每个256x256x3是RGB图片样本。

问题

如果在matlab里将RGB三维矩阵存成JPG,大小只有6KB
但是我把三维矩阵存入到HDF5中,大小竟达到200+KB
全部存取完大小达到200x50000=10GB,这对于我成万计的样本量是万万不能接受的。

解决

感谢链接的启发。

可以在h5create中加入压缩等级(0~9),采用gzip压缩。

h5create(filename,'/X',[3 256 256 Inf],'ChunkSize',[3 256 256 1],'Deflate',8);

这样单样本(算上其他附加标签)的大小就被压缩至9KB,达到期望大小。

解决完问题后才想起来,其实jpg也是采用了压缩算法才会把数据量变小的。如果h5create中未压缩,将会把样本中大量255值原封不动存入,自然会导致HDF5文件大小增大。

你可能感兴趣的:(MATLAB)