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",
"import cv2\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"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-09-29 03:44:54 -03:00
"plt.imshow((GR.raster[:3,:,:]).transpose((1, 2, 0))[::5,::5,:])\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
]
},
{
"cell_type": "code",
2020-09-29 03:44:54 -03:00
"execution_count": 443,
2020-09-15 02:15:15 -03:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2020-09-29 03:44:54 -03:00
"<matplotlib.image.AxesImage at 0x7f165b4c4b50>"
2020-09-15 02:15:15 -03:00
]
},
2020-09-29 03:44:54 -03:00
"execution_count": 443,
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-09-29 03:44:54 -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-09-29 03:44:54 -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-09-29 03:44:54 -03:00
"\n",
"H = HSV[:, :, 0]\n",
"V = HSV[:, :, 2]\n",
"\n",
"kernel_size = 31\n",
2020-09-15 02:15:15 -03:00
"edges = cv2.GaussianBlur((H).astype(np.uint8),(kernel_size, kernel_size),0)\n",
"\n",
"H2 = np.ones(H.shape)\n",
"#H2 = cv2.GaussianBlur(H2,(9,9),0).astype('float32')\n",
"H2[edges > 270] = 0\n",
"#H2[H < 270] = 1\n",
"H2[edges < 210] = 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",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
2020-09-29 03:44:54 -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-09-29 03:44:54 -03:00
"plt.imshow(erode_H2[::5,::5])"
2020-09-15 02:15:15 -03:00
]
},
{
"cell_type": "code",
2020-09-29 03:44:54 -03:00
"execution_count": 444,
2020-09-15 02:15:15 -03:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2020-09-29 03:44:54 -03:00
"<matplotlib.image.AxesImage at 0x7f165b3f0e50>"
2020-09-15 02:15:15 -03:00
]
},
2020-09-29 03:44:54 -03:00
"execution_count": 444,
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-09-29 03:44:54 -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-09-29 03:44:54 -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": [
"\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",
"label_im, nb_labels = ndimage.label(L)#, structure= np.ones((2,2))) ## Label each connect region\n",
"label_areas = np.bincount(label_im.ravel())[1:]\n",
"\n",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(L)\n",
"\n",
"plt.figure(1)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(label_im==1)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
2020-09-29 03:44:54 -03:00
"execution_count": 445,
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-09-29 03:44:54 -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-09-29 03:44:54 -03:00
"L_P = [] # (top-left, top-right, bottom-right, bottom-left) (x,y)\n",
"epsilon = 30\n",
"\n",
"\n",
2020-09-15 02:15:15 -03:00
"for i in range(1, nb_labels + 1):\n",
" \n",
" countours, hierarchy = cv2.findContours(np.uint8(label_im == 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",
" List_P = [(x_min, y_min), (x_max, y_min), (x_max, y_max), (x_min, y_max)]\n",
" L_P.append(List_P.copy())\n",
" \n",
"L_P = np.stack(L_P, axis=0)\n",
"\n",
"\n",
"\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",
"for i,Poly in enumerate(L_P):\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(i), bbox=dict(facecolor='red', alpha=0.8))\n",
"\n",
" ax.add_patch(poly)"
]
},
{
"cell_type": "code",
2020-09-29 03:44:54 -03:00
"execution_count": 494,
2020-09-15 02:15:15 -03:00
"metadata": {},
2020-09-29 03:44:54 -03:00
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f1678934610>"
]
},
"execution_count": 494,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"P = L_P[75] \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",
"HSV_A = Utils.rgb2hsv(A)\n",
"S = (HSV_A[:,:,1]* 255).astype(np.uint8)\n",
"V = (HSV_A[:,:,2]* 255).astype(np.uint8)\n",
"V[V>125] = 0\n",
"ret1, thresh1 = cv2.threshold(cv2.GaussianBlur(V, (11, 11),0), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)\n",
"ret2, thresh2 = cv2.threshold(cv2.GaussianBlur(S, (11, 11),0), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)\n",
"\n",
"thresh = thresh1 * thresh2\n",
"thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, np.ones((11,11), dtype=np.uint8), iterations = 2)\n",
"# Perform the distance transform algorithm\n",
"dist = cv2.distanceTransform(thresh, cv2.DIST_L2, 3)\n",
"# Normalize the distance image for range = {0.0, 1.0}\n",
"# so we can visualize and threshold it\n",
"cv2.normalize(dist, dist, 0, 1.0, cv2.NORM_MINMAX)\n",
"# Threshold to obtain the peaks\n",
"# This will be the markers for the foreground objects\n",
"_, dist = cv2.threshold((dist*255).astype(np.uint8), 0, 255 , cv2.THRESH_BINARY + cv2.THRESH_OTSU)\n",
"# Dilate a bit the dist image\n",
"kernel1 = np.ones((3,3), dtype=np.uint8)\n",
"dist = cv2.dilate(dist, kernel1 , iterations = 1)\n",
"dist = cv2.erode(dist, kernel1 , iterations = 1)\n",
"\n",
"dist[S < np.min(S) + np.ptp(S)/6] = 0\n",
"\n",
"\n",
"#dist[0: 10,-10:] = 255\n",
"dist[-10:,-10:] = 255\n",
"\n",
"dist_8u = dist.astype('uint8')\n",
"\n",
"plt.figure(0)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.title(\"Otsu\")\n",
"plt.imshow(thresh) \n",
"\n",
"plt.figure(1)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.title(\"distance\")\n",
"plt.imshow(dist_8u)\n",
" \n",
"# Create the CV_8U version of the distance image\n",
"# It is needed for findContours()\n",
"\n",
"# Find total markers\n",
"contours, _ = cv2.findContours(dist_8u, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)\n",
"# Create the marker image for the watershed algorithm\n",
"markers = np.zeros(dist.shape, dtype=np.int32)\n",
"# Draw the foreground markers\n",
"for i in range(len(contours)):\n",
" cv2.drawContours(markers, contours, i, (i+1), -1)\n",
"\n",
"\n",
"markers = cv2.watershed(cv2.cvtColor(thresh,cv2.COLOR_GRAY2RGB), markers)\n",
"#markers = cv2.watershed(A, markers)\n",
"\n",
"plt.figure(2)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.title(\"background\")\n",
"plt.imshow(markers==-1)\n",
"\n",
"Areas = []\n",
"for i in range(np.max(markers)):\n",
" Areas.append(np.sum(markers == i))\n",
"\n",
"m = np.mean(Areas)\n",
"h = np.std(Areas) * 1.6 / np.sqrt(np.size(Areas))\n",
"\n",
"L = (Areas > m - h) * (Areas < m + h)\n",
"\n",
"for i in range(np.max(markers)):\n",
" if not(L[i]):\n",
" markers[markers == i] = -1\n",
"\n",
"plt.figure(3)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(markers)"
]
},
{
"cell_type": "code",
"execution_count": 491,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f166938a3d0>"
]
},
"execution_count": 491,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x1152 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(3)\n",
"plt.figure(figsize=(16, 16))\n",
"plt.imshow(V)"
]
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
}