|
| 1 | +{ |
| 2 | + "cells": [ |
| 3 | + { |
| 4 | + "cell_type": "code", |
| 5 | + "execution_count": null, |
| 6 | + "metadata": {}, |
| 7 | + "outputs": [], |
| 8 | + "source": [ |
| 9 | + "%load_ext autoreload\n", |
| 10 | + "%autoreload 2" |
| 11 | + ] |
| 12 | + }, |
| 13 | + { |
| 14 | + "cell_type": "code", |
| 15 | + "execution_count": null, |
| 16 | + "metadata": {}, |
| 17 | + "outputs": [], |
| 18 | + "source": [ |
| 19 | + "import os\n", |
| 20 | + "import sys\n", |
| 21 | + "module_path = os.path.abspath(os.path.join('..'))\n", |
| 22 | + "if module_path not in sys.path:\n", |
| 23 | + " sys.path.append(module_path)" |
| 24 | + ] |
| 25 | + }, |
| 26 | + { |
| 27 | + "cell_type": "code", |
| 28 | + "execution_count": null, |
| 29 | + "metadata": {}, |
| 30 | + "outputs": [], |
| 31 | + "source": [ |
| 32 | + "import cv2\n", |
| 33 | + "import sys\n", |
| 34 | + "import math\n", |
| 35 | + "import time\n", |
| 36 | + "import random\n", |
| 37 | + "import os\n", |
| 38 | + "from datetime import datetime\n", |
| 39 | + "from copy import deepcopy\n", |
| 40 | + "import numpy as np\n", |
| 41 | + "import matplotlib.pyplot as plt\n", |
| 42 | + "from skimage.metrics import structural_similarity as ssim\n", |
| 43 | + "from sewar.full_ref import vifp" |
| 44 | + ] |
| 45 | + }, |
| 46 | + { |
| 47 | + "cell_type": "code", |
| 48 | + "execution_count": null, |
| 49 | + "metadata": {}, |
| 50 | + "outputs": [], |
| 51 | + "source": [ |
| 52 | + "from iEBMO import bmoIE" |
| 53 | + ] |
| 54 | + }, |
| 55 | + { |
| 56 | + "cell_type": "code", |
| 57 | + "execution_count": null, |
| 58 | + "metadata": {}, |
| 59 | + "outputs": [], |
| 60 | + "source": [ |
| 61 | + "pSize = [1]\n", |
| 62 | + "maxIter = 1\n", |
| 63 | + "# imageNameList = ['./data/kodim/kodim04.png']\n", |
| 64 | + "# imageNameList = ['a0027.tiff', 'a0037.tiff', 'a0050.tiff']\n", |
| 65 | + "# imageNameList = ['a0027.png', 'a0037.png', 'a0050.png']\n", |
| 66 | + "\n", |
| 67 | + "# print(imageNameList)\n", |
| 68 | + "\n", |
| 69 | + "imageNameList = ['./data/kodim/kodim01.png', './data/kodim/kodim02.png', './data/kodim/kodim03.png', './data/kodim/kodim04.png',\n", |
| 70 | + " './data/kodim/kodim05.png', './data/kodim/kodim06.png', './data/kodim/kodim07.png', './data/kodim/kodim08.png', \n", |
| 71 | + " './data/kodim/kodim09.png', './data/kodim/kodim10.png','./data/kodim/kodim11.png', './data/kodim/kodim12.png', \n", |
| 72 | + " './data/kodim/kodim13.png', './data/kodim/kodim14.png', './data/kodim/kodim15.png', './data/kodim/kodim16.png', \n", |
| 73 | + " './data/kodim/kodim17.png', './data/kodim/kodim18.png', './data/kodim/kodim19.png', './data/kodim/kodim20.png', \n", |
| 74 | + " './data/kodim/kodim21.png', './data/kodim/kodim22.png', './data/kodim/kodim23.png', './data/kodim/kodim24.png', ]" |
| 75 | + ] |
| 76 | + }, |
| 77 | + { |
| 78 | + "cell_type": "code", |
| 79 | + "execution_count": null, |
| 80 | + "metadata": {}, |
| 81 | + "outputs": [], |
| 82 | + "source": [ |
| 83 | + "import datetime\n", |
| 84 | + "for i in range(len(imageNameList)):\n", |
| 85 | + " averagePsnr = 0\n", |
| 86 | + " averageSsim = 0\n", |
| 87 | + " averageVif = 0\n", |
| 88 | + " print(imageNameList[i])\n", |
| 89 | + " for popSize in pSize:\n", |
| 90 | + " print(popSize)\n", |
| 91 | + "\n", |
| 92 | + " inputName = \"GroundTruth/kodakDataset/\"+imageNameList[i]\n", |
| 93 | + " truthName = imageNameList[i]\n", |
| 94 | + "\n", |
| 95 | + " trImg = cv2.imread(truthName, 0)\n", |
| 96 | + " # cv2.imshow('input', trImg)\n", |
| 97 | + " histr = cv2.calcHist([trImg], [0], None, [256], [0, 256])\n", |
| 98 | + " plt.plot(histr)\n", |
| 99 | + " # histogram of ground truth\n", |
| 100 | + " name_image_list = imageNameList[i].split('/')\n", |
| 101 | + " time = datetime.datetime.now()\n", |
| 102 | + " print(time)\n", |
| 103 | + " plt.savefig(f\"./histogramsDIBCO/ht_{str(time).split('.')[1]}{name_image_list[-1]}\")\n", |
| 104 | + " plt.clf()\n", |
| 105 | + " cv2.imwrite(f\"./truthDIBCO/t_{str(time).split('.')[1]}{name_image_list[-1]}\", trImg)\n", |
| 106 | + "\n", |
| 107 | + " bestImage = deepcopy(trImg)\n", |
| 108 | + "\n", |
| 109 | + " maxPsnr = 0\n", |
| 110 | + " maxSsim = 0\n", |
| 111 | + " maxVif = 0\n", |
| 112 | + " maxfit = -1000\n", |
| 113 | + " for iteration in range(10):\n", |
| 114 | + " outputImage, fitval = bmoIE(truthName, popSize, maxIter)\n", |
| 115 | + "\n", |
| 116 | + " truthImage = cv2.imread(truthName, 0)\n", |
| 117 | + " psnrval = cv2.PSNR(outputImage, truthImage)\n", |
| 118 | + " ssimval = ssim(outputImage, truthImage)\n", |
| 119 | + " vifval = vifp(outputImage, truthImage)\n", |
| 120 | + " print(iteration,psnrval,ssimval,vifval,int((psnrval+ssimval+vifval)*100))\n", |
| 121 | + " print(psnrval, ssimval, vifval)\n", |
| 122 | + " \n", |
| 123 | + " # salvar metricas em arquivo\n", |
| 124 | + " with open('./metrics/metrics.txt', 'a') as f:\n", |
| 125 | + " f.write(f'{psnrval} {ssimval} {vifval} - {name_image_list[-1]}\\n')\n", |
| 126 | + " \n", |
| 127 | + " if (psnrval+ssimval+vifval) > maxfit:\n", |
| 128 | + " maxfit = psnrval+ssimval+vifval\n", |
| 129 | + " maxPsnr = psnrval\n", |
| 130 | + " maxSsim = ssimval\n", |
| 131 | + " maxVif = vifval\n", |
| 132 | + " bestImage = deepcopy(outputImage)\n", |
| 133 | + " # cv2.imshow(str(iteration+1),bestImage)\n", |
| 134 | + "\n", |
| 135 | + " print(maxPsnr, maxSsim, maxVif)\n", |
| 136 | + "\n", |
| 137 | + " averagePsnr += maxPsnr\n", |
| 138 | + " averageSsim += maxSsim\n", |
| 139 | + " averageVif += maxVif\n", |
| 140 | + " print(i+1,averagePsnr,averageSsim,averageVif)\n", |
| 141 | + "\n", |
| 142 | + " histr = cv2.calcHist([bestImage],[0],None,[256],[0,256])\n", |
| 143 | + " plt.plot(histr)\n", |
| 144 | + " time = datetime.datetime.now()\n", |
| 145 | + " plt.savefig(f\"./histogramsDIBCO/ho_{str(time).split('.')[1]}{name_image_list[-1]}\") #histogram of output image\n", |
| 146 | + " plt.clf()\n", |
| 147 | + " transImageName = \"o_\"+name_image_list[-1]\n", |
| 148 | + " cv2.imwrite(f\"./outputDIBCO/{str(time).split('.')[1]}{transImageName}\", bestImage)\n", |
| 149 | + "\n", |
| 150 | + "\n", |
| 151 | + " averagePsnr /= len(imageNameList)\n", |
| 152 | + " averageSsim /= len(imageNameList)\n", |
| 153 | + " averageVif /= len(imageNameList)\n", |
| 154 | + " print(\"final\")\n", |
| 155 | + " print(averagePsnr)\n", |
| 156 | + " print(averageSsim)\n", |
| 157 | + " print(averageVif)" |
| 158 | + ] |
| 159 | + } |
| 160 | + ], |
| 161 | + "metadata": { |
| 162 | + "language_info": { |
| 163 | + "name": "python" |
| 164 | + }, |
| 165 | + "orig_nbformat": 4 |
| 166 | + }, |
| 167 | + "nbformat": 4, |
| 168 | + "nbformat_minor": 2 |
| 169 | +} |
0 commit comments