{"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":"<center><h1>Applying filters to Chest X-Rays</h1></center>\n\n","metadata":{}},{"cell_type":"markdown","source":"thanks to David Roberts","metadata":{}},{"cell_type":"markdown","source":"### import necessary packages","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport pydicom\nfrom skimage.exposure import exposure, equalize_hist,equalize_adapthist\nimport cv2\nfrom skimage.filters import unsharp_mask\nprint('packages imported')","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:58:25.804703Z","iopub.execute_input":"2021-07-16T06:58:25.805130Z","iopub.status.idle":"2021-07-16T06:58:27.345522Z","shell.execute_reply.started":"2021-07-16T06:58:25.805093Z","shell.execute_reply":"2021-07-16T06:58:27.344036Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### important function","metadata":{}},{"cell_type":"markdown","source":"#### Load dcm image","metadata":{}},{"cell_type":"code","source":"def load_image(img_dcm):\n    \n    image = pydicom.dcmread(img_dcm)\n    pixels = image.pixel_array\n\n    min_pixel = np.min(pixels)\n    max_pixel = np.max(pixels)\n\n    if image.PhotometricInterpretation == \"MONOCHROME1\":\n        pixels = max_pixel - pixels\n    else:\n        pixels = pixels\n\n    return pixels\n\n\n","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:58:27.347487Z","iopub.execute_input":"2021-07-16T06:58:27.347898Z","iopub.status.idle":"2021-07-16T06:58:27.365521Z","shell.execute_reply.started":"2021-07-16T06:58:27.347842Z","shell.execute_reply":"2021-07-16T06:58:27.353027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Filter function","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:55:56.435205Z","iopub.execute_input":"2021-07-16T06:55:56.435631Z","iopub.status.idle":"2021-07-16T06:55:56.439791Z","shell.execute_reply.started":"2021-07-16T06:55:56.435590Z","shell.execute_reply":"2021-07-16T06:55:56.438944Z"}}},{"cell_type":"code","source":"def apply_filter(f, img):\n    if f == 'equalize_hist': \n        img = equalize_hist(img, nbins=256, mask= None)\n    if f== 'equalize_adapthist':\n        img = equalize_adapthist(img, kernel_size = None, clip_limit=0.01,nbins=256)\n    if f == 'unsharp_mask':\n        img = unsharp_mask(img, radius=5, amount=2)\n    return img    ","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:58:27.367724Z","iopub.execute_input":"2021-07-16T06:58:27.368383Z","iopub.status.idle":"2021-07-16T06:58:27.384479Z","shell.execute_reply.started":"2021-07-16T06:58:27.368334Z","shell.execute_reply":"2021-07-16T06:58:27.383619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Plot original and filtted image","metadata":{}},{"cell_type":"code","source":"\ndef plot_image(title, image, process_image):\n    fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12,12), sharex=True, sharey= True)\n    ax = axes.ravel()\n    ax[0].imshow(img, cmap=plt.cm.gray)\n    ax[0].set_title('Original_image')\n    ax[1].imshow(process_image, cmap=plt.cm.gray)\n    ax[1].set_title(title)\n    for a in ax:\n        a.axis('off')\n    fig.tight_layout()\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:58:28.744389Z","iopub.execute_input":"2021-07-16T06:58:28.745212Z","iopub.status.idle":"2021-07-16T06:58:28.754528Z","shell.execute_reply.started":"2021-07-16T06:58:28.745141Z","shell.execute_reply":"2021-07-16T06:58:28.753101Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Load an image and apply filters\n","metadata":{}},{"cell_type":"code","source":"\n\nmain_dir = '../input/siim-covid19-detection/train'\nfolder_names = os.listdir(main_dir)\n\nfor folder_name in folder_names:\n    for img_folder in os.listdir(os.path.join(main_dir,folder_name)):\n        for img_dir in os.listdir(main_dir+'/'+folder_name+'/'+img_folder):\n            print(img_dir)\n            img = load_image(main_dir+'/'+folder_name+'/'+img_folder+'/'+img_dir)\n            processed_img = apply_filter('equalize_hist',img)\n            plot_image('Image Equalize_hist', img, processed_img)\n            \n            processed_img = apply_filter('equalize_adapthist',img)\n            plot_image('Image Equalize_adapthist', img, processed_img)\n            \n            processed_img = apply_filter('unsharp_mask',img)\n            plot_image('Image unsharp_mask', img, processed_img)\n    break\n            \n        ","metadata":{"execution":{"iopub.status.busy":"2021-07-16T06:58:30.294768Z","iopub.execute_input":"2021-07-16T06:58:30.295240Z","iopub.status.idle":"2021-07-16T06:58:36.671799Z","shell.execute_reply.started":"2021-07-16T06:58:30.295200Z","shell.execute_reply":"2021-07-16T06:58:36.670985Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}