frankenstein / seg2med_evaluation /extractliverregion_anika.py
zy7_oldserver
1
fd601de
raw
history blame
2.3 kB
import os
import numpy as np
import nrrd
from image_function_save_png_hist import load_volume, save_volume, pad_image, pad_image_3D
import re
def load_nrrd_file(nrrd_path):
data, header = nrrd.read(nrrd_path)
return data, header
def save_nrrd_file(data, header, save_path):
nrrd.write(save_path, data, header)
def extract_liver_region(nrrd_path1, save_path):
data1, headeroraffine = load_volume(nrrd_path1)
# 将灰度值为5的部分保留并设为1,其他部分设为0,假设5为肝脏区域的标签
data1 = np.where(np.isclose(data1, 5, atol=1e-6), 1, 0).astype(np.uint8)
#print(data1.shape)
data1 = pad_image_3D(data1, [512,512, None], 0)
#print(data1.shape)
save_volume(data1, save_path, output_format='nii.gz', affine=headeroraffine)
def main(folder1, output_folder):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
files1 = set(os.listdir(folder1))
for filename in files1:
if filename.endswith(".nrrd") or filename.endswith(".nii.gz") or filename.endswith(".nii") :
nrrd_path1 = os.path.join(folder1, filename)
# Define the pattern for the patient ID
pattern = r"ct-volume-(\d+).*? - (\d+)_seg"
# Use re.search to find the patient ID
match = re.search(pattern, filename)
if match:
# Extract patient ID components
patient_id = f"{match.group(1)}_{match.group(2)}"
print("Extracted Patient ID:", patient_id)
else:
print("No match found!")
output_file_name = f"{patient_id}_liver_mask_volume.nii.gz"
final_save_path = os.path.join(output_folder, output_file_name)
print(f"Processing {nrrd_path1}, saving to {final_save_path}")
extract_liver_region(nrrd_path1, final_save_path)
if __name__ == "__main__":
folder1 = r'D:\Project\seg2med_Project\synthrad_results\results_all_eval\phase1_ct_anika_4_models\Infer_ddpm2d_seg2med_anika_512_all\saved_outputs\volume_output\seg'
output_folder = r'D:\Project\seg2med_Project\synthrad_results\results_all_eval\phase1_ct_anika_4_models\Infer_ddpm2d_seg2med_anika_512_all\saved_outputs\volume_output\Liver_masks'
main(folder1, output_folder)