[54586b]: / DataAugmentation / imgaug.ipynb

Download this file

6147 lines (6146 with data), 144.1 kB

{
 "cells": [
  {
   "cell_type": "heading",
   "metadata": {
    "collapsed": false
   },
   "level": 1,
   "source": [
    "The Notebook for Defect Detection Image Augumentation"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Path"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataPath = \".Data_postiveOnly\""
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Import"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import imgaug as ia\n",
    "from imgaug import augmenters as iaa\n",
    "import skimage.io\n",
    "import errno\n",
    "import numpy as np\n",
    "import skimage.color as color\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os\n",
    "from skimage.color import gray2rgb"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Helper Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def bboxSetupInImage(datapath,txtFile,img):\n",
    "    \"\"\"\n",
    "    This is the function that reads in the bounding box files and then using imgaug to set up the bounding box on images\n",
    "    \n",
    "    :param txtFile: the txt file that store bounding box information \n",
    "    :param img: the image file variable to represent the img to be plotted bounding box on it \n",
    "    :return bbs: the image with bounding box in it\n",
    "    \"\"\"\n",
    "    with open( datapath + 'bounding_boxes/' + txtFile,'r') as f:\n",
    "        content = [line.rstrip('\\n') for line in f]\n",
    "        iaBBoxList = []\n",
    "        for bbline in content:\n",
    "            bbox = bbline.strip().split()\n",
    "            #print(bbox[1])\n",
    "            if len(bbox) == 5:\n",
    "                iaBBoxList.append(ia.BoundingBox(\n",
    "                    x1=float(bbox[2]), \n",
    "                    y1=float(bbox[1]), \n",
    "                    x2=float(bbox[4]), \n",
    "                    y2=float(bbox[3]),\n",
    "                    label = bbox[0]))\n",
    "        bbs = ia.BoundingBoxesOnImage(iaBBoxList, shape=img.shape)\n",
    "        return bbs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def saveAugbbox2TXT(txtFile,bbs):\n",
    "    \"\"\"\n",
    "    This is the function that save the augmented bounding box files into ChainerCV bbox format\n",
    "    \n",
    "    :param txtFile: the txt file that want to save\n",
    "    :param bbs: bounding box lists \n",
    "    \"\"\"\n",
    "    with open('' + txtFile,'w') as f:\n",
    "        for i in range(len(bbs.bounding_boxes)):\n",
    "            bb = bbs_aug.bounding_boxes[i]\n",
    "            # print(\"%s %.2f %.2f %.2f %.2f\"%(bb.label,bb.y1,bb.x1,bb.y2,bb.x2))\n",
    "            f.write(\"%s %.2f %.2f %.2f %.2f\\n\"%(bb.label,bb.y1,bb.x1,bb.y2,bb.x2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def getImageList(imageTXT):\n",
    "    \"\"\"\n",
    "    Function to loop the testing images for test\n",
    "    :param imageTXT: the txt that stores the \n",
    "    :return: imageFileList: the list contains all the original test image list\n",
    "    \"\"\"\n",
    "    imageFileList = list()\n",
    "    with open(imageTXT,'r') as f:\n",
    "        lines = f.readlines()\n",
    "        for line in lines:\n",
    "            imageFileList.append(line.strip())\n",
    "    return imageFileList"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def createFolder(folderName):\n",
    "    \"\"\"\n",
    "    Safely create folder when needed\n",
    "    \n",
    "    :param folderName : the directory that you  want to safely create\n",
    "    :return: None\n",
    "    \"\"\"\n",
    "    if not os.path.exists(folderName):\n",
    "        try:\n",
    "            os.makedirs(folderName)\n",
    "        except OSError as exc:  # Guard against race condition\n",
    "            if exc.errno != errno.EEXIST:\n",
    "                raise"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Gaussian Noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n0501_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0020.jpg\n0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n0501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0040.jpg\n0501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0046.jpg\n0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n2501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0042.jpg\n2501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0046.jpg\n2501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0052.jpg\n2501_300kx_1nm_clhaadf3_0054.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n4ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0004.jpg\n5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0018.jpg\n5401_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0024.jpg\n5401_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 07 (2).jpg\nBF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\nBF X500K, 08.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (3).jpg\nBF X500K, 11.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (3).jpg\nBF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\nBF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\nK713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\nK713_300kx_store4_grid1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong2.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong3.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0055.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0069.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "\n",
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"GaussianNoise\"\n",
    "\n",
    "# Add gaussian noise.\n",
    "# For 50% of all images, we sample the noise once per pixel.\n",
    "# For the other 50% of all images, we sample the noise per pixel AND\n",
    "# channel. This can change the color (not only brightness) of the\n",
    "# pixels.\n",
    "   \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "        iaa.AdditiveGaussianNoise(loc=0, \n",
    "                                  scale=(0.0, 0.05*255), \n",
    "                                  per_channel=0.5)\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 1,
   "source": [
    "GaussianBlur"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0020.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n2501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0042.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0052.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0054.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0004.jpg\n5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n5401_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0024.jpg\n5401_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 07 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0015.jpg\nK713_300kx_store4_grid1_0017.jpg"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong2.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong3.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0015.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0055.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0069.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"GaussianBlur\"\n",
    "\n",
    "# blur images with a sigma of 0 to 3.0  \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "  iaa.GaussianBlur(sigma=(0, 3)) \n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "change brightness"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n0501_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0020.jpg\n0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0036.jpg\n0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0046.jpg\n0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0040.jpg\n2501_300kx_1nm_clhaadf3_0042.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0044.jpg\n2501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0050.jpg\n2501_300kx_1nm_clhaadf3_0052.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0054.jpg\n2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4ROI_100kx_4100CL_foil1.jpg\n5401_300kx_1nm_clhaadf3_0004.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n5401_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0022.jpg\n5401_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0026.jpg\n5401_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5ROI_100kx_4100CL_foil1 copy.jpg\n6ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7ROI_100kx_4100CL_foil1 copy.jpg\n9ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\nBF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\nBF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05.jpg\nBF X500K, 06 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06.jpg\nBF X500K, 07 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (2).jpg\nBF X500K, 08 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08.jpg\nBF X500K, 10 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\nBF X500K, 11 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (3).jpg\nBF X500K, 11.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (2).jpg\nBF X500K, 12 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\nBF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\nBF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\nK713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\nK713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0015.jpg\nK713_300kx_store4_grid1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0019.jpg\ndalong2.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong3.jpg\ng1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0055.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0057.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0059.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0061.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0063.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0065.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0067.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0069.jpg\nBF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"Brightness\"\n",
    "\n",
    "# Strengthen or weaken the contrast in each image.   \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "    iaa.Multiply((1.2, 1.5))\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Contrast Normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0020.jpg\n0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0036.jpg\n0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n0501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0048.jpg\n0501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n2501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0042.jpg\n2501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0046.jpg\n2501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0050.jpg\n2501_300kx_1nm_clhaadf3_0052.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0054.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n4ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0004.jpg\n5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n5401_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0024.jpg\n5401_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\nBF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\nBF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\nBF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\nBF X500K, 05.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06 (3).jpg\nBF X500K, 06.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 07 (2).jpg\nBF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\nBF X500K, 08.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (2).jpg\nBF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (2).jpg\nBF X500K, 11 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11.jpg\nBF X500K, 12 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (3).jpg\nBF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\nBF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\nBF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\nK713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\nK713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\nK713_300kx_store4_grid1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0017.jpg\nK713_300kx_store4_grid1_0019.jpg"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\ndalong2.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong3.jpg\ng1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0035.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0037.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0055.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0069.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"ContrastNormalization\"\n",
    "\n",
    "# Improve or worsen the contrast of images.\n",
    "\n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "    iaa.ContrastNormalization((0.8, 1.5), per_channel=True)\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Flip left-right"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0020.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n0501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0046.jpg\n0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0040.jpg\n2501_300kx_1nm_clhaadf3_0042.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0052.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0054.jpg\n2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0004.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n5401_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0022.jpg\n5401_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0026.jpg\n5401_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\nBF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\nBF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\nBF X500K, 05.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06 (3).jpg\nBF X500K, 06.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 07 (2).jpg\nBF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong2.jpg\ndalong3.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0055.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0069.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"Fliplr\"\n",
    "\n",
    "# Flip/mirror input images horizontally.\n",
    "   \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "        iaa.Fliplr(1.0)\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Flip up-down"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0018.jpg\n0501_300kx_1nm_clhaadf3_0020.jpg"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0030.jpg\n0501_300kx_1nm_clhaadf3_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0034.jpg\n0501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0046.jpg\n0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n2501_300kx_1nm_clhaadf3_0032.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0034.jpg\n2501_300kx_1nm_clhaadf3_0036.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0038.jpg\n2501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0042.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0044.jpg\n2501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0048.jpg\n2501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0052.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0054.jpg\n2ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3ROI_100kx_4100CL_foil1.jpg\n4ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0004.jpg\n5401_300kx_1nm_clhaadf3_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0016.jpg\n5401_300kx_1nm_clhaadf3_0018.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0024.jpg\n5401_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0030.jpg\n5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\nBF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\nBF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 04.jpg\nBF X500K, 05 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05.jpg\nBF X500K, 06 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06.jpg\nBF X500K, 07 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08.jpg\nBF X500K, 10 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (3).jpg\nBF X500K, 10.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (2).jpg\nBF X500K, 11 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11.jpg\nBF X500K, 12 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (3).jpg\nBF X500K, 12.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 13 (3).jpg\nBF X500K, 14.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 15.jpg\nBF X500K, 16.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0005.jpg\nK713_300kx_store4_grid1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0013.jpg\nK713_300kx_store4_grid1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0017.jpg\nK713_300kx_store4_grid1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong2.jpg\ndalong3.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0039.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0041.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0044.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0045.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0049.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0051.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0053.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0055.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0069.jpg\nBF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"Flipud\"\n",
    "\n",
    "# Flip/mirror input images vertically.\n",
    "   \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "        iaa.Flipud(1.0)\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 2,
   "source": [
    "Rotate 90 or 270 degree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0006.jpg\n0501_300kx_1nm_clhaadf3_0008.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0012.jpg\n0501_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0018.jpg\n0501_300kx_1nm_clhaadf3_0020.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0022.jpg\n0501_300kx_1nm_clhaadf3_0024.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0026.jpg\n0501_300kx_1nm_clhaadf3_0030.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0031.jpg\n0501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0036.jpg\n0501_300kx_1nm_clhaadf3_0040.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0044.jpg\n0501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0048.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0002.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0002_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0004_n.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0048 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0050 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0052 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0054 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0058 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0060 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0062 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0064 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0066 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0068 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0070 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0072 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0074 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0076 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0078 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0080 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0084 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0086 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0090 - Copy.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0092 - Copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0109.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain1_0111.jpg\n200kV_500kx_p2nm_8cmCL_grain1_0129.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain2_0010.jpg\n200kV_500kx_p2nm_8cmCL_grain2_0012.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200kV_500kx_p2nm_8cmCL_grain3_4_0258.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0032.jpg\n2501_300kx_1nm_clhaadf3_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0036.jpg\n2501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0040.jpg\n2501_300kx_1nm_clhaadf3_0042.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0044.jpg\n2501_300kx_1nm_clhaadf3_0046.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0048.jpg\n2501_300kx_1nm_clhaadf3_0050.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2501_300kx_1nm_clhaadf3_0052.jpg\n2501_300kx_1nm_clhaadf3_0054.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2ROI_100kx_4100CL_foil1.jpg\n3ROI_100kx_4100CL_foil1.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4ROI_100kx_4100CL_foil1.jpg\n5401_300kx_1nm_clhaadf3_0004.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0006.jpg\n5401_300kx_1nm_clhaadf3_0016.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0018.jpg\n5401_300kx_1nm_clhaadf3_0022.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0024.jpg\n5401_300kx_1nm_clhaadf3_0026.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5401_300kx_1nm_clhaadf3_0030.jpg\n5ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6ROI_100kx_4100CL_foil1 copy.jpg\n7ROI_100kx_4100CL_foil1 copy.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9ROI_100kx_4100CL_foil1.jpg\nBF X500K, 01 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 01 (3).jpg\nBF X500K, 02 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 03 (2).jpg\nBF X500K, 04.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (2).jpg\nBF X500K, 05.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 06 (3).jpg\nBF X500K, 06.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 07 (2).jpg\nBF X500K, 08 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 08 (3).jpg\nBF X500K, 08.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10 (2).jpg\nBF X500K, 10 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 10.jpg\nBF X500K, 11 (2).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 11 (3).jpg\nBF X500K, 11.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12 (2).jpg\nBF X500K, 12 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 12.jpg\nBF X500K, 13 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 14.jpg\nBF X500K, 15.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 16.jpg\nK713_300kx_store4_grid1_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0007.jpg\nK713_300kx_store4_grid1_0009.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0011.jpg\nK713_300kx_store4_grid1_0013.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0015.jpg\nK713_300kx_store4_grid1_0017.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "K713_300kx_store4_grid1_0019.jpg\ndalong2.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dalong3.jpg\ng1_backonzone_GBtowardsfrom_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g1_frontonzone_GBtowardsback_0006.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsfront_0034.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "g2_midonzone_GBtowardsmmiddle_0005.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0001.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0003.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0005.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0007.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0009.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0011.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0013.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0015.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0017.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0019.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0021.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0023.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0027.jpg\ngrid1_roi1_500kx_0p5nm_haadf1_0029.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi1_500kx_0p5nm_haadf1_0031.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0035.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0037.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0039.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0041.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0044.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0045.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0049.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0051.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0053.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0055.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0057.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0059.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0061.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0063.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0065.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid1_roi2_500kx_0p5nm_haadf1_0067.jpg\ngrid1_roi2_500kx_0p5nm_haadf1_0069.jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BF X500K, 05 (3).jpg\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0501_300kx_1nm_clhaadf3_0038.jpg\n"
     ]
    }
   ],
   "source": [
    "##################################################\n",
    "# 1. Define data augmentation operations\n",
    "##################################################\n",
    "\n",
    "trainImageTxtFile = dataPath + \"trainimages.txt\"\n",
    "imageList = getImageList(trainImageTxtFile)\n",
    "\n",
    "current_operation = \"Rot90or270Degree\"\n",
    "\n",
    "# Rotates all images by 90 or 270 degrees. \n",
    "   \n",
    "from imgaug import augmenters as iaa\n",
    "ia.seed(1)\n",
    "seq = iaa.Sequential([\n",
    "    iaa.Rot90([1, 3])\n",
    "])\n",
    "\n",
    "# seq = iaa.Sequential([ \n",
    "#     # Adjust contrast by scaling each pixel value to (I_ij/255.0)**gamma.\n",
    "#     # Values in the range gamma=(0.5, 2.0) seem to be sensible.\n",
    "#     iaa.GammaContrast((0.5, 1.5))\n",
    "# ])\n",
    "\n",
    "# Make our sequence deterministic.\n",
    "# We can now apply it to the image and then to the BBs and it will\n",
    "# lead to the same augmentations.\n",
    "# IMPORTANT: Call this once PER BATCH, otherwise you will always get the exactly same augmentations for every batch!\n",
    "seq_det = seq.to_deterministic()\n",
    "\n",
    "##################################################\n",
    "# 2. loop through images\n",
    "##################################################\n",
    "\n",
    "for img in imageList:\n",
    "    print(img)\n",
    "    # Grayscale images must have shape (height, width, 1) each.\n",
    "    #print(os.listdir(dataPath+'images/'))\n",
    "    currentimage = skimage.io.imread(dataPath+'images/'+img).astype(np.uint8)\n",
    "    # gray2rgb() simply duplicates the gray values over the three color channels.\n",
    "    currentimage = color.gray2rgb(currentimage)\n",
    "    bbs = bboxSetupInImage(dataPath , img.rstrip('.jpg') + '.txt',currentimage)\n",
    "    # Augment BBs and images.\n",
    "    # As we only have one image and list of BBs, we use\n",
    "    # [image] and [bbs] to turn both into lists (batches) for the# functions and then [0] to reverse that. In a real experiment, your\n",
    "    # variables would likely already be lists.\n",
    "    image_aug = seq_det.augment_images([currentimage])[0]\n",
    "    bbs_aug = seq_det.augment_bounding_boxes([bbs])[0]\n",
    "    augImgFolder = current_operation + \"Images\"\n",
    "    augTxTFolder = current_operation + \"TXT\"\n",
    "    createFolder(augImgFolder)\n",
    "    createFolder(augTxTFolder)\n",
    "    # Save aug images and bboxes\n",
    "    skimage.io.imsave(augImgFolder + '/'+\n",
    "                      img.rstrip('.jpg') + \n",
    "                      '_' + current_operation +\n",
    "                      '.jpg'\n",
    "                      ,image_aug)\n",
    "    saveAugbbox2TXT(augTxTFolder+ '/'+ \n",
    "                    img.rstrip('.jpg') + \n",
    "                    '_'+ current_operation +\n",
    "                    '.txt',bbs_aug)\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # image_before = bbs.draw_on_image(currentimage, thickness=2)\n",
    "    # image_after = bbs_aug.draw_on_image(image_aug, \n",
    "    # thickness=2, color=[0, 0, 255])\n",
    "    # image with BBs before/after augmentation (shown below)\n",
    "    # plot and save figures before and after data augmentations\n",
    "    #skimage.io.imshow(image_before)\n",
    "    #skimage.io.imshow(image_after)\n",
    "    # for i in range(len(bbs.bounding_boxes)):\n",
    "    #     before = bbs.bounding_boxes[i]\n",
    "    #     after = bbs_aug.bounding_boxes[i]\n",
    "    #     print(\"BB %d: (%.4f, %.4f, %.4f, %.4f) -> (%.4f, %.4f, %.4f, %.4f)\" % (\n",
    "    #         i,\n",
    "    #         before.x1, before.y1, before.x2, before.y2,\n",
    "    #         after.x1, after.y1, after.x2, after.y2)\n",
    "    #     )\n",
    "\n"
   ]
  },
  {
   "cell_type": "heading",
   "metadata": {},
   "level": 1,
   "source": [
    "## End"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    ""
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}