Ejemplo n.º 1
0
def read_binary_files_factorized(filename, rootdir='./'):
    """Read from compressed binary files:
    1) Compressed latent features.
    2) Number of input points.
    3) Positions of each cube.
  """

    print('===== Read binary files =====')
    file_strings = os.path.join(rootdir, filename + '.strings')
    file_pointnums = os.path.join(rootdir, filename + '.pointnums')
    file_cubepos = os.path.join(rootdir, filename + '.cubepos')
    ply_cubepos = os.path.join(rootdir, filename + '_cubepos.ply')

    with open(file_strings, 'rb') as f:
        shape = np.frombuffer(f.read(2 * 5), dtype=np.int16)
        min_v, max_v = np.frombuffer(f.read(1 * 2), dtype=np.int8)
        strings = f.read()

    with open(file_pointnums, 'rb') as f:
        points_numbers = np.frombuffer(f.read(), dtype=np.uint16)

    gpcc_decode(file_cubepos, ply_cubepos)
    cube_positions = load_ply_data(ply_cubepos)

    return strings, points_numbers, cube_positions, min_v, max_v, shape
Ejemplo n.º 2
0
def read_binary_files_hyper(filename, rootdir='./'):
    """Read from compressed binary files:
    1) Compressed latent features.
    2) Compressed hyperprior.
    3) Number of input points.
    4) Positions of each cube.
  """

    print('===== Read binary files =====')
    file_strings = os.path.join(rootdir, filename + '.strings')
    file_strings_head = os.path.join(rootdir, filename + '.strings_head')
    file_strings_hyper = os.path.join(rootdir, filename + '.strings_hyper')
    file_pointnums = os.path.join(rootdir, filename + '.pointnums')
    file_cubepos = os.path.join(rootdir, filename + '.cubepos')
    ply_cubepos = os.path.join(rootdir, filename + '_cubepos.ply')

    with open(file_strings_head, 'rb') as f:
        y_strings_num = int(np.frombuffer(f.read(1 * 2), dtype=np.int16))
        y_max_min_vs = np.frombuffer(f.read(y_strings_num * 1),
                                     dtype=np.uint8).astype('int32')
        y_max_vs = y_max_min_vs // 16
        y_min_vs = -(y_max_min_vs % 16)
        # y_min_vs = np.array(y_min_vs).astype('int32')
        # y_max_vs = np.array(y_max_vs).astype('int32')

        y_strings_lens = []
        for i in range(y_strings_num):
            l = np.frombuffer(f.read(1 * 1), dtype=np.uint8)
            if l == 0:
                l = int(np.frombuffer(f.read(1 * 2), dtype=np.int16))
            y_strings_lens.append(l)
        y_strings_lens = np.array(y_strings_lens, dtype=np.int32)
        y_shape = np.frombuffer(f.read(2 * 5), dtype=np.int16)

        f.close()

    with open(file_strings, 'rb') as f:
        y_strings = []
        for i, l in enumerate(y_strings_lens):
            y_strings.append(f.read(int(l)))
        y_strings = np.array(y_strings)
        f.close()

    with open(file_strings_hyper, 'rb') as f:
        z_shape = np.frombuffer(f.read(2 * 5), dtype=np.int16)
        z_min_v, z_max_v = np.frombuffer(f.read(1 * 2), dtype=np.int8)
        z_strings = f.read()

    with open(file_pointnums, 'rb') as f:
        points_numbers = np.frombuffer(f.read(), dtype=np.uint16)

    gpcc_decode(file_cubepos, ply_cubepos)
    cube_positions = load_ply_data(ply_cubepos)

    # y_shape = np.array([1, 16, 16, 16, 16])
    return y_strings, z_strings, points_numbers, cube_positions, y_min_vs, y_max_vs, y_shape, z_min_v, z_max_v, z_shape