{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Test image generation for Submission","metadata":{}},{"cell_type":"markdown","source":"- From https://www.kaggle.com/code/radek1/how-to-process-dicom-images-to-pngs\n","metadata":{}},{"cell_type":"code","source":"def dicom_file_to_ary(path):\n    dicom = pydicom.read_file(path)\n    data = dicom.pixel_array\n    if dicom.PhotometricInterpretation == \"MONOCHROME1\":\n        data = np.amax(data) - data\n    data = data - np.min(data)\n    data = data / np.max(data)\n    data = (data * 255).astype(np.uint8)\n    return data\n\ndef process_directory(directory_path):\n    parent_directory = str(directory_path).split('/')[-1]\n    !mkdir -p /kaggle/working/test_images_processed_{RESIZE_TO[0]}/{parent_directory}\n    for image_path in directory_path.iterdir():\n        processed_ary = dicom_file_to_ary(image_path)\n        im = Image.fromarray(processed_ary).resize(RESIZE_TO)\n        im.save(f'/kaggle/working/test_images_processed_{RESIZE_TO[0]}/{parent_directory}/{image_path.stem}.png')\n","metadata":{"execution":{"iopub.status.busy":"2023-02-01T06:02:31.363671Z","iopub.execute_input":"2023-02-01T06:02:31.364157Z","iopub.status.idle":"2023-02-01T06:02:31.375433Z","shell.execute_reply.started":"2023-02-01T06:02:31.364111Z","shell.execute_reply":"2023-02-01T06:02:31.374565Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pydicom\nfrom pathlib import Path\nimport numpy as np\nfrom PIL import Image\nfor xsize in [1024,512,256,128]:\n    RESIZE_TO = (xsize, xsize)\n    !rm -rf train_images_processed_{RESIZE_TO[0]}\n    !mkdir train_images_processed_{RESIZE_TO[0]}\n    # https://www.kaggle.com/code/tanlikesmath/brain-tumor-radiogenomic-classification-eda/notebook\n    directories = list(Path('/kaggle/input/rsna-breast-cancer-detection/test_images').iterdir())\n    import multiprocessing as mp\n\n    with mp.Pool(1) as p:\n        p.map(process_directory, directories)","metadata":{"execution":{"iopub.status.busy":"2023-02-01T06:02:35.547539Z","iopub.execute_input":"2023-02-01T06:02:35.547979Z","iopub.status.idle":"2023-02-01T06:03:03.004685Z","shell.execute_reply.started":"2023-02-01T06:02:35.547941Z","shell.execute_reply":"2023-02-01T06:03:03.003063Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import shutil\nshutil.make_archive('Test_DICOM_PNGs', 'zip', '/kaggle/working/')","metadata":{"execution":{"iopub.status.busy":"2023-02-01T06:09:37.768225Z","iopub.execute_input":"2023-02-01T06:09:37.768717Z","iopub.status.idle":"2023-02-01T06:09:37.860643Z","shell.execute_reply.started":"2023-02-01T06:09:37.76866Z","shell.execute_reply":"2023-02-01T06:09:37.859529Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}