Files
Photovoltaic_Fault_Detector/GPS_Panel/Detect_Panel.ipynb

616 lines
1.9 MiB
Plaintext
Raw Normal View History

2020-09-15 02:15:15 -03:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/dlsaavedra/anaconda3/envs/new/lib/python3.7/site-packages/pysal/__init__.py:65: VisibleDeprecationWarning: PySAL's API will be changed on 2018-12-31. The last release made with this API is version 1.14.4. A preview of the next API version is provided in the `pysal` 2.0 prelease candidate. The API changes and a guide on how to change imports is provided at https://migrating.pysal.org\n",
" ), VisibleDeprecationWarning)\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from matplotlib import path\n",
"import matplotlib.patches as patches\n",
"from skimage import draw\n",
"import scipy.ndimage as ndimage\n",
"import Utils\n",
"import georasters as gr\n",
2020-10-06 18:34:28 -03:00
"import cv2\n",
"from Utils import doubleMADsfromMedian\n",
"from skimage.transform import resize"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Read Image"
2020-09-15 02:15:15 -03:00
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"path_C = \"El_Aguila/result_C.tif\"\n",
"\n",
"GR = gr.from_file(path_C)\n",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
2020-10-06 18:34:28 -03:00
"plt.imshow((GR.raster[:3,:,:]).transpose((1, 2, 0))[::10,::10,:])\n",
2020-09-15 02:15:15 -03:00
"\n",
2020-09-29 03:44:54 -03:00
"HSV = Utils.rgb2hsv((GR.raster[:3,:,:]).transpose((1, 2, 0)))\n"
2020-09-15 02:15:15 -03:00
]
},
2020-10-06 18:34:28 -03:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Segmentatio Panel_Strings"
]
},
2020-09-15 02:15:15 -03:00
{
"cell_type": "code",
2020-10-06 18:34:28 -03:00
"execution_count": 3,
2020-09-15 02:15:15 -03:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2020-10-06 18:34:28 -03:00
"<matplotlib.image.AxesImage at 0x7f56916cee90>"
2020-09-15 02:15:15 -03:00
]
},
2020-10-06 18:34:28 -03:00
"execution_count": 3,
2020-09-15 02:15:15 -03:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAb8AAAOICAYAAABG8/9OAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9d3hdWXWw/+5TbtdV78W2bMu99+mNqfkBAwPMDDCBDBkYCCRACCnwkfAjJF9IIYTQ6yR0mArT+9ieGXs87kUukiXLsrp0pdtP2d8fV+3qXsmSbcn2+LzP48e6Z5+z9zr77HPWLmuvJaSUODg4ODg4XEoo51sABwcHBweHmcZRfg4ODg4OlxyO8nNwcHBwuORwlJ+Dg4ODwyWHo/wcHBwcHC45HOXn4ODg4HDJMePKTwhxsxCiXghxVAjx1zNdvoODg4ODg5jJfX5CCBU4DLwNaAG2A3dJKQ/MmBAODg4ODpc8Mz3yWw8clVI2SCmTwC+Bd8ywDA4ODg4OlzjaDJdXCZwY9bsF2DD6BCHEfcB9ACrqGh/BmZPuIkaoKrbfjeiPnm9RHBwcHC4IBujtklIWZ0ubaeUnshxLm3eVUn4P+B5AUBTIDeL6mZDr4scGBsheww4ODg6XIM/K3zaNlzbT054tQPWo31VA6wzL4ODg4OBwiTPTym87MF8IMUcI4QLuBB6dYRkcHBwcHC5xZnTaU0ppCiH+DHgKUIEfSSn3z6QMDg4OFwlCIFQVaZrnWxKHtyAzveaHlPJx4PGZLtfBweHiwbp2NR2rPfhP2QR//tr5FsfhLciMKz8HB4cLB7WwAACru2dS5yseD3YiAZPYH6wWFyNUBbOtfcpyaVv3U/mGCzsyYr2s5ORgrpjLwCwPuT9zFKLD2eG4N3NwANRgEDYuP99izBiKx4O8fCV2qB871J+WJtxujBvWoPh8mdcVFSJcLhSPByUnZ/i4mpdL7J3rUYuL0WZVY9y4lqaPzOfm5w6h1s0dyXvVEtTidMtz+4qVCLc77ZhMJLDDYRSXPnys5f5lfO9n36T9SnvCewu/dyParOoJz3FwcJSfgwMg51Ry5APe8y0GkFJM6oJ501tGUSFtG31I08xcU7MsPCdCSCNzrc1sOYlQVdp/PYvkQ/kofj8Awutl/l8foPeBIM3vrUaNmsz+5Ume6VqE9LqGr6//Uz/xFTVpefbP8SJcrrRjQtM49q8bsP9QhDZnFgCl2+Pc8MonmfcLY9z7Em43S/9yN+03VE2pPhwuPRzldwmiBoMgBFpV5fkWZUYZeN9G+u/emD3xSBML//7oOS1PLSwYVg4A/XdvHB5NWdeuRl1cl/U6JT+Pjquy7ss9Jwjdhd3TS/m/v5pVTrWyHBFPoJZmyqD4fBz90gp+ueJHJL5Tjh2JIC9fiUwmaXtPHrlvP0HF17aibN6F2dhE8oYe7N0Hh8v1tWh4TqaPNPP+51XsgYH0glSVyy47wOMLH+XA50sRugv1hTeZ98FdKC/tHPfeZDJJ41/UUfLa5KZxHS5dHOX3FkXx+znxhctSim4MHe9bgrJsAX0/cKOWlmS9XqusIPT+cRTFNKDm5xO9fQNCm6ZlaCHwtSfJfzz1Ie774Ca06pHRgR2NYnV1n9Mie2+sw1oxOIJTVNqushGD03jClJi5Xowb16IWFQ5fo5WVIm2bwu+/OuXy1LzcrMe1ygqsa1cP/w6/YxX9D5ah5uWhrFjEyme7qP/qslSiEER/oNDzHRftt9SASPeaYMdiVL5k8p5//xyBh3ekyt15GKs3hHmiBWkk084f/VsaSaq+uhXr4JHT3otMJOh+Tw6Lf/wJHrn5G7R/dO1gwmnWGqVEbN2Ntb/+tGU4XNrMqGPrqeJ4eDlztPIy+n7sI+9+C7Mx08mB4vOhlJVgnTyFTCSy5qHk5GT2yKcJ4XZjXrYE9cWdkzKmOFvC79lAoCkK2/ZOe1lDTGt9Kird966n6MfbT7s1wLxuDd1L3ZT/YBdKQT7Nd8+i8oUB1BMdhNfOQvuLNvx6kv0nyil8xkPhrr7h0dswM7UNQVHp+8B6pID8n069Q+BwafOs/O0OKeXabGmO8nsrI8SMKBKHtwaxd6zn5DUKgWaFQIuF56OnaDhcxqJv9mEdOJx2rlZZwcG/qmHB53dhx+PnSWKHmUINBrGj0Ytuz+VEys/Z6vBWxlF8DlPA+8g25j0y8ls87KLOPIGVpR2ZJ1uZ98viC/5jqM6bA4qCdfjY+RblosZeMAulsfWcLw2cTxzl5+DgkJWx63djEa/u5kLvXsmWU6A4pg1ni9y+F+t8C3GOcZSfg4PDWxZnStZhPJwukYODg4PDJYej/BwcHC5JhO5CWbn4fIvhME0oyxdOmO5Mew6SvGktLX+cffE++JKXQKtF5woN3ymJvyM1+53MUehaKTCLk/gOu5n9q1YwTDBNwmtqhgPL+hr7oaEZpaQI6XUjm04CIJfMRcQMxMl2RF6Q2PxiLHeqP+Kv74bQANG1s5BKKiM1YeN+NbV/Kbm+Dj2UQBxoOKP7lZYFtkToI01AKSvB7uwGK/vs/pDHj9HXDB0fewxSG46Fpg2vuYicAEIIrO5eWFFHrMxHYHcr9ii/ktbK+SQK3fiaB+DIuHEox8e2sZMGiscN82ehdIWwe/uQloUQYlgWpawEu70zzShIuHRiG+uwdYG3NYI42Dj18rOg5OchkwYyEjkn+Y2H8HmxZ5efcZs4G+xYDISC4nEjk8kRQxghULxjPOcMPiOha8PbbBSPZ0pTlIrHg7Ts7OuSQqC43an8FBXscVarVi6ge3GA/F2TLnZqjNkOInTXaddRAbTZNVin2lPv23iyO5wWe8+hCdOdrQ6DtH/yMnb9zbeyplky5UtQFcrw30OoQhk+55mYl7jUids67w50oQxqv+0JyfZYLbNcneSpUXbHUu6arvMfYsB2sT9RSZnexxWeXgIi5ePwxbhOm5nHHYE2NFQA+u04vxqYj4XC+3IO0WqpvBRZcEb3+0rvPNoiQd5T9ebwsfnuNo4lS7Bl9gmB37ctQ1ctbio+kHb8ma5FXFl4BI9I7zx8/8hlXFN1lPneDgAKtDAqNg+0buKf5zzIIl3n0Ug+rUb+8DW3BvYzW/OxI2nxenTqLr6Oxwt5qmkRH12wmQ2+oxw3img38tgXqcCtmMOyZLtXt2Jwd04DXuFiv5E847odS6neR9zWCVn+0598FuSoMdZ5mng+MnGP91wTlxrf2nod3oIY9y96hR8d3cTAkTwA7CKDT617DnWUaUxLMp/Hji1lQ1UTr2xZgu2WvOfy1/n16+tRw6efjJIq3HLFTh5/fSXz/+z1jHR1cR21P23i8ddXohfHME/6EFncgdolSRTNhlbPlO5X71eoeXIAYUva1wcZqM3ua9QqMPEG41T9m0qs3EPhnx/nwNZaZv8+hpIYeVekphCu9pK3ox2rIMDRT+ssrjrFoa1zqP3dyL5Q5fgpZCIJcyoR7T1QkIt1KOWVSM3LQ3jc4zsRl/KS3Prk7PObBOMpv14rSlDxDCu5IaJ2qgfnU1wZ10yFqJ2k3UoyRw+cVT6XGoa0aDTj1OnTq1AcLlyWvPp+qt6dGQ5UrFrCA49+jxJ1etqGJW167RgAOYoLt9AnPLffjqMIQa6SGgH3WlGsUZ0BFYEuFDbHc1nr7hnO05AWIXtkNPzj0HJ6DT8fzH+N56MLWOM5znc7rgFgvq+DIn2AV0NzycaL+xZQWdVDb8RLMqGjHvWi94us5w5RuiNOIl+nr1al7LUorpO9APRsKid/Rxd2jofWq4P42mwKt54avi4+pwhPY1daXnaun/75OeS9chxpGIhgDnZ7J3Y0ynTi7PM7C+oNN2vccnDsNcKqLR/hU8te4BN5J84q/1+Hq/jHR9/NkQ98+6zymSq9VpRv9KzlS2NGcTPBLwfyuTOn96zy2J80uevHn+Pgx7KP1i9ldiSS5ClJ5jodqmlBFQpFk1SsqlDIV9OjY4z9PcTNvgQwkq8u1LRyPlcwtFfRxyLXCUBlY80raXncl9uaXZAx53HN6WVvNsP4hKB
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcUAAAOJCAYAAABsxDm6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9ebQlx1ng+YuI3O5+31bv1SaptMtavcmybLCBtjHQA+MeGmiY40M3tE3bDH0YmMOchumZ7kN3M93AgWY9rEMPTEOz242BdoMxGBvLiyzLkiyppFKptlf16i333S1vZkbE/JF5t7dUvbJqkxS/c55UNzMy8ovI5YuM+BZhrcXhcDgcDgfIay2Aw+FwOBzXC04pOhwOh8NR4JSiw+FwOBwFTik6HA6Hw1HglKLD4XA4HAVOKTocDofDUXDdKEUhxLuEEE8LIY4KIf73ay2Pw+FwOF59iOvBT1EIoYBngHcAJ4FPA//IWvvkNRXM4XA4HK8qrpcvxQeBo9ba5621CfDbwDddY5kcDofD8SrjelGKB4ETE79PFtscDofD4bhqeNdagAKxw7Zt87pCiPcC7wVQqNeXqV9puRwOh8PxCiOmS2IHO+md60YpngQOT/w+BJzeWsha+0vALwHUxax9k/iaqyOdw+FwOF4xfMr+xa77rpfp008DtwkhjgghAuDbgA9eY5kcDofD8SrjuvhStNZmQojvBf4cUMCvWWufuMZiORwOh+NVxnWhFAGstR8GPnyt5XA4HA7Hq5frZfrU4XA4HI5rjlOKDofD4XAUOKXocDgcDkeBU4oOh8PhcBQ4pehwOBwOR4FTig6Hw+FwFDil6HA4HA5HgVOKDofD4XAUOKXocDgcDkeBU4oOh8PhcBQ4pehwOBwOR4FTig6Hw+FwFDil6HA4HA5HwXWTJeN6Ry0sQKOKyDRYC8ail89h02TXY0QYAmAHg6slpsPhcDheAk4p7gUhOPbzS/znN/wKsc27LEHxI8++mxMn5gCQoaZUSSYOsTx88BjtNOJTn3otMhPbq83Ab2/fvhUTQFaxmMAiNAg9fYwwUFoWeH0LQFoR6FwfE2yCzCxqAH4v328FWAUyy8sM6oK0Kph5JkUmZlRv+3BAbyk/l9QQtOz2Nmions5Gx1lPokOB19VT5dK6h/YFwljClgZTyFrz2LhVFbIW8sm8DfUXzVQdSVXQvlFQPmMR20UZ9UWwOb3fSlADi9/OG5xVFL0FRfVURnQ+zgc5QhAvRKRVRRYJvHhcQdwUxHOCrGzRJUu4mk+weD2myo3OJ0CXBF5vel/QtqM+TyoCE+ws71S/lQR+f7wzCwVZOb93wvbOB2kf0qrI5RvkZYyXy6XScTmZWfzNbPp8NY/evrx9pVVDsJHvN4EkraqdhZxqvCXY1AhtUbFGxeP6RaoR/eIZEQJTi7CeBGMRxk7VITuD/LrsgEgziC8w0LSWbPnsrrtVvQ5LC/kAt9fHxvF4p+chKmVQCrveAlvcg0IiwgDb62N6PWwhr5AC4XnFae30AFgIZKmUD46H9YRhXl5KspOnRm0UnofNpq/FTsgoQr/2DsQnH7toWceXh1OKe8FaqqUBDxRffkP++t4/hHv3cPyRj14ZuS4BbQ2GnV8yEoESkp5JMIwVUSh8fHHhF6G2hoHNpo7zhSK100rRFwpZzNYPbDq1PRT+jnVvrWMo58XYehyAwYy2SySh8OjbhLYZv4hq0iMUPhIx1Vd7Pe+lyDVZ507yTpbbSZYLXU/I+3Vrma11TfbJ5HHD6zGw6VSfXexeGDK8vrHVpBOKLbbQs6qoz1KThkAI9Bblp4GW2f1cXeuxocu77v/d1Qc5+fdqmHZ7x/1n3nMPv/GDP0lqJSu6xnLWQNv8WtRUn4PeOpHIeHxwaLTdFxn7vDYvJPN8fOM2smJ7IDMORRsAbGYlHl29GWOLgaSwPLTwAvdXniEtBtML3iYVOSC1Hj/2/Ncx0Hk7b2ms8rdP3EawXChYD7K6AQN+SzK8bFnV8r9+7Z/wEx/5BiqnJHJikDNiy0BLGKicTlADgxxkyHh8kOzEYCYGn4MEm2lIE0y3P9pstR4r9l0GK68UhH2ZNrAuZu2bxNdctfO98Dv38fRX/Kerdj6Hw/Hl8cFumV98+C3olZUd95/5gYf5wg/8/FWW6uqi7fQsS8cOMNYSW8Pk5MaaCdCMZ57WdJXY+pzL6nyxexBTKP/T/Tqx9jFWsNKtkBbKvN8LyQY7D2BUqNGxh9z0EMXYK1iThOsThSQkNSgv29GMiBpYqs+28hkBQAwSyDSmtbnrQOdS+ZT9Czbt2o7TdO5L0eFwvKJQwoDcfVnC77w8PwQuha0zGw1R2rHckW1bBsVfBxqnr4BkOzM5q2EwnMwGJIVCbpmQ2Pr80997Hzf/0CevuCxOKTocjlcUTdlDlKJd98skfwlfjilxx+VBCcn4e1Nxi791ScWQNXZfZricuLtij1hzcYMYh8Nx7Tns9TCNyrUWw/EyxX0p7pEjP22579Pvp7/PUp6w9DSeIKmPy6V1i72APcJOFqfGB+NbvN54uwlBpPkiOUBWtiQLGtVWowV0HVqCDYkaGs8JSBqWiSUCrLSICYVuPItYHGANmGItQPiGaqOP1pJ+J8Sm28dKMtKYjo+3qUb1ciAmisaL9snAI+3ubDQzFkCgWt6oDV5XIJNxm7PyhCGIZzFlQ3TaGxkUWAX9mxJUSWPPhiOr3mBDEK1OT4v1FgVpbXfLzvwkEGyKkSGD8SHen4G0RKf9kWyQX1vjga5nIEG1FCITBK1x/yYNe8Ghpq4YgoUeOlNkve2Pn4w0Ji5uIGWpzfQwZrrCXifEJsU2CUv712l1S/Q3iq8jAaVGjJSFZaOw7Kt1ONeu0lkdG6gEtYRylGCsQBfnKIcJjSi/ofqpz0Yvn3bzlebuhWVW+lVOb9axhTHJfLXLgUqLO6pneax1kHa6/QutPQjpxOFIliOza/Sz8X2yv9zi7uqZ3TttAl9oDvjrSGGIRMo+1eZmP2afypXgwKY8mzYQmdm1Dm9g+bsB+CKlJlJaZtqArixTDqjdv0qiCaOx/JwZuriBIqEoiQCAvk2IJwyZysInFNPX3H2tXn84QxuH4+WOEBe3CNxLmcmyQyaOEZ5XWCHaqbJCKUQQYOLB2EJxK5PHSDVVTig18undk3hRmMuoFCIKOfaewzz6PT/Nx/plfvjffjfzn1nHPP70ru2V5TJyYQ6EwJYjRC+eKmvDgGy+Ot0PE6Q1H+Pl+4TN3VqGLiVJ3adzyMPrW0orGX5nbN2cNH3iGYUt6tURdPeLbYMoK20+uJbFALeeIlShdEsJ5XDa5HS21KPiDzjTrZMVBjCBl3Fn8xyzQXeb/FU1YH+wwUF/DTVhjbyg2lO/pbAsFD5EW4cIkRAYICn6TQENGRAK74op+iMffC+3f88jl6UuZ2jjcLyS2Yuyu5TB7y5ld/SjsxabZXvysRthpl+xl3x8d/pFf+NPbfDWk99H9UzG7J99kt2/EYvT93qY470LlhHP7L4vuMBxYfG3131zF5RijwhBV0jq9vz42gnBKaU4pbZLK1QJESzkPpOTir8UYdWEQpMS0yhmFrZ8eZuyj9AGMcivpfUlg/mIzkGP7n6BLk/fQ1nVYP3pOkSkCcu5gi+FCfcsnOFIeRVfjO8PX2huDc9yW3AOf2NvLkEvFfel6HA4HI5rjvC8UWCDqe2VCszUYWUNvb6+y9GXhvtSdDgcDsd1za4zBr0e7OJzeiVwq7wOh8PhcBQ4pehwOBzXCiEuycjIceVxStHhcDiuNlIh/ID19zzE/o8FqNfcftFDhOc5BXoVcGuKDofDcZXpfPMbWf7GAf/HG36fry4/z3vL33PRY2Sthj24SLpYwfvLz73iA3NfK5z1qcPhcFxthEBWq6y9+x6shPk//hKmk7uaXChHK8C5732YxV985NLcWBxTOOtTh8PhuJ6wFtNuM/+RY2RnltGAffj+PBLPI49fa+le1TiluAdUvU77a+7CeFB/ZhPRLeKqhQFrr51BaKgd7+M/v5xv933i2xY
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2020-10-06 18:34:28 -03:00
"V_thresh = 125\n",
"\n",
"\n",
"kernel_size = 31\n",
"H = cv2.GaussianBlur(HSV[:, :, 0],(kernel_size, kernel_size),0)\n",
"\n",
"H2 = np.ones(H.shape)\n",
"#H2 = cv2.GaussianBlur(H2,(9,9),0).astype('float32')\n",
"H2[H > 240] = 0\n",
"#H2[H < 270] = 1\n",
"H2[H < 210] = 0\n",
"\n",
"V = np.zeros(HSV.shape[:2])\n",
"V = cv2.normalize(HSV[:, :, 2], V, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)\n",
"V1 = (V > V_thresh).astype(np.uint8)\n",
"V1 = cv2.morphologyEx(V1, cv2.MORPH_CLOSE, np.ones((3,3), dtype=np.uint8),iterations = 5)\n",
"H2[V1 == 0] = 0\n",
"\n",
"kernel = np.ones((21, 21) , np.uint8) # note this is a vertical kernel\n",
"closing_H2 = cv2.morphologyEx(H2.astype(float), cv2.MORPH_CLOSE, kernel)\n",
"erode_H2 = cv2.morphologyEx(closing_H2.astype(float), cv2.MORPH_ERODE, kernel)\n",
"\n",
"\n",
"\n",
2020-09-15 02:15:15 -03:00
"\n",
"label_im, nb_labels = ndimage.label(erode_H2)#, structure= np.ones((2,2))) ## Label each connect region\n",
"label_areas = np.bincount(label_im.ravel())[1:]\n",
"\n",
2020-09-29 03:44:54 -03:00
"min_area = 20000\n",
2020-09-15 02:15:15 -03:00
"L = np.zeros(label_im.shape)\n",
"\n",
"for i in range(nb_labels):\n",
" if label_areas[i] > min_area:\n",
" L[label_im == (i + 1) ] = 1\n",
" \n",
" \n",
2020-10-06 18:34:28 -03:00
"label_im2, nb_labels2 = ndimage.label(L)#, structure= np.ones((2,2))) ## Label each connect region\n",
"label_areas2 = np.bincount(label_im2.ravel())[1:]\n",
2020-09-15 02:15:15 -03:00
"\n",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
2020-10-06 18:34:28 -03:00
"plt.imshow(H2[::5,::5])\n",
2020-09-15 02:15:15 -03:00
"\n",
"plt.figure(1)\n",
"plt.figure(figsize=(16, 16))\n",
2020-10-06 18:34:28 -03:00
"plt.imshow(erode_H2[::5,::5])\n",
"\n",
"plt.figure(2)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(L)\n",
"\n",
"plt.figure(3)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(label_im2==1)\n",
2020-09-15 02:15:15 -03:00
" "
]
},
{
2020-10-06 18:34:28 -03:00
"cell_type": "markdown",
2020-09-15 02:15:15 -03:00
"metadata": {},
2020-10-06 18:34:28 -03:00
"source": [
"# Save Panel_Strings coordinate"
]
2020-09-15 02:15:15 -03:00
},
{
"cell_type": "code",
2020-10-06 18:34:28 -03:00
"execution_count": 4,
2020-09-15 02:15:15 -03:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-15 02:15:15 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2020-10-06 18:34:28 -03:00
"L_strings = [] # {name: '001', points:(top-left, top-right, bottom-right, bottom-left) (x,y), 'panels' : }\n",
"\n",
2020-09-29 03:44:54 -03:00
"epsilon = 30\n",
"\n",
"\n",
2020-10-06 18:34:28 -03:00
"for i in range(1, nb_labels2 + 1):\n",
2020-09-15 02:15:15 -03:00
" \n",
2020-10-06 18:34:28 -03:00
" countours, hierarchy = cv2.findContours(np.uint8(label_im2 == i), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)\n",
2020-09-29 03:44:54 -03:00
" x_max = np.max(countours[0][:, 0, 0]) + epsilon\n",
" y_max = np.max(countours[0][:, 0, 1]) + epsilon\n",
" x_min = np.min(countours[0][:, 0, 0]) - epsilon\n",
" y_min = np.min(countours[0][:, 0, 1]) - epsilon\n",
2020-09-15 02:15:15 -03:00
" \n",
2020-10-06 18:34:28 -03:00
" List_P = np.array([(x_min, y_min), (x_max, y_min), (x_max, y_max), (x_min, y_max)])\n",
2020-09-15 02:15:15 -03:00
"\n",
2020-10-06 18:34:28 -03:00
" L_strings.append({'id': i, 'points' : List_P, 'panels' : []})\n",
2020-09-15 02:15:15 -03:00
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow((GR.raster[:3,:,:]).transpose((1, 2, 0)))\n",
"\n",
"ax = plt.gca()\n",
"\n",
2020-10-06 18:34:28 -03:00
"for Poly in L_strings:\n",
" \n",
" poly = patches.Polygon(Poly['points'],\n",
2020-09-15 02:15:15 -03:00
" linewidth=2,\n",
" edgecolor='red',\n",
" alpha=0.5,\n",
" fill = True)\n",
2020-10-06 18:34:28 -03:00
" plt.text(np.mean([x[0] for x in Poly['points']]), np.mean([y[1] for y in Poly['points']]) , str(Poly['id']), bbox=dict(facecolor='red', alpha=0.8))\n",
"\n",
" ax.add_patch(poly)\n",
" \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Segmentation Panel and save coordinates"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"V_thresh = 100\n",
2020-09-15 02:15:15 -03:00
"\n",
2020-10-06 18:34:28 -03:00
"\n",
"for Poly in L_strings:\n",
" \n",
" P = Poly['points']\n",
" x_min = np.min(P[:,0])\n",
" x_max = np.max(P[:,0])\n",
" y_min = np.min(P[:,1]) \n",
" y_max = np.max(P[:,1])\n",
" A = (GR.raster[:3,:,:]).transpose((1, 2, 0))[y_min : y_max, x_min : x_max,:]\n",
"\n",
" # rotate clockwise if vertival panel\n",
" if (x_max-x_min) < (y_max-y_min):\n",
" A = cv2.rotate(A, cv2.ROTATE_90_CLOCKWISE);\n",
"\n",
" HSV_A = Utils.rgb2hsv(A)\n",
"\n",
" H = cv2.GaussianBlur(HSV_A[:, :, 0],(kernel_size, kernel_size),0)\n",
" S = np.zeros(HSV_A.shape[:2])\n",
" S = cv2.normalize(HSV_A[:, :, 1], S, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)\n",
" V = np.zeros(HSV_A.shape[:2])\n",
" V = cv2.normalize(HSV_A[:, :, 2], V, 0, 255, cv2.NORM_MINMAX).astype(np.uint8)\n",
"\n",
" kernel_size = 31\n",
" H = cv2.GaussianBlur(H,(kernel_size, kernel_size),0)\n",
" Hs = np.ones(H.shape)\n",
" Hs[H > 270] = 0\n",
" Hs[H < 210] = 0\n",
"\n",
" G = cv2.cvtColor(A,cv2.COLOR_RGB2GRAY)\n",
"\n",
" ## Otsu in gray, Saturation and value channel ###\n",
"\n",
" V1 = (V > V_thresh).astype(np.uint8)\n",
" V1 = cv2.morphologyEx(V1, cv2.MORPH_CLOSE, np.ones((3,3), dtype=np.uint8),iterations = 5)\n",
"\n",
" G = cv2.cvtColor(A,cv2.COLOR_RGB2GRAY)\n",
" G[V1 == 0] = np.mean(G)\n",
" _, G = cv2.threshold(cv2.GaussianBlur(G, (3, 3),0), 0, 255 , cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)\n",
" G[V1 == 0] = 0\n",
" G[Hs == 0] = 0\n",
"\n",
" thresh = G \n",
" thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, np.ones((3,3), dtype=np.uint8),iterations = 1)\n",
" thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, np.ones((3,3), dtype=np.uint8), iterations = 1)\n",
"\n",
" ### Use Watershed in thresh segmentation\n",
" Areas,dist, markers = Utils.watershed_marked(thresh, min_Area = 200, threshold_median_Area = 8)\n",
" \n",
" \n",
" ### Save panel position ####\n",
" markers = markers > 1\n",
" label_im, nb_labels = ndimage.label(markers)\n",
" l_panels_coord = []\n",
" \n",
" for i in range(1, nb_labels + 1):\n",
" countours, hierarchy = cv2.findContours(np.uint8(label_im == i), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)\n",
" x_max_panel = np.max(countours[0][:, 0, 0]) \n",
" y_max_panel = np.max(countours[0][:, 0, 1]) \n",
" x_min_panel = np.min(countours[0][:, 0, 0]) \n",
" y_min_panel = np.min(countours[0][:, 0, 1])\n",
" \n",
" panels_coord = np.array([(x_min_panel, y_min_panel), \n",
" (x_max_panel, y_min_panel), \n",
" (x_max_panel, y_max_panel), \n",
" (x_min_panel, y_max_panel)])\n",
" \n",
" l_panels_coord.append(panels_coord)\n",
" \n",
" l_panels_coord_xywh = [(p[0][0], p[0][1], p[1][0] - p[0][0], p[2][1] - p[0][1]) for p in l_panels_coord]\n",
" max_width = max(l_panels_coord_xywh, key=lambda r: r[0] + r[2])[0]\n",
" max_height = max(l_panels_coord_xywh, key=lambda r: r[3])[3]\n",
" nearest = max_height * .7\n",
" l_panels_coord_xywh.sort(key=lambda r: (int(nearest * round(float(r[1])/nearest)) * max_width + r[0]))\n",
" \n",
" for i in range(1, nb_labels + 1): \n",
" \n",
" panels_coord = np.array([(l_panels_coord_xywh[i - 1][0], l_panels_coord_xywh[i - 1][1]), \n",
" (l_panels_coord_xywh[i - 1][0] + l_panels_coord_xywh[i - 1][2], l_panels_coord_xywh[i - 1][1]), \n",
" (l_panels_coord_xywh[i - 1][0] + l_panels_coord_xywh[i - 1][2], l_panels_coord_xywh[i - 1][1] + l_panels_coord_xywh[i - 1][3]), \n",
" (l_panels_coord_xywh[i - 1][0], l_panels_coord_xywh[i - 1][1] + l_panels_coord_xywh[i - 1][3])])\n",
" \n",
" if (x_max-x_min) < (y_max-y_min):\n",
" R = cv2.rotate(panels_coord, cv2.ROTATE_90_COUNTERCLOCKWISE)\n",
" panels_coord =np.array([R[:,0],\n",
" R[:,1],\n",
" R[:,2],\n",
" R[:,3]])\n",
" panels_coord[:, 1] = (y_max - y_min) - panels_coord[:, 1]\n",
" \n",
" Poly['panels'].append({'id' : i, 'points' : panels_coord + (x_min, y_min)})\n",
" \n",
" \n",
" if False:\n",
" \n",
" plt.imsave('Data_set/Train/Image_' + str(P_index) + '.png', resize(A, [100, 800]))\n",
" cv2.imwrite(r'Data_set/SegmentationLabel/Image_' + str(P_index) + '.png', resize(markers, [100, 800]))\n",
" \n",
" if False:\n",
" \n",
" plt.figure(0)\n",
" plt.figure(figsize=(16, 16))\n",
" plt.title(\"origin\")\n",
" plt.imshow(A) \n",
"\n",
" plt.figure(1)\n",
" plt.figure(figsize=(16, 16))\n",
" plt.title(\"Otsu\")\n",
" plt.imshow(thresh) \n",
"\n",
" plt.figure(3)\n",
" plt.figure(figsize=(16, 16))\n",
" plt.title(\"background\")\n",
" plt.imshow(markers== 0)\n",
"\n",
" plt.figure(4)\n",
" plt.figure(figsize=(16, 16))\n",
" plt.imshow(markers)"
2020-09-15 02:15:15 -03:00
]
},
{
"cell_type": "code",
2020-10-06 18:34:28 -03:00
"execution_count": 80,
2020-09-15 02:15:15 -03:00
"metadata": {},
2020-09-29 03:44:54 -03:00
"outputs": [
{
"data": {
"text/plain": [
2020-10-06 18:34:28 -03:00
"Text(0.5, 1.0, '60_2')"
2020-09-29 03:44:54 -03:00
]
},
2020-10-06 18:34:28 -03:00
"execution_count": 80,
2020-09-29 03:44:54 -03:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-29 03:44:54 -03:00
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2020-10-06 18:34:28 -03:00
"image/png": "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
2020-09-29 03:44:54 -03:00
"text/plain": [
2020-10-06 18:34:28 -03:00
"<Figure size 576x576 with 1 Axes>"
2020-09-29 03:44:54 -03:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2020-10-06 18:34:28 -03:00
"n_string = 60\n",
2020-09-29 03:44:54 -03:00
"\n",
2020-10-06 18:34:28 -03:00
"P_string = L_strings[n_string - 1]['points']\n",
"x_min = np.min(P_string[:,0])\n",
"x_max = np.max(P_string[:,0])\n",
"y_min = np.min(P_string[:,1]) \n",
"y_max = np.max(P_string[:,1])\n",
"A = (GR.raster[:3,:,:]).transpose((1, 2, 0))[y_min : y_max, x_min : x_max,:]\n",
2020-09-29 03:44:54 -03:00
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
2020-10-06 18:34:28 -03:00
"plt.imshow(A)\n",
2020-09-29 03:44:54 -03:00
"\n",
2020-10-06 18:34:28 -03:00
"ax = plt.gca()\n",
2020-09-29 03:44:54 -03:00
"\n",
2020-10-06 18:34:28 -03:00
"for dict_panel in L_strings[n_string - 1]['panels']:\n",
" \n",
" Poly = dict_panel['points'] - (x_min, y_min)\n",
" poly = patches.Polygon(Poly,\n",
" linewidth=2,\n",
" edgecolor='red',\n",
" alpha=0.5,\n",
" fill = True)\n",
" plt.text(np.mean([x[0] for x in Poly]), np.mean([y[1] for y in Poly]) , str(dict_panel['id']),\n",
" bbox=dict(facecolor='red', alpha=0.8), fontsize=6)\n",
2020-09-29 03:44:54 -03:00
"\n",
2020-10-06 18:34:28 -03:00
" ax.add_patch(poly)\n",
2020-09-29 03:44:54 -03:00
"\n",
"\n",
2020-10-06 18:34:28 -03:00
"n_panel = 2\n",
"name_panel = str(L_strings[n_string - 1]['id']) + '_' + str(L_strings[n_string - 1]['panels'][n_panel-1]['id'])\n",
"P = L_strings[n_string - 1]['panels'][n_panel-1]['points']\n",
"x_min = np.min(P[:,0])\n",
"x_max = np.max(P[:,0])\n",
"y_min = np.min(P[:,1]) \n",
"y_max = np.max(P[:,1])\n",
"A = (GR.raster[:3,:,:]).transpose((1, 2, 0))[y_min : y_max, x_min : x_max,:]\n",
2020-09-29 03:44:54 -03:00
"\n",
2020-10-06 18:34:28 -03:00
"plt.figure(1)\n",
"plt.figure(figsize=(8, 8))\n",
"plt.imshow(A)\n",
"plt.title(name_panel)\n"
2020-09-29 03:44:54 -03:00
]
},
{
"cell_type": "code",
2020-10-06 18:34:28 -03:00
"execution_count": null,
2020-09-29 03:44:54 -03:00
"metadata": {},
2020-10-06 18:34:28 -03:00
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
2020-09-15 02:15:15 -03:00
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}