{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Introduction\n\nLet's have a global view on the train set."},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nimport glob\nfrom skimage.transform import resize\nimport rasterio\n\nimport cv2\ndef resize(img):\n    imgt = img.transpose(1,2,0)\n    new_img = np.zeros((500,500,3)).astype(np.uint8)\n    for i in range(3):\n        temp = imgt[:,:,i]\n        new_img[:,:,i] = cv2.resize(temp,(500,500))\n    return new_img, np.array(temp.shape)/500\n\nimport json\nfrom rasterio.mask import mask\n\ndef gen_masks(path, raster):\n    with open(path, 'r') as f:\n        aois_1 = json.load(f)\n    \n    all_aois_1 = [elmt['geometry'] for elmt in aois_1]\n    mask1, transform = mask(raster, all_aois_1, crop = False)\n    mask1, _ = resize(mask1)\n    return mask1","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Get train ids"},{"metadata":{"trusted":true},"cell_type":"code","source":"ids = glob.glob('/kaggle/input/hubmap-kidney-segmentation/train/*.tiff')\nids = [elmt.split('/')[-1].split('.')[0] for elmt in ids]\nids","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Create low resolution images and masks"},{"metadata":{"trusted":true},"cell_type":"code","source":"from tqdm import tqdm\nimgs = []\nmasks1 = []\nmasks2 = []\n\nfor id_ in ids:\n    \n    path_tiff = f'/kaggle/input/hubmap-kidney-segmentation/train/{id_}.tiff'\n    path_json1 = f'/kaggle/input/hubmap-kidney-segmentation/train/{id_}-anatomical-structure.json'\n    path_json2 = f'/kaggle/input/hubmap-kidney-segmentation/train/{id_}.json'\n\n    raster = rasterio.open(path_tiff)\n    img = raster.read()\n    crs = raster.crs\n    transform = raster.transform\n\n    \n    nimg, trans = resize(img)\n    ts = nimg.transpose(2,1,0)\n    transform2 = transform * transform.scale(trans[1],trans[0])\n    with rasterio.open('temp.tif','w',driver='GTiff',\n           height=ts.shape[1],\n           width=ts.shape[2],\n           count=ts.shape[0],\n           dtype=ts.dtype,\n           crs = crs,\n           transform=transform2,) as f:\n        \n        f.write(ts)\n\n    subraster = rasterio.open('temp.tif')\n    mask1 = gen_masks(path_json1, subraster)\n    mask2 = gen_masks(path_json2, subraster)\n    mask1[mask1 >0] = 255\n    mask2[mask2 >0] = 255\n    imgs.append(nimg)\n    masks1.append(mask1)\n    masks2.append(mask2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(nimg)\nplt.imshow(mask1, alpha = 0.5)\nplt.imshow(mask2, alpha = 0.5)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Assemble everything"},{"metadata":{"trusted":true},"cell_type":"code","source":"big_picture = np.zeros((500*2,500*4,3)).astype(np.uint8)\nbig_mask1 = np.zeros((500*2,500*4,3)).astype(np.uint8)\nbig_mask2 = np.zeros((500*2,500*4,3)).astype(np.uint8)\nk = 0\nfor i in range(2):\n    for j in range(4):\n        big_picture[500*i:500*(i+1),500*j:500*(j+1),:] = imgs[k]\n        big_mask1[500*i:500*(i+1),500*j:500*(j+1),:] = masks1[k]\n        big_mask2[500*i:500*(i+1),500*j:500*(j+1),:] = masks2[k]\n        k+=1","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Visualisation"},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.figure(figsize = (30,30))\nplt.title('All Images and masks', size = 30)\nfig = plt.imshow(big_picture)\nplt.imshow(big_mask1, alpha = 0.5)\nplt.imshow(big_mask2, alpha = 0.5)\nfig.axes.get_xaxis().set_visible(False)\nfig.axes.get_yaxis().set_visible(False)\nplt.show()","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}