{"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":"```\nfor every tile, it's shape is [65,h,w]\n\nall tiles are stored as a list named imgs\n\nhere are 3 possible ways to make train dataset and valid dataset\n\n1. cur_img=cv2.cvtColor(cur_img,GRAY2RGB)# H x W --> 3 x H x W, every channel is the same\n\n2. cur_img=concat([imgs[cur-1],imgs[cur],imgs[cur+1]])# 3 x H x W\n\n3. cur_img=concat([imgs[cur-num_],...,imgs[cur-1],imgs[cur],imgs[cur+1],...,imgs[cur+num_]])# num_stacked x H x W\n```","metadata":{}},{"cell_type":"markdown","source":"```\nwhile testing, for every tile prediction:\n\n1. just pick a random slice H x W from all 65 slices\n\n2. using current slice and its neighbors(left and right), making it a 3 channel tile img\n\n3. using current slice and all its neighbors(num_stacked tile imgs in total)\n\n\nall 3 ways above can do multi-time predictions and using the mean result as the tile prediction\n```","metadata":{}},{"cell_type":"code","source":"# way 2\nimport os\nimport glob\nimport numpy as np\nimport cv2 \nimport matplotlib.pyplot as plt\nfrom PIL import Image\nfrom tqdm import tqdm\n\nroot_dir=r'/kaggle/input/vcid-tiles512'\nnum_imgs=3\n\nfor i in range(1,num_imgs+1):\n    img_save_dir=os.path.join('/kaggle/working','stacked_dataset','img'+str(i),'img')\n    mask_save_dir=os.path.join('/kaggle/working','stacked_dataset','img'+str(i),'mask')\n    if not os.path.exists(img_save_dir):\n        os.makedirs(img_save_dir)\n    if not os.path.exists(mask_save_dir):\n        os.makedirs(mask_save_dir)\n\n    all_masks=glob.glob(os.path.join(root_dir,str(i))+'/*.png')\n    print(i)\n    \n    for cur_mask in all_masks:\n        cur_tile_z_name=cur_mask.split('\\\\')[-1].split('.')[0]\n        cur_tiles=os.path.join(root_dir,str(i),cur_tile_z_name)\n        cur_z_all_tiles=glob.glob(cur_tiles+'/*.png')\n        # print(len(cur_z_all_tiles))# 65\n\n        mask_arr=np.array(Image.open(cur_mask))\n\n        # concat\n        cnt=0\n        for idx,tile_path in enumerate(cur_z_all_tiles):\n            if idx==0:\n                cur_img=cv2.imread(cur_z_all_tiles[idx])\n                cur_img=cv2.cvtColor(cur_img,cv2.COLOR_BGR2GRAY)\n                next_img=cv2.imread(cur_z_all_tiles[idx+1])\n                next_img=cv2.cvtColor(next_img,cv2.COLOR_BGR2GRAY)\n                res=np.concatenate([cur_img[:,:,np.newaxis],cur_img[:,:,np.newaxis],next_img[:,:,np.newaxis]],axis=-1)\n\n            elif idx==len(cur_z_all_tiles)-1:\n                cur_img=cv2.imread(cur_z_all_tiles[idx])\n                cur_img=cv2.cvtColor(cur_img,cv2.COLOR_BGR2GRAY)\n                pre_img=cv2.imread(cur_z_all_tiles[idx-1])\n                pre_img=cv2.cvtColor(pre_img,cv2.COLOR_BGR2GRAY)\n                res=np.concatenate([pre_img[:,:,np.newaxis],pre_img[:,:,np.newaxis],cur_img[:,:,np.newaxis]],axis=-1)\n\n            else:\n                cur_img=cv2.imread(cur_z_all_tiles[idx])\n                cur_img=cv2.cvtColor(cur_img,cv2.COLOR_BGR2GRAY)\n                pre_img=cv2.imread(cur_z_all_tiles[idx-1])\n                pre_img=cv2.cvtColor(pre_img,cv2.COLOR_BGR2GRAY)\n                next_img=cv2.imread(cur_z_all_tiles[idx+1])\n                next_img=cv2.cvtColor(next_img,cv2.COLOR_BGR2GRAY)\n                res=np.concatenate([pre_img[:,:,np.newaxis],cur_img[:,:,np.newaxis],next_img[:,:,np.newaxis]],axis=-1)\n            \n            # stacked_tiles.append(res)\n            # stacked_tile_masks.append((i,mask_arr))\n\n            mask_save_name=os.path.join(mask_save_dir,str(i)+'_'+cur_tile_z_name+'_'+str(cnt)+'.png')\n            img_save_name=os.path.join(img_save_dir,str(i)+'_'+cur_tile_z_name+'_'+str(cnt)+'.png')\n            cv2.imwrite(mask_save_name,mask_arr)\n            cv2.imwrite(img_save_name,res)\n            cnt+=1\n            print(img_save_name,mask_save_name)\n            \n    #         break\n\n    # break","metadata":{"execution":{"iopub.status.busy":"2023-05-04T07:38:45.172533Z","iopub.execute_input":"2023-05-04T07:38:45.173060Z","iopub.status.idle":"2023-05-04T07:40:34.224734Z","shell.execute_reply.started":"2023-05-04T07:38:45.172997Z","shell.execute_reply":"2023-05-04T07:40:34.223295Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}