16bit深度画像の保存方法:opencv png形式とnumpy npy形式の比較

LIDARや深度推定で得られる深度マップは一般的にfloat32やfloat64型のデータでデータ量が多く、一般的なjpg形式の画像(uint8:80-255)で保存するとデータの精度が落ちてしまいます。 .npy ファイルとして保存されます。場合によってはファイル サイズが大きすぎるため (例: 深さ 1280*1920 の配列は保存後に 37.5Mb を占有する)、保存する前にデータを処理する必要があります。

1. 深度マップの精度情報に基づいて float32 データを uint16 または int16 データに変換することを検討します たとえば、一般的に使用される LIDAR で取得される深度マップの単位はメートルですが、精度をセンチメートルとして取得し、配列 Depth_map_m深度情報を含む(1280x1920)はメートルから変換されます float64の単位はセンチメートルのuint16に変換されます、 Depth_map_cm

depth_map_cm = depth_map_m * 100
depth_map_cm_uint16 = depth_map_cm.astype(np.uint16)

2.1 16 の深度マップは png、tif、その他の形式で保存できます

cv2.imwrite(save_dir, depth_map_cm_uint16)

2.2 16 深度マップを npy 形式で保存することもできます

np.save(save_dir, depth_map_cm_uint16)

ストレージオプション:

2 つの保存方法にはそれぞれ長所と短所があります:
保存スペースに関して:
cv2.imwrite: 取得されたデータは圧縮されているため、使用するスペースが少なくなります。上記の例で取得された png サイズはわずか 521kb です。
ここに画像の説明を挿入
np.save:取得したデータは多くのスペースを占有します。上記の例では、npy のサイズは 4.68mb を取得します。
ここに画像の説明を挿入
読み取り速度の観点から:
cv2.imwrite: その後のデータの読み込みは比較的遅く、上記の例の読み込み時間は
np.save: その後のデータのロードは高速で、上記の例のロード時間は約 0.003 秒です
ここに画像の説明を挿入

ニーズに応じて選択できます

おすすめ

転載: blog.csdn.net/SmaICG/article/details/130202932