Формат данных H5Tset_precision в файле hdf5

У меня есть поток 12-битных данных кадра пикселей, связанных друг с другом в формате потока байтов. Представьте, например, что 1000 12-битных пиксельных данных связаны друг с другом точно в следующем порядке: P0[11:0], P1[11:0], P2[11:0],,..., P999[11:0]. Что занимает размер: 1000 пикселей * 12 бит / пиксель / 8 бит = 1500 байт данных в массиве.

Мне нужно записать это в файл HDF5. Я извлекаю каждый пиксель в 16-битном uint16_t, а затем, когда я записываю его в HDF, я использую H5Tset_precision и устанавливаю размер элемента равным 12, и он сжимается, но, как вы можете видеть, я распаковываю данные вручную, чтобы библиотека HDF5 могла снова сжать их.

Кто-нибудь знает, как библиотеки HDF5 организуют 12-битные пиксели в файле HDF5, когда я говорю ему, что каждый элемент на самом деле 12-битный, используя H5Tset_precision? Я предполагаю, что библиотека HDF5, вероятно, сохраняет данные, объединенные путем удаления 4 ведущих нулей в каждом пикселе, верно?

Есть ли способ сохранить поток как есть, не извлекая пиксельные данные до 16 бит и обратно до 12, просто сообщив библиотеке HDF5: Эй, у меня здесь для вас есть битовый поток, уже отформатированный и сжатый без нуля в начале (некоторые вроде литье), а надо только сохранить?

Есть у кого-нибудь идеи?

0 ответов

Другие вопросы по тегам