{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport random\nimport matplotlib.pyplot as plt\nimport glob\nimport os\nfrom PIL import Image","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Install prereqs\n!git clone https://github.com/dwgoon/jpegio\n!pip install jpegio/.\nimport jpegio as jio","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data_dir = '/kaggle/input/alaska2-image-steganalysis/'\nbase_dir = data_dir + \"Cover/\"\ndirs = {\n    'JMiPOD': data_dir + \"JMiPOD/\",\n    'JUNIWARD': data_dir + \"JUNIWARD/\",\n    'UERD': data_dir + \"UERD/\"\n}\n\nnb_imgs = 20\nimgList = os.listdir(base_dir)[:nb_imgs]\nrandom.shuffle(imgList)\n\ndef get_DCT(im_path):\n    c_struct = jio.read(im_path)\n    out = np.zeros([512,512,3])\n    out[:,:,0] = c_struct.coef_arrays[0]\n    out[:,:,1] = c_struct.coef_arrays[1]\n    out[:,:,2] = c_struct.coef_arrays[2]\n    return out\n\nfor im in imgList: \n    fig, axs = plt.subplots(2, 4, figsize=(20, 10))\n    full_path = os.path.join(base_dir, im)\n    \n    # Print image\n    base_pixels = np.array(Image.open(full_path))\n    axs[0,0].axis('off')\n    axs[0,0].set_title('Original Image')\n    axs[0,0].imshow(base_pixels)\n    \n    # Print |DCT|\n    base_DCT = get_DCT(full_path)\n    axs[1,0].axis('off')\n    axs[1,0].set_title('Original Image |DCT|')\n    axs[1,0].imshow(abs(base_DCT))\n\n    for idx, entry in enumerate(dirs.items()):\n        name, dir_ = entry\n        full_path = os.path.join(dir_, im)\n        \n        # Print pixel difference\n        pixels = np.array(Image.open(full_path))\n        pixelsDiff = base_pixels - pixels;\n        axs[0,idx+1].axis('off')\n        axs[0,idx+1].set_title(f'{name} |$\\Delta$Pixel|')\n        axs[0,idx+1].imshow(abs(pixelsDiff))\n        \n        # Print DCT difference\n        DCT = get_DCT(full_path)\n        imgDiff = base_DCT - DCT;\n        axs[1,idx+1].axis('off')\n        axs[1,idx+1].set_title(f'{name} |$\\Delta$DCT|')\n        axs[1,idx+1].imshow(abs(imgDiff))","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":4}