Python Code

Glob 이용해서 특정폴더의 이미지 경로들을 DataFrame으로 만들기

Kimhj 2024. 1. 11. 11:10
  • 이미지 처리를 하다보면 원본 이미지와 레이블된 이미지가 동시에 들어가있는 경우가 있음.
  • 이럴때는 glob 을 잘 활용해서 파일명으로 구분한 후, filepath 를 데이터프레임으로 만드는 코드가 유용함.

 

def get_file_row_nii(file_paths):
    """Produces ID of a patient, image and mask filenames from a particular path"""
    file_paths = sorted(list(set(glob(f'{file_paths}/*.nii.gz')) - set(glob(f'{file_paths}/*_mask.nii.gz'))))
    temp = []
    for file in file_paths:
        for i in range(0, len(nib.load(file).get_fdata().transpose())):
            path = os.path.abspath(file)
            path_no_ext, ext = "".join(path.split('.')[0]), ".".join(path.split('.')[1:])   # . 을 기준으로 파일명/확장자 분리
            filename = os.path.basename(path)
            patient_id = filename.split('.')[0]
            temp.append([patient_id, path, f'{path_no_ext}_mask.{ext}', i])

    filenames_df = pd.DataFrame(temp, columns=['Patient', 'image_filename', 'mask_filename','index'])
    return filenames_df