├── .DS_Store ├── .gitignore ├── .ipynb_checkpoints ├── binary_to_trimap-checkpoint.ipynb └── trimap_tutorial-checkpoint.ipynb ├── LICENSE ├── README.md ├── __pycache__ ├── trimap_generate.cpython-36.pyc └── trimap_module.cpython-36.pyc ├── archive ├── binary_to_trimap.ipynb ├── trimap_module_20190519.py └── trimap_module_20190811.py ├── assets ├── .DS_Store ├── contours │ ├── point_mask_0.txt │ ├── point_mask_1.txt │ ├── point_mask_10.txt │ ├── point_mask_11.txt │ ├── point_mask_12 2.txt │ ├── point_mask_12.txt │ ├── point_mask_13 2.txt │ ├── point_mask_13.txt │ ├── point_mask_14 2.txt │ ├── point_mask_14.txt │ ├── point_mask_15 2.txt │ ├── point_mask_15.txt │ ├── point_mask_16 2.txt │ ├── point_mask_16.txt │ ├── point_mask_17 2.txt │ ├── point_mask_17.txt │ ├── point_mask_18 2.txt │ ├── point_mask_18.txt │ ├── point_mask_19 2.txt │ ├── point_mask_19.txt │ ├── point_mask_2 2.txt │ ├── point_mask_2.txt │ ├── point_mask_20 2.txt │ ├── point_mask_20.txt │ ├── point_mask_21 2.txt │ ├── point_mask_21.txt │ ├── point_mask_22 2.txt │ ├── point_mask_22.txt │ ├── point_mask_23 2.txt │ ├── point_mask_23.txt │ ├── point_mask_24 2.txt │ ├── point_mask_24.txt │ ├── point_mask_25 2.txt │ ├── point_mask_25.txt │ ├── point_mask_26 2.txt │ ├── point_mask_26.txt │ ├── point_mask_27 2.txt │ ├── point_mask_27.txt │ ├── point_mask_28 2.txt │ ├── point_mask_28.txt │ ├── point_mask_29 2.txt │ ├── point_mask_29.txt │ ├── point_mask_3 2.txt │ ├── point_mask_3.txt │ ├── point_mask_30 2.txt │ ├── point_mask_30.txt │ ├── point_mask_31 2.txt │ ├── point_mask_31.txt │ ├── point_mask_32 2.txt │ ├── point_mask_32.txt │ ├── point_mask_33 2.txt │ ├── point_mask_33.txt │ ├── point_mask_34 2.txt │ ├── point_mask_34.txt │ ├── point_mask_35 2.txt │ ├── point_mask_35.txt │ ├── point_mask_36 2.txt │ ├── point_mask_36.txt │ ├── point_mask_37 2.txt │ ├── point_mask_37.txt │ ├── point_mask_38 2.txt │ ├── point_mask_38.txt │ ├── point_mask_39 2.txt │ ├── point_mask_39.txt │ ├── point_mask_4 2.txt │ ├── point_mask_4.txt │ ├── point_mask_40 2.txt │ ├── point_mask_40.txt │ ├── point_mask_41 2.txt │ ├── point_mask_41.txt │ ├── point_mask_42 2.txt │ ├── point_mask_42.txt │ ├── point_mask_43 2.txt │ ├── point_mask_43.txt │ ├── point_mask_44 2.txt │ ├── point_mask_44.txt │ ├── point_mask_45 2.txt │ ├── point_mask_45.txt │ ├── point_mask_46 2.txt │ ├── point_mask_46.txt │ ├── point_mask_47 2.txt │ ├── point_mask_47.txt │ ├── point_mask_48 2.txt │ ├── point_mask_48.txt │ ├── point_mask_49 2.txt │ ├── point_mask_49.txt │ ├── point_mask_5 2.txt │ ├── point_mask_5.txt │ ├── point_mask_50 2.txt │ ├── point_mask_50.txt │ ├── point_mask_51 2.txt │ ├── point_mask_51.txt │ ├── point_mask_52 2.txt │ ├── point_mask_52.txt │ ├── point_mask_53 2.txt │ ├── point_mask_53.txt │ ├── point_mask_54 2.txt │ ├── point_mask_54.txt │ ├── point_mask_55 2.txt │ ├── point_mask_55.txt │ ├── point_mask_56 2.txt │ ├── point_mask_56.txt │ ├── point_mask_57 2.txt │ ├── point_mask_57.txt │ ├── point_mask_58 2.txt │ ├── point_mask_58.txt │ ├── point_mask_59 2.txt │ ├── point_mask_59.txt │ ├── point_mask_6 2.txt │ ├── point_mask_6.txt │ ├── point_mask_60 2.txt │ ├── point_mask_60.txt │ ├── point_mask_61 2.txt │ ├── point_mask_61.txt │ ├── point_mask_62 2.txt │ ├── point_mask_62.txt │ ├── point_mask_63 2.txt │ ├── point_mask_63.txt │ ├── point_mask_64 2.txt │ ├── point_mask_64.txt │ ├── point_mask_65 2.txt │ ├── point_mask_65.txt │ ├── point_mask_66 2.txt │ ├── point_mask_66.txt │ ├── point_mask_67 2.txt │ ├── point_mask_67.txt │ ├── point_mask_68 2.txt │ ├── point_mask_68.txt │ ├── point_mask_69 2.txt │ ├── point_mask_69.txt │ ├── point_mask_7 2.txt │ ├── point_mask_7.txt │ ├── point_mask_70 2.txt │ ├── point_mask_70.txt │ ├── point_mask_71 2.txt │ ├── point_mask_71.txt │ ├── point_mask_72 2.txt │ ├── point_mask_72.txt │ ├── point_mask_73 2.txt │ ├── point_mask_73.txt │ ├── point_mask_74 2.txt │ ├── point_mask_74.txt │ ├── point_mask_75 2.txt │ ├── point_mask_75.txt │ ├── point_mask_76 2.txt │ ├── point_mask_76.txt │ ├── point_mask_77 2.txt │ ├── point_mask_77.txt │ ├── point_mask_78 2.txt │ ├── point_mask_78.txt │ ├── point_mask_79 2.txt │ ├── point_mask_79.txt │ ├── point_mask_8 2.txt │ ├── point_mask_8.txt │ ├── point_mask_80 2.txt │ ├── point_mask_80.txt │ ├── point_mask_81 2.txt │ ├── point_mask_81.txt │ ├── point_mask_82 2.txt │ ├── point_mask_82.txt │ ├── point_mask_83 2.txt │ ├── point_mask_83.txt │ ├── point_mask_84 2.txt │ ├── point_mask_84.txt │ ├── point_mask_85 2.txt │ ├── point_mask_85.txt │ ├── point_mask_86 2.txt │ ├── point_mask_86.txt │ ├── point_mask_87 2.txt │ ├── point_mask_87.txt │ ├── point_mask_88 2.txt │ ├── point_mask_88.txt │ ├── point_mask_89 2.txt │ ├── point_mask_89.txt │ ├── point_mask_9 2.txt │ ├── point_mask_9.txt │ ├── point_mask_90 2.txt │ ├── point_mask_90.txt │ ├── point_mask_91 2.txt │ └── point_mask_91.txt ├── flowcharts │ ├── .DS_Store │ ├── trimap_flowchart.png │ └── trimap_flowchart_small.png └── polygons │ ├── .DS_Store │ ├── raw_mask_0.txt │ ├── raw_mask_1.txt │ ├── raw_mask_10.txt │ ├── raw_mask_11.txt │ ├── raw_mask_12.txt │ ├── raw_mask_13.txt │ ├── raw_mask_14.txt │ ├── raw_mask_15.txt │ ├── raw_mask_16.txt │ ├── raw_mask_17.txt │ ├── raw_mask_18.txt │ ├── raw_mask_19.txt │ ├── raw_mask_2.txt │ ├── raw_mask_20.txt │ ├── raw_mask_21.txt │ ├── raw_mask_22.txt │ ├── raw_mask_23.txt │ ├── raw_mask_24.txt │ ├── raw_mask_25.txt │ ├── raw_mask_26.txt │ ├── raw_mask_27.txt │ ├── raw_mask_28.txt │ ├── raw_mask_29.txt │ ├── raw_mask_3.txt │ ├── raw_mask_30.txt │ ├── raw_mask_31.txt │ ├── raw_mask_32.txt │ ├── raw_mask_33.txt │ ├── raw_mask_34.txt │ ├── raw_mask_35.txt │ ├── raw_mask_36.txt │ ├── raw_mask_37.txt │ ├── raw_mask_38.txt │ ├── raw_mask_39.txt │ ├── raw_mask_4.txt │ ├── raw_mask_40.txt │ ├── raw_mask_41.txt │ ├── raw_mask_42.txt │ ├── raw_mask_43.txt │ ├── raw_mask_44.txt │ ├── raw_mask_45.txt │ ├── raw_mask_46.txt │ ├── raw_mask_47.txt │ ├── raw_mask_48.txt │ ├── raw_mask_49.txt │ ├── raw_mask_5.txt │ ├── raw_mask_50.txt │ ├── raw_mask_51.txt │ ├── raw_mask_52.txt │ ├── raw_mask_53.txt │ ├── raw_mask_54.txt │ ├── raw_mask_55.txt │ ├── raw_mask_56.txt │ ├── raw_mask_57.txt │ ├── raw_mask_58.txt │ ├── raw_mask_59.txt │ ├── raw_mask_6.txt │ ├── raw_mask_60.txt │ ├── raw_mask_61.txt │ ├── raw_mask_62.txt │ ├── raw_mask_63.txt │ ├── raw_mask_64.txt │ ├── raw_mask_65.txt │ ├── raw_mask_66.txt │ ├── raw_mask_67.txt │ ├── raw_mask_68.txt │ ├── raw_mask_69.txt │ ├── raw_mask_7.txt │ ├── raw_mask_70.txt │ ├── raw_mask_71.txt │ ├── raw_mask_72.txt │ ├── raw_mask_73.txt │ ├── raw_mask_74.txt │ ├── raw_mask_75.txt │ ├── raw_mask_76.txt │ ├── raw_mask_77.txt │ ├── raw_mask_78.txt │ ├── raw_mask_79.txt │ ├── raw_mask_8.txt │ ├── raw_mask_80.txt │ ├── raw_mask_81.txt │ ├── raw_mask_82.txt │ ├── raw_mask_83.txt │ ├── raw_mask_84.txt │ ├── raw_mask_85.txt │ ├── raw_mask_86.txt │ ├── raw_mask_87.txt │ ├── raw_mask_88.txt │ ├── raw_mask_89.txt │ ├── raw_mask_9.txt │ ├── raw_mask_90.txt │ ├── raw_mask_91.txt │ └── raw_mask_92.txt ├── doc ├── Doxyfile ├── doxygen_log.txt ├── html │ ├── bc_s.png │ ├── bdwn.png │ ├── closed.png │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── dynsections.js │ ├── files.html │ ├── folderclosed.png │ ├── folderopen.png │ ├── index.html │ ├── jquery.js │ ├── menu.js │ ├── menudata.js │ ├── namespaces.html │ ├── namespacetrimap__module.html │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── open.png │ ├── search │ │ ├── all_0.html │ │ ├── all_0.js │ │ ├── close.png │ │ ├── files_0.html │ │ ├── files_0.js │ │ ├── mag_sel.png │ │ ├── namespaces_0.html │ │ ├── namespaces_0.js │ │ ├── nomatches.html │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ └── searchdata.js │ ├── splitbar.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ ├── tabs.css │ ├── trimap__module_8py.html │ └── trimap__module_8py_source.html ├── py_filter.bat.txt └── trimap_module.py ├── images ├── .DS_Store ├── examples │ ├── bg_img.png │ ├── closing.png │ ├── closing_trimap.png │ ├── closing_trimap_new.png │ ├── dilation_effect.gif │ ├── eroded_image.gif │ ├── erosion_effect.gif │ ├── fg_img.png │ ├── full_img.png │ ├── opening.png │ ├── opening_trimap.png │ ├── opening_trimap_new.png │ ├── seg_img.png │ ├── trimap.png │ ├── trimap_20.png │ └── trimap_30.png ├── practices │ ├── binary_0.png │ ├── binary_1.png │ ├── binary_2.png │ └── binary_3.png ├── results │ ├── 10px_test_image_00.png │ ├── 10px_test_image_01.png │ ├── 10px_test_image_03.png │ ├── 10px_test_image_05.png │ ├── 10px_test_image_07.png │ ├── 10px_test_image_09.png │ ├── 10px_test_image_1.png │ ├── 10px_test_image_11.png │ ├── 10px_test_image_2.png │ ├── 10px_test_image_Erosion_01.png │ ├── 10px_test_image_Erosion_03.png │ ├── 10px_test_image_Erosion_05.png │ ├── 10px_test_image_Erosion_07.png │ ├── 10px_test_image_Erosion_09.png │ ├── 10px_test_image_Erosion_11.png │ └── 20px_test_image_9.png └── test_images │ ├── test_image_0.png │ ├── test_image_1.png │ ├── test_image_10.png │ ├── test_image_11.png │ ├── test_image_12.png │ ├── test_image_2.png │ ├── test_image_3.png │ ├── test_image_4.png │ ├── test_image_5.png │ ├── test_image_6.png │ ├── test_image_7.png │ ├── test_image_8.png │ └── test_image_9.png ├── requirements.txt ├── src ├── binarymask.py ├── feature_extraction.py └── foreground_scaling.py ├── test ├── README.md ├── __pycache__ │ └── trimap_module.cpython-36.pyc └── test_trimap_module.py ├── trimap_class.py ├── trimap_module.py └── trimap_tutorial.ipynb /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | 53 | # Translations 54 | *.mo 55 | *.pot 56 | 57 | # Django stuff: 58 | *.log 59 | local_settings.py 60 | db.sqlite3 61 | db.sqlite3-journal 62 | 63 | # Flask stuff: 64 | instance/ 65 | .webassets-cache 66 | 67 | # Scrapy stuff: 68 | .scrapy 69 | 70 | # Sphinx documentation 71 | docs/_build/ 72 | 73 | # PyBuilder 74 | target/ 75 | 76 | # Jupyter Notebook 77 | .ipynb_checkpoints 78 | 79 | # IPython 80 | profile_default/ 81 | ipython_config.py 82 | 83 | # pyenv 84 | .python-version 85 | 86 | # pipenv 87 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 88 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 89 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 90 | # install all needed dependencies. 91 | #Pipfile.lock 92 | 93 | # celery beat schedule file 94 | celerybeat-schedule 95 | 96 | # SageMath parsed files 97 | *.sage.py 98 | 99 | # Environments 100 | .env 101 | .venv 102 | env/ 103 | venv/ 104 | ENV/ 105 | env.bak/ 106 | venv.bak/ 107 | 108 | # Spyder project settings 109 | .spyderproject 110 | .spyproject 111 | 112 | # Rope project settings 113 | .ropeproject 114 | 115 | # mkdocs documentation 116 | /site 117 | 118 | # mypy 119 | .mypy_cache/ 120 | .dmypy.json 121 | dmypy.json 122 | 123 | # Pyre type checker 124 | .pyre/ 125 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Leo Nugraha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Automatic Trimap Generator ## 2 | 3 | ##### Keywords: Alpha Compositioning,Trimap ##### 4 | ##### 關鍵: Alpha合成、三分圖 ##### 5 | ##### キーワード:アルファチャンネル、マスク画像 ##### 6 | 7 | ## Introduction ## 8 | 12 |

13 | 14 |

15 | In this equation, Ip denotes the entire image, Fp denotes a definite foreground, and Bp denotes a definite background.
16 | On the other hand, is an alpha matte constant with a value ranging between 0 and 1. An value of 0 indicates that the pixel belongs to a background; whereas an value of 1 indicates otherwise. Any value in between means a mixed pixel that has to be determined.

17 | 18 | ## Descriptions ## 19 | 28 |
Input: a binary image (from a segmented lesion) 29 |
Output: a trimap with unknown region (gray) from tumor dilation
30 | 31 | ## Flow Chart ## 32 |

33 | 34 | --- 35 | **TO DO:** 36 | - [ ] **Finding The Most Dominant Foreground** -- automatic kernel design (generate an odd-sized matrix from an integer) 37 | - [ ] **Contour Detection Module** -- an alternative method to circumscribe foreground without U-Net segmentation 38 | - [ ] **Mask Contour Module** -- create a binary mask from contour point polygon 39 | 40 | ## Examples ## 41 | **1 Dilating the binary image (trimap_module.py)**
42 | ```python 43 | import cv2, os, sys 44 | from trimap_module import trimap 45 | 46 | path = "./image/samples/seg_image.png"; 47 | image = extractImage(path); 48 | name = "testImage"; 49 | size = 10; # how many pixel extension do you want to dilate 50 | number = 1; # numbering purpose 51 | trimap(image, name, size, number, erosion=False) 52 | ``` 53 | |**FULL IMAGE**| **MASK IMAGE**|**FOREGROUND**| **BACKGROUND**| 54 | |:----------:|:----------:|:----------:|:----------:| 55 | |![alt text](./images/examples/full_img.png)| ![alt text](./images/examples/seg_img.png) | ![alt text](./images/examples/fg_img.png) | ![alt text](./images/examples/bg_img.png) 56 | 57 | 58 | |**BINARY IMAGE**|**TRIMAP (10 PX)**|**TRIMAP (20 PX)**|**TRIMAP (30 PX)**| 59 | |:----------:|:----------:|:----------:|:----------:| 60 | |![alt text](./images/examples/seg_img.png)|![alt text](./images/examples/trimap.png)|![alt text](./images/examples/trimap_20.png)|![alt text](./images/examples/trimap_30.png)| 61 | 62 | **2 Handling Non-Dominant Foreground (trimap_module.py)** 63 | ```python 64 | import cv2, os, sys 65 | from trimap_module import trimap 66 | path = "./image/test_images/test_image_10.png"; 67 | image = extractImage(path); 68 | 69 | kernel = np.ones( (9,9), np.uint8 ); 70 | opening = unit01.morph_close(image,kernel); 71 | trimap(opening, "trimap_result", 10, 1, erosion=False) 72 | ``` 73 | |**NOISES**|**ORIGINAL IMAGES**|**TRIMAPS PREVIOUS**|**TRIMAPS NEW**| 74 | |:----------|:----------:|:----------:|:----------:| 75 | |**Outside FG**|![alt text](./images/examples/opening.png)|![alt text](./images/examples/opening_trimap.png)|![alt text](./images/examples/opening_trimap_new.png)| 76 | |**Inside FG**|![alt text](./images/examples/closing.png)|![alt text](./images/examples/closing_trimap.png)|![alt text](./images/examples/closing_trimap_new.png)| 77 | 78 | **3 Impact of Eroding or Expanding Foreground (trimap_class.py)**
79 | ```python 80 | import cv2, os, sys 81 | from trimap_class import trimap 82 | path = "./image/test_images/test_image_12.png"; 83 | image = extractImage(path); 84 | 85 | trimap(image, ""trimap_result, 10, 1, DEFG=Erosion, num_iter=3); 86 | ``` 87 | The illustration starts with zero erosion/dilation; followed with one, three, five, until eleven iterations (an increment of two).
88 | 89 |

90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 |
Erosion Expansion
99 |


100 | 101 | 102 | **4 Image Processing using Feature Extraction Module (feature_extraction.py)**
103 | **Coming Soon** 104 | 105 | ## References ## 106 | 1. Vikas Gupta and Shanmuganathan Raman. (2017). "Automatic Trimap Generation for Image Matting". Indian Institute of Technology, Gandhinagar, IND [download](https://arxiv.org/pdf/1707.00333.pdf) 107 | 2. Olivier Juan and Reanud Keriven. (2005). "Trimap Segmentation for Fast and User-Friendly Alpha Matting". FRA [download](http://imagine.enpc.fr/publications/papers/05vlsm_c.pdf) 108 | 3. Jimei Yang, Brian Price, Scott Cohen, Honglak Lee, and Ming-Hsuan Yang. (2016). "Object Contour Detection with a Fully Convolutional Encoder-Decoder Network". Adobe Research, USA [download](https://arxiv.org/pdf/1603.04530.pdf) 109 | -------------------------------------------------------------------------------- /__pycache__/trimap_generate.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/__pycache__/trimap_generate.cpython-36.pyc -------------------------------------------------------------------------------- /__pycache__/trimap_module.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/__pycache__/trimap_module.cpython-36.pyc -------------------------------------------------------------------------------- /archive/trimap_module_20190519.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import cv2, os, sys 3 | import numpy as np 4 | 5 | def extractImage(path): 6 | # error handller if the intended path is not found 7 | image = cv2.imread(path, cv2.IMREAD_GRAYSCALE); 8 | return image 9 | 10 | def checkImage(image): 11 | """ 12 | Args: 13 | image: input image to be checked 14 | 15 | Returns: 16 | binary image 17 | 18 | Raises: 19 | RGB image, grayscale image, all-black, and all-white image 20 | 21 | """ 22 | if len(image.shape) > 2: 23 | print("ERROR: non-binary image (RGB)"); 24 | sys.exit(); 25 | 26 | smallest = image.min(axis=0).min(axis=0); # lowest pixel value; should be 0 (black) 27 | largest = image.max(axis=0).max(axis=0); # highest pixel value; should be 1 (white) 28 | 29 | if (smallest == 0 and largest == 0): 30 | print("ERROR: non-binary image (all black)"); 31 | sys.exit(); 32 | elif (smallest == 255 and largest == 255): 33 | print("ERROR: non-binary image (all white)"); 34 | sys.exit(); 35 | elif (smallest > 0 or largest < 255 ): 36 | print("ERROR: non-binary image (grayscale)"); 37 | sys.exit(); 38 | else: 39 | return True 40 | 41 | class Toolbox: 42 | def __init__(self, image): 43 | self.image = image; 44 | 45 | def printImage(self): 46 | """ 47 | Print image into a file for checking purpose 48 | unitTest = Toolbox(image); 49 | unitTest.printImage(image); 50 | """ 51 | 52 | f = open("image_results.dat", "w+") 53 | for i in range(0, self.image.shape[0]): 54 | for j in range(0, self.image.shape[1]): 55 | f.write("%d " %self.image[i,j]) 56 | f.write("\n") 57 | f.close() 58 | 59 | def saveImage(self): 60 | """ 61 | Save the image as a bmp file 62 | """ 63 | 64 | 65 | def displayImage(self): 66 | cv2.imshow('Displayed Image', self.image); 67 | cv2.waitKey(0); 68 | cv2.destroyAllWindows(); 69 | 70 | def opening(self, image): 71 | # FIXME: to be completed 72 | # Effective when dealing with salt pepper noise 73 | kernel = np.ones( (5,5), np.uint8 ) 74 | cv2.morphologyEx(self.image, cv2.MORPH_OPEN, kernel) 75 | return image 76 | 77 | def closing(self, image): 78 | # FIXME: to be completed 79 | # Effective when dealing with noises inside foreground 80 | kernel = np.ones( (5,5), np.uint8 ) 81 | cv2.morphologyEx(self.image, cv2.MORPH_CLOSE, kernel) 82 | return image 83 | 84 | 85 | def trimap(image, name, size, number, erosion=False): 86 | """ 87 | This function creates a trimap based on simple dilation algorithm 88 | Inputs [4]: a binary image (black & white only), name of the image, dilation pixels 89 | the last argument is optional; i.e., how many iterations will the image get eroded 90 | Output : a trimap 91 | """ 92 | checkImage(image); 93 | 94 | row = image.shape[0]; 95 | col = image.shape[1]; 96 | 97 | pixels = 2*size + 1; ## Double and plus 1 to have an odd-sized kernel 98 | kernel = np.ones((pixels,pixels),np.uint8) ## How many pixel of extension do I get 99 | 100 | if erosion is not False: 101 | erosion = int(erosion) 102 | erosion_kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 103 | image = cv2.erode(image, erosion_kernel, iterations=erosion) ## How many erosion do you expect 104 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 105 | # Error-handler to prevent entire foreground annihilation 106 | if cv2.countNonZero(image) == 0: 107 | print("ERROR: foreground has been entirely eroded"); 108 | sys.exit(); 109 | 110 | dilation = cv2.dilate(image, kernel, iterations = 1) 111 | 112 | dilation = np.where(dilation == 255, 127, dilation) ## WHITE to GRAY 113 | remake = np.where(dilation != 127, 0, dilation) ## Smoothing 114 | remake = np.where(image > 127, 200, dilation) ## mark the tumor inside GRAY 115 | 116 | remake = np.where(remake < 127, 0, remake) ## Embelishment 117 | remake = np.where(remake > 200, 0, remake) ## Embelishment 118 | remake = np.where(remake == 200, 255, remake) ## GRAY to WHITE 119 | 120 | ############################################# 121 | # Ensures only three pixel values available # 122 | # TODO: Optimization with Cython # 123 | ############################################# 124 | for i in range(0,row): 125 | for j in range (0,col): 126 | if (remake[i,j] != 0 and remake[i,j] != 255): 127 | remake[i,j] = 127; 128 | 129 | path = "./images/results/" ## Change the directory 130 | new_name = '{}px_'.format(size) + name + '_{}.png'.format(number); 131 | cv2.imwrite(os.path.join(path , new_name) , remake) 132 | 133 | 134 | ############################################# 135 | ### TESTING SECTION ### 136 | ############################################# 137 | if __name__ == '__main__': 138 | 139 | path = "./images/test_images/test_image_12.png"; 140 | image = extractImage(path) 141 | 142 | size = 10; 143 | number = path[-5]; 144 | title = "test_image" 145 | 146 | trimap(image, title, size, number, erosion=False); 147 | 148 | ### Testing Methods from the Toolbox Class 149 | ### unit01 = Toolbox(image); 150 | ### unit01.displayImage(); 151 | -------------------------------------------------------------------------------- /archive/trimap_module_20190811.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import cv2, os, sys 3 | import numpy as np 4 | 5 | def extractImage(path): 6 | # error handller if the intended path is not found 7 | image = cv2.imread(path, cv2.IMREAD_GRAYSCALE); 8 | return image 9 | 10 | def checkImage(image): 11 | """ 12 | Args: 13 | image: input image to be checked 14 | Returns: 15 | binary image 16 | Raises: 17 | RGB image, grayscale image, all-black, and all-white image 18 | 19 | """ 20 | if len(image.shape) > 2: 21 | print("ERROR: non-binary image (RGB)"); 22 | sys.exit(); 23 | 24 | smallest = image.min(axis=0).min(axis=0); # lowest pixel value; should be 0 (black) 25 | largest = image.max(axis=0).max(axis=0); # highest pixel value; should be 1 (white) 26 | 27 | if (smallest == 0 and largest == 0): 28 | print("ERROR: non-binary image (all black)"); 29 | sys.exit(); 30 | elif (smallest == 255 and largest == 255): 31 | print("ERROR: non-binary image (all white)"); 32 | sys.exit(); 33 | elif (smallest > 0 or largest < 255 ): 34 | print("ERROR: non-binary image (grayscale)"); 35 | sys.exit(); 36 | else: 37 | return True 38 | 39 | class Toolbox: 40 | def __init__(self, image): 41 | self.image = image; 42 | 43 | @property 44 | def printImage(self): 45 | """ 46 | Print image into a file for checking purpose 47 | unitTest = Toolbox(image); 48 | unitTest.printImage(image); 49 | """ 50 | f = open("image_results.dat", "w+") 51 | for i in range(0, self.image.shape[0]): 52 | for j in range(0, self.image.shape[1]): 53 | f.write("%d " %self.image[i,j]) 54 | f.write("\n") 55 | f.close() 56 | 57 | @property 58 | def displayImage(self): 59 | """ 60 | Display the image on a window 61 | Press any key to exit 62 | """ 63 | cv2.imshow('Displayed Image', self.image); 64 | cv2.waitKey(0); 65 | cv2.destroyAllWindows(); 66 | 67 | def saveImage(self, title, extension): 68 | """ 69 | Save as a specific image format (bmp, png, or jpeg) 70 | """ 71 | cv2.imwrite("{}.{}".format(title,extension), self.image); 72 | 73 | def morph_open(self, image, kernel): 74 | """ 75 | Remove all white noises or speckles outside images 76 | Need to tune the kernel size 77 | Instruction: 78 | unit01 = Toolbox(image); 79 | kernel = np.ones( (9,9), np.uint8 ); 80 | morph = unit01.morph_open(input_image, kernel); 81 | """ 82 | bin_open = cv2.morphologyEx(self.image, cv2.MORPH_OPEN, kernel) 83 | return bin_open 84 | 85 | def morph_close(self, image, kernel): 86 | """ 87 | Remove all black noises or speckles inside images 88 | Need to tune the kernel size 89 | Instruction: 90 | unit01 = Toolbox(image); 91 | kernel = np.ones( (11,11)_, np.uint8 ); 92 | morph = unit01.morph_close(input_image, kernel); 93 | """ 94 | bin_close = cv2.morphologyEx(self.image, cv2.MORPH_CLOSE, kernel) 95 | return bin_close 96 | 97 | 98 | def trimap(image, name, size, number, erosion=False): 99 | """ 100 | This function creates a trimap based on simple dilation algorithm 101 | Inputs [4]: a binary image (black & white only), name of the image, dilation pixels 102 | the last argument is optional; i.e., how many iterations will the image get eroded 103 | Output : a trimap 104 | """ 105 | checkImage(image); 106 | 107 | row = image.shape[0]; 108 | col = image.shape[1]; 109 | 110 | pixels = 2*size + 1; ## Double and plus 1 to have an odd-sized kernel 111 | kernel = np.ones((pixels,pixels),np.uint8) ## How many pixel of extension do I get 112 | 113 | if erosion is not False: 114 | erosion = int(erosion) 115 | erosion_kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 116 | image = cv2.erode(image, erosion_kernel, iterations=erosion) ## How many erosion do you expect 117 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 118 | # Error-handler to prevent entire foreground annihilation 119 | if cv2.countNonZero(image) == 0: 120 | print("ERROR: foreground has been entirely eroded"); 121 | sys.exit(); 122 | 123 | dilation = cv2.dilate(image, kernel, iterations = 1) 124 | 125 | dilation = np.where(dilation == 255, 127, dilation) ## WHITE to GRAY 126 | remake = np.where(dilation != 127, 0, dilation) ## Smoothing 127 | remake = np.where(image > 127, 200, dilation) ## mark the tumor inside GRAY 128 | 129 | remake = np.where(remake < 127, 0, remake) ## Embelishment 130 | remake = np.where(remake > 200, 0, remake) ## Embelishment 131 | remake = np.where(remake == 200, 255, remake) ## GRAY to WHITE 132 | 133 | ############################################# 134 | # Ensures only three pixel values available # 135 | # TODO: Optimization with Cython # 136 | ############################################# 137 | for i in range(0,row): 138 | for j in range (0,col): 139 | if (remake[i,j] != 0 and remake[i,j] != 255): 140 | remake[i,j] = 127; 141 | 142 | path = "./images/results/" ## Change the directory 143 | new_name = '{}px_'.format(size) + name + '_{}.png'.format(number); 144 | cv2.imwrite(os.path.join(path , new_name) , remake) 145 | 146 | 147 | ############################################# 148 | ### TESTING SECTION ### 149 | ############################################# 150 | if __name__ == '__main__': 151 | 152 | path = "./images/test_images/test_image_11.png"; 153 | image = extractImage(path) 154 | 155 | size = 10; 156 | number = path[-5]; 157 | title = "test_image" 158 | 159 | unit01 = Toolbox(image); 160 | kernel1 = np.ones( (11,11), np.uint8 ); 161 | unit01.displayImage; 162 | 163 | opening = unit01.morph_close(image,kernel1); 164 | trimap(opening, title, size, number, erosion=False); 165 | unit02 = Toolbox(opening); 166 | unit02.displayImage; 167 | 168 | ######################################################## 169 | ## Default instruction (no binary opening or closing ## 170 | ## trimap(image, title, size, number, erosion=False); ## 171 | ######################################################## 172 | -------------------------------------------------------------------------------- /assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/.DS_Store -------------------------------------------------------------------------------- /assets/flowcharts/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/flowcharts/.DS_Store -------------------------------------------------------------------------------- /assets/flowcharts/trimap_flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/flowcharts/trimap_flowchart.png -------------------------------------------------------------------------------- /assets/flowcharts/trimap_flowchart_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/flowcharts/trimap_flowchart_small.png -------------------------------------------------------------------------------- /assets/polygons/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/polygons/.DS_Store -------------------------------------------------------------------------------- /assets/polygons/raw_mask_0.txt: -------------------------------------------------------------------------------- 1 | -115.479 -60.6933 -120.5 2 | -113.33 -60.6933 -120.5 3 | -111.182 -60.6933 -120.5 4 | -109.033 -60.6933 -120.5 5 | -107.959 -59.6191 -120.5 6 | -106.885 -58.5449 -120.5 7 | -105.811 -57.4707 -120.5 8 | -104.736 -56.3965 -120.5 9 | -103.662 -55.3223 -120.5 10 | -102.588 -54.248 -120.5 11 | -101.514 -53.1738 -120.5 12 | -100.439 -52.0996 -120.5 13 | -98.291 -52.0996 -120.5 14 | -97.2168 -51.0254 -120.5 15 | -96.1426 -49.9512 -120.5 16 | -93.9941 -49.9512 -120.5 17 | -91.8457 -49.9512 -120.5 18 | -90.7715 -48.8769 -120.5 19 | -89.6973 -47.8027 -120.5 20 | -87.5488 -47.8027 -120.5 21 | -85.4004 -47.8027 -120.5 22 | -83.252 -47.8027 -120.5 23 | -81.1035 -47.8027 -120.5 24 | -80.0293 -46.7285 -120.5 25 | -78.9551 -45.6543 -120.5 26 | -76.8066 -45.6543 -120.5 27 | -74.6582 -45.6543 -120.5 28 | -73.584 -44.5801 -120.5 29 | -72.5098 -43.5058 -120.5 30 | -70.3613 -43.5058 -120.5 31 | -69.2871 -42.4316 -120.5 32 | -68.2129 -41.3574 -120.5 33 | -66.0644 -41.3574 -120.5 34 | -64.9902 -40.2832 -120.5 35 | -63.916 -39.209 -120.5 36 | -62.8418 -38.1347 -120.5 37 | -61.7676 -37.0605 -120.5 38 | -60.6933 -35.9863 -120.5 39 | -59.6191 -34.9121 -120.5 40 | -57.4707 -34.9121 -120.5 41 | -56.3965 -33.8379 -120.5 42 | -55.3223 -32.7637 -120.5 43 | -53.1738 -32.7637 -120.5 44 | -52.0996 -31.6894 -120.5 45 | -51.0254 -30.6152 -120.5 46 | -49.9512 -29.541 -120.5 47 | -48.8769 -28.4668 -120.5 48 | -46.7285 -28.4668 -120.5 49 | -45.6543 -27.3926 -120.5 50 | -45.6543 -25.2441 -120.5 51 | -44.5801 -24.1699 -120.5 52 | -43.5058 -23.0957 -120.5 53 | -42.4316 -22.0215 -120.5 54 | -40.2832 -22.0215 -120.5 55 | -39.209 -20.9472 -120.5 56 | -38.1347 -19.873 -120.5 57 | -35.9863 -19.873 -120.5 58 | -34.9121 -18.7988 -120.5 59 | -33.8379 -17.7246 -120.5 60 | -31.6894 -17.7246 -120.5 61 | -29.541 -17.7246 -120.5 62 | -28.4668 -16.6504 -120.5 63 | -27.3926 -15.5761 -120.5 64 | -25.2441 -15.5761 -120.5 65 | -24.1699 -14.5019 -120.5 66 | -23.0957 -13.4277 -120.5 67 | -20.9472 -13.4277 -120.5 68 | -19.873 -12.3535 -120.5 69 | -18.7988 -11.2793 -120.5 70 | -17.7246 -10.205 -120.5 71 | -16.6504 -9.13083 -120.5 72 | -14.5019 -9.13083 -120.5 73 | -13.4277 -8.05661 -120.5 74 | -12.3535 -6.98239 -120.5 75 | -11.2793 -5.90817 -120.5 76 | -10.205 -4.83395 -120.5 77 | -8.05661 -4.83395 -120.5 78 | -6.98239 -3.75973 -120.5 79 | -5.90817 -2.68552 -120.5 80 | -4.83395 -1.6113 -120.5 81 | -3.75973 -0.537078 -120.5 82 | -2.68552 0.537142 -120.5 83 | -1.6113 1.61136 -120.5 84 | 0.537142 1.61136 -120.5 85 | 1.61136 2.68558 -120.5 86 | 2.68558 3.7598 -120.5 87 | 3.7598 4.83402 -120.5 88 | 4.83402 5.90824 -120.5 89 | 6.98246 5.90824 -120.5 90 | 8.05668 6.98246 -120.5 91 | 9.13089 8.05668 -120.5 92 | 10.2051 9.13089 -120.5 93 | 11.2793 10.2051 -120.5 94 | 12.3536 11.2793 -120.5 95 | 13.4278 12.3536 -120.5 96 | 15.5762 12.3536 -120.5 97 | 16.6504 13.4278 -120.5 98 | 17.7246 14.502 -120.5 99 | 19.8731 14.502 -120.5 100 | 22.0215 14.502 -120.5 101 | 23.0957 15.5762 -120.5 102 | 24.17 16.6504 -120.5 103 | 26.3184 16.6504 -120.5 104 | 28.4668 16.6504 -120.5 105 | 29.5411 17.7246 -120.5 106 | 30.6153 18.7989 -120.5 107 | 32.7637 18.7989 -120.5 108 | 33.8379 19.8731 -120.5 109 | 34.9122 20.9473 -120.5 110 | 37.0606 20.9473 -120.5 111 | 38.1348 22.0215 -120.5 112 | 39.209 23.0957 -120.5 113 | 41.3575 23.0957 -120.5 114 | 42.4317 24.17 -120.5 115 | 43.5059 25.2442 -120.5 116 | 44.5801 26.3184 -120.5 117 | 44.5801 28.4668 -120.5 118 | 45.6543 29.5411 -120.5 119 | 46.7286 30.6153 -120.5 120 | 46.7286 32.7637 -120.5 121 | 47.8028 33.8379 -120.5 122 | 48.877 34.9122 -120.5 123 | 49.9512 35.9864 -120.5 124 | 51.0254 37.0606 -120.5 125 | 52.0997 38.1348 -120.5 126 | 53.1739 39.209 -120.5 127 | 54.2481 40.2832 -120.5 128 | 56.3965 40.2832 -120.5 129 | 57.4708 41.3575 -120.5 130 | 58.545 42.4317 -120.5 131 | 60.6934 42.4317 -120.5 132 | 61.7676 43.5059 -120.5 133 | 62.8419 44.5801 -120.5 134 | 64.9903 44.5801 -120.5 135 | 66.0645 45.6543 -120.5 136 | 67.1387 46.7286 -120.5 137 | 69.2872 46.7286 -120.5 138 | 70.3614 47.8028 -120.5 139 | 71.4356 48.877 -120.5 140 | 73.584 48.877 -120.5 141 | 74.6583 49.9512 -120.5 142 | 75.7325 51.0254 -120.5 143 | 76.8067 52.0997 -120.5 144 | 77.8809 53.1739 -120.5 145 | 80.0294 53.1739 -120.5 146 | 81.1036 54.2481 -120.5 147 | 82.1778 55.3223 -120.5 148 | 84.3262 55.3223 -120.5 149 | 85.4005 56.3965 -120.5 150 | 85.4005 58.545 -120.5 151 | 84.3262 59.6192 -120.5 152 | 83.252 60.6934 -120.5 153 | 82.1778 61.7676 -120.5 154 | 81.1036 62.8419 -120.5 155 | 80.0294 63.9161 -120.5 156 | 77.8809 63.9161 -120.5 157 | 76.8067 64.9903 -120.5 158 | 75.7325 66.0645 -120.5 159 | 73.584 66.0645 -120.5 160 | 72.5098 67.1387 -120.5 161 | 71.4356 68.2129 -120.5 162 | 69.2872 68.2129 -120.5 163 | 68.2129 69.2872 -120.5 164 | 67.1387 70.3614 -120.5 165 | 64.9903 70.3614 -120.5 166 | 62.8419 70.3614 -120.5 167 | 60.6934 70.3614 -120.5 168 | 58.545 70.3614 -120.5 169 | 57.4708 71.4356 -120.5 170 | 56.3965 72.5098 -120.5 171 | 54.2481 72.5098 -120.5 172 | 52.0997 72.5098 -120.5 173 | 49.9512 72.5098 -120.5 174 | 47.8028 72.5098 -120.5 175 | 45.6543 72.5098 -120.5 176 | 43.5059 72.5098 -120.5 177 | 41.3575 72.5098 -120.5 178 | 39.209 72.5098 -120.5 179 | 38.1348 71.4356 -120.5 180 | 37.0606 70.3614 -120.5 181 | 34.9122 70.3614 -120.5 182 | 32.7637 70.3614 -120.5 183 | 30.6153 70.3614 -120.5 184 | 29.5411 69.2872 -120.5 185 | 28.4668 68.2129 -120.5 186 | 26.3184 68.2129 -120.5 187 | 24.17 68.2129 -120.5 188 | 22.0215 68.2129 -120.5 189 | 20.9473 67.1387 -120.5 190 | 19.8731 66.0645 -120.5 191 | 17.7246 66.0645 -120.5 192 | 15.5762 66.0645 -120.5 193 | 13.4278 66.0645 -120.5 194 | 11.2793 66.0645 -120.5 195 | 10.2051 64.9903 -120.5 196 | 9.13089 63.9161 -120.5 197 | 6.98246 63.9161 -120.5 198 | 4.83402 63.9161 -120.5 199 | 2.68558 63.9161 -120.5 200 | 0.537142 63.9161 -120.5 201 | -1.6113 63.9161 -120.5 202 | -3.75973 63.9161 -120.5 203 | -5.90817 63.9161 -120.5 204 | -6.98239 64.9903 -120.5 205 | -8.05661 66.0645 -120.5 206 | -10.205 66.0645 -120.5 207 | -12.3535 66.0645 -120.5 208 | -14.5019 66.0645 -120.5 209 | -15.5761 67.1387 -120.5 210 | -16.6504 68.2129 -120.5 211 | -18.7988 68.2129 -120.5 212 | -20.9472 68.2129 -120.5 213 | -22.0215 69.2872 -120.5 214 | -23.0957 70.3614 -120.5 215 | -25.2441 70.3614 -120.5 216 | -27.3926 70.3614 -120.5 217 | -29.541 70.3614 -120.5 218 | -31.6894 70.3614 -120.5 219 | -32.7637 71.4356 -120.5 220 | -33.8379 72.5098 -120.5 221 | -35.9863 72.5098 -120.5 222 | -38.1347 72.5098 -120.5 223 | -40.2832 72.5098 -120.5 224 | -42.4316 72.5098 -120.5 225 | -44.5801 72.5098 -120.5 226 | -46.7285 72.5098 -120.5 227 | -48.8769 72.5098 -120.5 228 | -51.0254 72.5098 -120.5 229 | -53.1738 72.5098 -120.5 230 | -55.3223 72.5098 -120.5 231 | -57.4707 72.5098 -120.5 232 | -59.6191 72.5098 -120.5 233 | -61.7676 72.5098 -120.5 234 | -63.916 72.5098 -120.5 235 | -66.0644 72.5098 -120.5 236 | -67.1387 71.4356 -120.5 237 | -68.2129 70.3614 -120.5 238 | -70.3613 70.3614 -120.5 239 | -72.5098 70.3614 -120.5 240 | -73.584 69.2872 -120.5 241 | -74.6582 68.2129 -120.5 242 | -76.8066 68.2129 -120.5 243 | -77.8809 67.1387 -120.5 244 | -78.9551 66.0645 -120.5 245 | -81.1035 66.0645 -120.5 246 | -82.1777 64.9903 -120.5 247 | -83.252 63.9161 -120.5 248 | -84.3262 62.8419 -120.5 249 | -85.4004 61.7676 -120.5 250 | -87.5488 61.7676 -120.5 251 | -88.623 60.6934 -120.5 252 | -89.6973 59.6192 -120.5 253 | -90.7715 58.545 -120.5 254 | -91.8457 57.4708 -120.5 255 | -92.9199 56.3965 -120.5 256 | -93.9941 55.3223 -120.5 257 | -95.0684 54.2481 -120.5 258 | -96.1426 53.1739 -120.5 259 | -97.2168 52.0997 -120.5 260 | -98.291 51.0254 -120.5 261 | -99.3652 49.9512 -120.5 262 | -100.439 48.877 -120.5 263 | -101.514 47.8028 -120.5 264 | -102.588 46.7286 -120.5 265 | -103.662 45.6543 -120.5 266 | -104.736 44.5801 -120.5 267 | -105.811 43.5059 -120.5 268 | -105.811 41.3575 -120.5 269 | -106.885 40.2832 -120.5 270 | -107.959 39.209 -120.5 271 | -109.033 38.1348 -120.5 272 | -110.107 37.0606 -120.5 273 | -110.107 34.9122 -120.5 274 | -111.182 33.8379 -120.5 275 | -112.256 32.7637 -120.5 276 | -112.256 30.6153 -120.5 277 | -113.33 29.5411 -120.5 278 | -114.404 28.4668 -120.5 279 | -114.404 26.3184 -120.5 280 | -115.479 25.2442 -120.5 281 | -116.553 24.17 -120.5 282 | -116.553 22.0215 -120.5 283 | -117.627 20.9473 -120.5 284 | -118.701 19.8731 -120.5 285 | -118.701 17.7246 -120.5 286 | -118.701 15.5762 -120.5 287 | -119.775 14.502 -120.5 288 | -120.85 13.4278 -120.5 289 | -120.85 11.2793 -120.5 290 | -120.85 9.13089 -120.5 291 | -121.924 8.05668 -120.5 292 | -122.998 6.98246 -120.5 293 | -122.998 4.83402 -120.5 294 | -122.998 2.68558 -120.5 295 | -124.072 1.61136 -120.5 296 | -124.609 0.537142 -120.5 297 | -125.146 -1.6113 -120.5 298 | -125.146 -3.75973 -120.5 299 | -125.146 -5.90817 -120.5 300 | -125.146 -8.05661 -120.5 301 | -126.221 -9.13083 -120.5 302 | -126.758 -10.205 -120.5 303 | -127.295 -12.3535 -120.5 304 | -127.295 -14.5019 -120.5 305 | -127.295 -16.6504 -120.5 306 | -127.295 -18.7988 -120.5 307 | -127.295 -20.9472 -120.5 308 | -128.369 -22.0215 -120.5 309 | -128.906 -23.0957 -120.5 310 | -128.906 -25.2441 -120.5 311 | -129.443 -27.3926 -120.5 312 | -128.906 -29.541 -120.5 313 | -128.906 -31.6894 -120.5 314 | -128.369 -32.7637 -120.5 315 | -127.295 -33.8379 -120.5 316 | -127.295 -35.9863 -120.5 317 | -127.295 -38.1347 -120.5 318 | -127.295 -40.2832 -120.5 319 | -126.221 -41.3574 -120.5 320 | -125.146 -42.4316 -120.5 321 | -125.146 -44.5801 -120.5 322 | -125.146 -46.7285 -120.5 323 | -124.072 -47.8027 -120.5 324 | -122.998 -48.8769 -120.5 325 | -122.998 -51.0254 -120.5 326 | -121.924 -52.0996 -120.5 327 | -120.85 -53.1738 -120.5 328 | -120.85 -55.3223 -120.5 329 | -119.775 -56.3965 -120.5 330 | -118.701 -57.4707 -120.5 331 | -117.627 -58.5449 -120.5 332 | -116.553 -59.6191 -120.5 333 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_1.txt: -------------------------------------------------------------------------------- 1 | -42.4316 -103.662 -118 2 | -40.2832 -103.662 -118 3 | -38.1347 -103.662 -118 4 | -35.9863 -103.662 -118 5 | -33.8379 -103.662 -118 6 | -31.6894 -103.662 -118 7 | -29.541 -103.662 -118 8 | -27.3926 -103.662 -118 9 | -25.2441 -103.662 -118 10 | -23.0957 -103.662 -118 11 | -20.9472 -103.662 -118 12 | -18.7988 -103.662 -118 13 | -16.6504 -103.662 -118 14 | -14.5019 -103.662 -118 15 | -12.3535 -103.662 -118 16 | -10.205 -103.662 -118 17 | -8.05661 -103.662 -118 18 | -5.90817 -103.662 -118 19 | -4.83395 -102.588 -118 20 | -3.75973 -101.514 -118 21 | -1.6113 -101.514 -118 22 | -0.537078 -100.439 -118 23 | 0.537142 -99.3652 -118 24 | 2.68558 -99.3652 -118 25 | 3.7598 -98.291 -118 26 | 4.83402 -97.2168 -118 27 | 5.90824 -96.1426 -118 28 | 6.98246 -95.0684 -118 29 | 9.13089 -95.0684 -118 30 | 10.2051 -93.9941 -118 31 | 11.2793 -92.9199 -118 32 | 12.3536 -91.8457 -118 33 | 13.4278 -90.7715 -118 34 | 15.5762 -90.7715 -118 35 | 16.6504 -89.6973 -118 36 | 17.7246 -88.623 -118 37 | 18.7989 -87.5488 -118 38 | 19.8731 -86.4746 -118 39 | 22.0215 -86.4746 -118 40 | 23.0957 -85.4004 -118 41 | 24.17 -84.3262 -118 42 | 25.2442 -83.252 -118 43 | 26.3184 -82.1777 -118 44 | 27.3926 -81.1035 -118 45 | 28.4668 -80.0293 -118 46 | 30.6153 -80.0293 -118 47 | 31.6895 -78.9551 -118 48 | 32.7637 -77.8809 -118 49 | 34.9122 -77.8809 -118 50 | 35.9864 -76.8066 -118 51 | 37.0606 -75.7324 -118 52 | 39.209 -75.7324 -118 53 | 41.3575 -75.7324 -118 54 | 43.5059 -75.7324 -118 55 | 44.5801 -74.6582 -118 56 | 45.6543 -73.584 -118 57 | 47.8028 -73.584 -118 58 | 49.9512 -73.584 -118 59 | 51.0254 -72.5098 -118 60 | 52.0997 -71.4355 -118 61 | 54.2481 -71.4355 -118 62 | 56.3965 -71.4355 -118 63 | 57.4708 -70.3613 -118 64 | 58.545 -69.2871 -118 65 | 59.6192 -68.2129 -118 66 | 60.6934 -67.1387 -118 67 | 61.7676 -66.0644 -118 68 | 62.8419 -64.9902 -118 69 | 63.9161 -63.916 -118 70 | 64.9903 -62.8418 -118 71 | 67.1387 -62.8418 -118 72 | 68.2129 -61.7676 -118 73 | 69.2872 -60.6933 -118 74 | 70.3614 -59.6191 -118 75 | 71.4356 -58.5449 -118 76 | 73.584 -58.5449 -118 77 | 74.6583 -57.4707 -118 78 | 75.7325 -56.3965 -118 79 | 76.8067 -55.3223 -118 80 | 77.8809 -54.248 -118 81 | 80.0294 -54.248 -118 82 | 81.1036 -53.1738 -118 83 | 82.1778 -52.0996 -118 84 | 84.3262 -52.0996 -118 85 | 86.4747 -52.0996 -118 86 | 87.5489 -51.0254 -118 87 | 88.6231 -49.9512 -118 88 | 90.7715 -49.9512 -118 89 | 91.8458 -48.8769 -118 90 | 92.92 -47.8027 -118 91 | 95.0684 -47.8027 -118 92 | 96.1426 -46.7285 -118 93 | 97.2169 -45.6543 -118 94 | 99.3653 -45.6543 -118 95 | 100.44 -44.5801 -118 96 | 101.514 -43.5058 -118 97 | 103.662 -43.5058 -118 98 | 104.736 -42.4316 -118 99 | 105.811 -41.3574 -118 100 | 107.959 -41.3574 -118 101 | 109.033 -40.2832 -118 102 | 110.107 -39.209 -118 103 | 112.256 -39.209 -118 104 | 113.33 -38.1347 -118 105 | 114.404 -37.0605 -118 106 | 116.553 -37.0605 -118 107 | 117.627 -35.9863 -118 108 | 118.701 -34.9121 -118 109 | 120.85 -34.9121 -118 110 | 121.924 -33.8379 -118 111 | 122.998 -32.7637 -118 112 | 124.072 -31.6894 -118 113 | 124.072 -29.541 -118 114 | 125.147 -28.4668 -118 115 | 126.221 -27.3926 -118 116 | 126.221 -25.2441 -118 117 | 126.221 -23.0957 -118 118 | 126.221 -20.9472 -118 119 | 126.221 -18.7988 -118 120 | 126.221 -16.6504 -118 121 | 126.221 -14.5019 -118 122 | 126.221 -12.3535 -118 123 | 125.684 -10.205 -118 124 | 125.147 -9.13083 -118 125 | 124.072 -8.05661 -118 126 | 124.072 -5.90817 -118 127 | 124.072 -3.75973 -118 128 | 124.072 -1.6113 -118 129 | 124.072 0.537142 -118 130 | 123.535 2.68558 -118 131 | 122.998 3.7598 -118 132 | 121.924 4.83402 -118 133 | 121.924 6.98246 -118 134 | 121.924 9.13089 -118 135 | 120.85 10.2051 -118 136 | 119.775 11.2793 -118 137 | 119.775 13.4278 -118 138 | 118.701 14.502 -118 139 | 117.627 15.5762 -118 140 | 117.627 17.7246 -118 141 | 116.553 18.7989 -118 142 | 115.479 19.8731 -118 143 | 115.479 22.0215 -118 144 | 114.404 23.0957 -118 145 | 113.33 24.17 -118 146 | 113.33 26.3184 -118 147 | 112.256 27.3926 -118 148 | 111.182 28.4668 -118 149 | 111.182 30.6153 -118 150 | 110.107 31.6895 -118 151 | 109.033 32.7637 -118 152 | 109.033 34.9122 -118 153 | 108.496 37.0606 -118 154 | 108.496 39.209 -118 155 | 108.765 41.3575 -118 156 | 109.033 43.5059 -118 157 | 109.033 45.6543 -118 158 | 109.033 47.8028 -118 159 | 108.765 49.9512 -118 160 | 108.286 52.0997 -118 161 | 107.959 53.0396 -118 162 | 107.587 54.2481 -118 163 | 106.54 56.3965 -118 164 | 105.811 57.5971 -118 165 | 105.235 58.545 -118 166 | 103.662 60.6423 -118 167 | 103.622 60.6934 -118 168 | 101.713 62.8419 -118 169 | 101.514 63.0408 -118 170 | 99.5642 64.9903 -118 171 | 99.3653 65.1892 -118 172 | 97.2598 67.1387 -118 173 | 97.2169 67.1771 -118 174 | 95.0684 69.0279 -118 175 | 94.7551 69.2872 -118 176 | 92.92 70.8059 -118 177 | 92.0899 71.4356 -118 178 | 90.7715 72.4024 -118 179 | 88.9991 73.584 -118 180 | 88.6231 73.8266 -118 181 | 86.4747 75.1618 -118 182 | 85.4601 75.7325 -118 183 | 84.3262 76.351 -118 184 | 82.1778 77.4577 -118 185 | 81.2468 77.8809 -118 186 | 80.0294 78.418 -118 187 | 77.8809 79.3027 -118 188 | 75.9804 80.0294 -118 189 | 75.7325 80.1241 -118 190 | 73.584 80.9194 -118 191 | 71.4356 81.5946 -118 192 | 69.5801 82.1778 -118 193 | 69.2872 82.2699 -118 194 | 67.1387 82.8223 -118 195 | 64.9903 83.3415 -118 196 | 62.8419 83.8045 -118 197 | 60.6934 84.2342 -118 198 | 60.0489 84.3262 -118 199 | 58.545 84.5411 -118 200 | 56.3965 84.848 -118 201 | 54.2481 85.0935 -118 202 | 52.0997 85.2513 -118 203 | 49.9512 85.3706 -118 204 | 47.8028 85.3706 -118 205 | 45.6543 85.3706 -118 206 | 43.5059 85.2513 -118 207 | 41.3575 85.0722 -118 208 | 39.209 84.8335 -118 209 | 37.0606 84.5351 -118 210 | 35.8073 84.3262 -118 211 | 34.9122 84.1728 -118 212 | 32.7637 83.7431 -118 213 | 30.6153 83.252 -118 214 | 28.4668 82.7447 -118 215 | 26.4258 82.1778 -118 216 | 26.3184 82.1471 -118 217 | 24.17 81.6108 -118 218 | 22.0215 81.0141 -118 219 | 19.8731 80.4769 -118 220 | 18.2618 80.0294 -118 221 | 17.7246 79.8802 -118 222 | 15.5762 79.3431 -118 223 | 13.4278 78.8324 -118 224 | 11.2793 78.3413 -118 225 | 9.13089 77.9108 -118 226 | 8.97743 77.8809 -118 227 | 6.98246 77.4819 -118 228 | 4.83402 77.1946 -118 229 | 2.68558 77.0753 -118 230 | 0.537142 77.0522 -118 231 | -1.6113 77.2364 -118 232 | -3.75973 77.4819 -118 233 | -5.50534 77.8809 -118 234 | -5.90817 77.973 -118 235 | -8.05661 78.4641 -118 236 | -10.205 79.0779 -118 237 | -12.3535 79.6917 -118 238 | -13.4277 80.0294 -118 239 | -14.5019 80.367 -118 240 | -16.6504 80.9808 -118 241 | -18.7988 81.5946 -118 242 | -20.9472 82.1471 -118 243 | -21.0666 82.1778 -118 244 | -23.0957 82.6996 -118 245 | -25.2441 83.1292 -118 246 | -27.3926 83.5589 -118 247 | -29.541 83.9886 -118 248 | -31.5104 84.3262 -118 249 | -31.6894 84.3569 -118 250 | -33.8379 84.6638 -118 251 | -35.9863 84.9708 -118 252 | -38.1347 85.1916 -118 253 | -40.2832 85.4303 -118 254 | -42.4316 85.6327 -118 255 | -44.5801 85.7884 -118 256 | -46.7285 85.923 -118 257 | -48.8769 85.9811 -118 258 | -51.0254 86.0392 -118 259 | -53.1738 86.0392 -118 260 | -55.3223 85.9811 -118 261 | -57.4707 85.865 -118 262 | -59.6191 85.6908 -118 263 | -61.7676 85.49 -118 264 | -63.916 85.1916 -118 265 | -66.0644 84.8932 -118 266 | -68.2129 84.4797 -118 267 | -68.8843 84.3262 -118 268 | -70.3613 83.9886 -118 269 | -72.5098 83.4362 -118 270 | -74.6582 82.7781 -118 271 | -76.359 82.1778 -118 272 | -76.8066 82.0198 -118 273 | -78.9551 81.1984 -118 274 | -81.1035 80.2572 -118 275 | -81.5735 80.0294 -118 276 | -83.252 79.1901 -118 277 | -85.4004 77.9849 -118 278 | -85.57 77.8809 -118 279 | -87.5488 76.6681 -118 280 | -88.93 75.7325 -118 281 | -89.6973 75.2127 -118 282 | -91.8457 73.6915 -118 283 | -91.9922 73.584 -118 284 | -93.9941 72.1159 -118 285 | -94.8815 71.4356 -118 286 | -96.1426 70.4688 -118 287 | -97.6196 69.2872 -118 288 | -98.291 68.7315 -118 289 | -100.216 67.1387 -118 290 | -100.439 66.9469 -118 291 | -102.588 65.0287 -118 292 | -102.629 64.9903 -118 293 | -104.736 63.0337 -118 294 | -104.935 62.8419 -118 295 | -106.885 60.8923 -118 296 | -107.084 60.6934 -118 297 | -109.033 58.7439 -118 298 | -109.225 58.545 -118 299 | -111.143 56.3965 -118 300 | -111.182 56.3536 -118 301 | -113.062 54.2481 -118 302 | -113.33 53.9348 -118 303 | -114.798 52.0997 -118 304 | -115.479 51.2123 -118 305 | -116.445 49.9512 -118 306 | -117.627 48.3399 -118 307 | -118.021 47.8028 -118 308 | -119.464 45.6543 -118 309 | -119.775 45.1709 -118 310 | -120.85 43.5059 -118 311 | -121.924 41.6559 -118 312 | -122.092 41.3575 -118 313 | -123.193 39.209 -118 314 | -124.072 37.3963 -118 315 | -124.235 37.0606 -118 316 | -125.212 34.9122 -118 317 | -126.221 32.8309 -118 318 | -126.253 32.7637 -118 319 | -127.23 30.6153 -118 320 | -128.268 28.4668 -118 321 | -128.369 28.252 -118 322 | -129.248 26.3184 -118 323 | -130.16 24.17 -118 324 | -130.518 23.261 -118 325 | -130.992 22.0215 -118 326 | -131.776 19.8731 -118 327 | -132.508 17.7246 -118 328 | -132.666 17.2364 -118 329 | -133.203 15.5762 -118 330 | -133.863 13.4278 -118 331 | -134.477 11.2793 -118 332 | -134.814 10.0977 -118 333 | -135.099 9.13089 -118 334 | -135.705 6.98246 -118 335 | -136.257 4.83402 -118 336 | -136.809 2.68558 -118 337 | -136.963 2.01419 -118 338 | -137.301 0.537142 -118 339 | -137.792 -1.6113 -118 340 | -138.246 -3.75973 -118 341 | -138.664 -5.90817 -118 342 | -139.081 -8.05661 -118 343 | -139.111 -8.23565 -118 344 | -139.449 -10.205 -118 345 | -139.817 -12.3535 -118 346 | -140.156 -14.5019 -118 347 | -140.514 -16.6504 -118 348 | -140.812 -18.7988 -118 349 | -141.106 -20.9472 -118 350 | -141.26 -22.29 -118 351 | -141.352 -23.0957 -118 352 | -141.475 -25.2441 -118 353 | -141.536 -27.3926 -118 354 | -141.475 -29.541 -118 355 | -141.349 -31.6894 -118 356 | -141.26 -32.334 -118 357 | -141.051 -33.8379 -118 358 | -140.693 -35.9863 -118 359 | -140.308 -38.1347 -118 360 | -139.817 -40.2832 -118 361 | -139.265 -42.4316 -118 362 | -139.111 -42.9199 -118 363 | -138.59 -44.5801 -118 364 | -137.879 -46.7285 -118 365 | -137.126 -48.8769 -118 366 | -136.963 -49.2901 -118 367 | -136.279 -51.0254 -118 368 | -135.368 -53.1738 -118 369 | -134.814 -54.3913 -118 370 | -134.378 -55.3223 -118 371 | -133.285 -57.4707 -118 372 | -132.666 -58.6046 -118 373 | -132.095 -59.6191 -118 374 | -130.829 -61.7676 -118 375 | -130.518 -62.251 -118 376 | -129.443 -63.916 -118 377 | -128.369 -65.5018 -118 378 | -127.975 -66.0644 -118 379 | -126.4 -68.2129 -118 380 | -126.221 -68.4464 -118 381 | -124.702 -70.3613 -118 382 | -124.072 -71.1553 -118 383 | -122.96 -72.5098 -118 384 | -121.924 -73.6253 -118 385 | -120.891 -74.6582 -118 386 | -119.775 -75.7324 -118 387 | -118.394 -76.8066 -118 388 | -117.627 -77.4034 -118 389 | -115.479 -78.7561 -118 390 | -115.031 -78.9551 -118 391 | -113.33 -79.7401 -118 392 | -111.182 -80.5898 -118 393 | -109.494 -81.1035 -118 394 | -109.033 -81.2731 -118 395 | -106.885 -81.748 -118 396 | -104.736 -82.1777 -118 397 | -102.588 -82.5806 -118 398 | -100.439 -82.7148 -118 399 | -98.291 -82.9834 -118 400 | -97.2168 -83.252 -118 401 | -96.1426 -83.61 -118 402 | -93.9941 -83.7891 -118 403 | -91.8457 -84.3262 -118 404 | -90.7715 -85.4004 -118 405 | -89.6973 -86.4746 -118 406 | -87.5488 -86.4746 -118 407 | -86.4746 -87.5488 -118 408 | -85.4004 -88.623 -118 409 | -83.252 -88.623 -118 410 | -82.1777 -89.6973 -118 411 | -81.1035 -90.7715 -118 412 | -78.9551 -90.7715 -118 413 | -77.8809 -91.8457 -118 414 | -76.8066 -92.9199 -118 415 | -74.6582 -92.9199 -118 416 | -73.584 -93.9941 -118 417 | -72.5098 -95.0684 -118 418 | -70.3613 -95.0684 -118 419 | -69.2871 -96.1426 -118 420 | -68.2129 -97.2168 -118 421 | -66.0644 -97.2168 -118 422 | -63.916 -97.2168 -118 423 | -62.8418 -98.291 -118 424 | -61.7676 -99.3652 -118 425 | -59.6191 -99.3652 -118 426 | -57.4707 -99.3652 -118 427 | -55.3223 -99.3652 -118 428 | -54.248 -100.439 -118 429 | -53.1738 -101.514 -118 430 | -51.0254 -101.514 -118 431 | -48.8769 -101.514 -118 432 | -46.7285 -101.514 -118 433 | -44.5801 -101.514 -118 434 | -43.5058 -102.588 -118 435 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_45.txt: -------------------------------------------------------------------------------- 1 | 6.98246 -119.949 -8 2 | 9.13089 -120.098 -8 3 | 11.2793 -120.313 -8 4 | 13.4278 -120.572 -8 5 | 15.5762 -120.78 -8 6 | 17.7246 -120.988 -8 7 | 19.8731 -121.152 -8 8 | 22.0215 -121.286 -8 9 | 24.17 -121.37 -8 10 | 26.3184 -121.42 -8 11 | 28.4668 -121.487 -8 12 | 30.6153 -121.436 -8 13 | 32.7637 -121.42 -8 14 | 34.9122 -121.305 -8 15 | 37.0606 -121.175 -8 16 | 39.209 -120.95 -8 17 | 41.3575 -120.682 -8 18 | 43.5059 -120.364 -8 19 | 45.6543 -120.01 -8 20 | 46.9076 -119.775 -8 21 | 47.8028 -119.596 -8 22 | 49.9512 -119.095 -8 23 | 52.0997 -118.632 -8 24 | 54.2481 -118.077 -8 25 | 55.9937 -117.627 -8 26 | 56.3965 -117.52 -8 27 | 58.545 -116.947 -8 28 | 60.6934 -116.345 -8 29 | 62.8419 -115.729 -8 30 | 63.7818 -115.479 -8 31 | 64.9903 -115.145 -8 32 | 67.1387 -114.512 -8 33 | 69.2872 -113.85 -8 34 | 71.0775 -113.33 -8 35 | 71.4356 -113.223 -8 36 | 73.584 -112.578 -8 37 | 75.7325 -111.909 -8 38 | 77.8809 -111.216 -8 39 | 77.9883 -111.182 -8 40 | 80.0294 -110.501 -8 41 | 82.1778 -109.714 -8 42 | 84.0333 -109.033 -8 43 | 84.3262 -108.926 -8 44 | 86.4747 -108.066 -8 45 | 88.6231 -107.197 -8 46 | 89.3137 -106.885 -8 47 | 90.7715 -106.204 -8 48 | 92.92 -105.202 -8 49 | 93.7928 -104.736 -8 50 | 95.0684 -104.056 -8 51 | 97.2169 -102.847 -8 52 | 97.6592 -102.588 -8 53 | 99.3653 -101.588 -8 54 | 101.215 -100.439 -8 55 | 101.514 -100.241 -8 56 | 103.662 -98.8082 -8 57 | 104.397 -98.291 -8 58 | 105.811 -97.2964 -8 59 | 107.368 -96.1426 -8 60 | 107.959 -95.6881 -8 61 | 110.107 -94.0339 -8 62 | 110.156 -93.9941 -8 63 | 112.256 -92.2175 -8 64 | 112.695 -91.8457 -8 65 | 114.404 -90.3418 -8 66 | 115.076 -89.6973 -8 67 | 116.553 -88.2202 -8 68 | 117.224 -87.5488 -8 69 | 118.701 -85.9375 -8 70 | 119.174 -85.4004 -8 71 | 120.85 -83.4961 -8 72 | 121.056 -83.252 -8 73 | 122.792 -81.1035 -8 74 | 122.998 -80.835 -8 75 | 124.391 -78.9551 -8 76 | 125.147 -77.8809 -8 77 | 125.902 -76.8066 -8 78 | 127.295 -74.7179 -8 79 | 127.333 -74.6582 -8 80 | 128.638 -72.5098 -8 81 | 129.443 -71.0998 -8 82 | 129.851 -70.3613 -8 83 | 130.962 -68.2129 -8 84 | 131.592 -66.9954 -8 85 | 132.057 -66.0644 -8 86 | 133.06 -63.916 -8 87 | 133.74 -62.4581 -8 88 | 134.063 -61.7676 -8 89 | 134.953 -59.6191 -8 90 | 135.781 -57.4707 -8 91 | 135.889 -57.1777 -8 92 | 136.547 -55.3223 -8 93 | 137.24 -53.1738 -8 94 | 137.864 -51.0254 -8 95 | 138.037 -50.354 -8 96 | 138.406 -48.8769 -8 97 | 138.876 -46.7285 -8 98 | 139.279 -44.5801 -8 99 | 139.666 -42.4316 -8 100 | 139.943 -40.2832 -8 101 | 140.186 -38.4033 -8 102 | 140.22 -38.1347 -8 103 | 140.428 -35.9863 -8 104 | 140.567 -33.8379 -8 105 | 140.756 -31.6894 -8 106 | 140.844 -29.541 -8 107 | 140.958 -27.3926 -8 108 | 140.983 -25.2441 -8 109 | 141.025 -23.0957 -8 110 | 140.983 -20.9472 -8 111 | 140.913 -18.7988 -8 112 | 140.844 -16.6504 -8 113 | 140.705 -14.5019 -8 114 | 140.58 -12.3535 -8 115 | 140.508 -10.205 -8 116 | 140.428 -8.05661 -8 117 | 140.359 -5.90817 -8 118 | 140.29 -3.75973 -8 119 | 140.22 -1.6113 -8 120 | 140.186 -1.07419 -8 121 | 140.085 0.537142 -8 122 | 139.951 2.68558 -8 123 | 139.816 4.83402 -8 124 | 139.615 6.98246 -8 125 | 139.346 9.13089 -8 126 | 139.078 11.2793 -8 127 | 138.742 13.4278 -8 128 | 138.474 15.5762 -8 129 | 138.141 17.7246 -8 130 | 138.037 18.5303 -8 131 | 137.864 19.8731 -8 132 | 137.517 22.0215 -8 133 | 137.171 24.17 -8 134 | 136.795 26.3184 -8 135 | 136.392 28.4668 -8 136 | 135.923 30.6153 -8 137 | 135.889 30.7687 -8 138 | 135.438 32.7637 -8 139 | 134.915 34.9122 -8 140 | 134.329 37.0606 -8 141 | 133.775 39.209 -8 142 | 133.74 39.3284 -8 143 | 133.151 41.3575 -8 144 | 132.458 43.5059 -8 145 | 131.765 45.6543 -8 146 | 131.592 46.1915 -8 147 | 131.055 47.8028 -8 148 | 130.31 49.9512 -8 149 | 129.479 52.0997 -8 150 | 129.443 52.1892 -8 151 | 128.646 54.2481 -8 152 | 127.815 56.3965 -8 153 | 127.295 57.636 -8 154 | 126.901 58.545 -8 155 | 125.97 60.6934 -8 156 | 125.147 62.4582 -8 157 | 124.968 62.8419 -8 158 | 123.924 64.9903 -8 159 | 122.998 66.6688 -8 160 | 122.739 67.1387 -8 161 | 121.502 69.2872 -8 162 | 120.85 70.3017 -8 163 | 120.094 71.4356 -8 164 | 118.701 73.4144 -8 165 | 118.577 73.584 -8 166 | 116.842 75.7325 -8 167 | 116.553 76.0594 -8 168 | 114.877 77.8809 -8 169 | 114.404 78.3733 -8 170 | 112.676 80.0294 -8 171 | 112.256 80.4161 -8 172 | 110.159 82.1778 -8 173 | 110.107 82.2176 -8 174 | 107.959 83.809 -8 175 | 107.183 84.3262 -8 176 | 105.811 85.1782 -8 177 | 103.662 86.3635 -8 178 | 103.432 86.4747 -8 179 | 101.514 87.3699 -8 180 | 99.3653 88.3008 -8 181 | 98.5596 88.6231 -8 182 | 97.2169 89.1429 -8 183 | 95.0684 89.9052 -8 184 | 92.92 90.529 -8 185 | 92.0845 90.7715 -8 186 | 90.7715 91.1527 -8 187 | 88.6231 91.6779 -8 188 | 86.4747 92.1923 -8 189 | 84.3262 92.6081 -8 190 | 82.9451 92.92 -8 191 | 82.1778 93.0878 -8 192 | 80.0294 93.4398 -8 193 | 77.8809 93.8264 -8 194 | 75.7325 94.2021 -8 195 | 73.584 94.4977 -8 196 | 71.4356 94.8259 -8 197 | 69.2872 95.0338 -8 198 | 69.0186 95.0684 -8 199 | 67.1387 95.311 -8 200 | 64.9903 95.5189 -8 201 | 62.8419 95.7961 -8 202 | 60.6934 96.1091 -8 203 | 58.545 96.3776 -8 204 | 56.3965 96.5984 -8 205 | 54.2481 96.8588 -8 206 | 52.0997 97.0541 -8 207 | 49.9512 97.1843 -8 208 | 49.4141 97.2169 -8 209 | 47.8028 97.3116 -8 210 | 45.6543 97.3796 -8 211 | 43.5059 97.438 -8 212 | 41.3575 97.438 -8 213 | 39.209 97.3748 -8 214 | 37.0606 97.2494 -8 215 | 36.5235 97.2169 -8 216 | 34.9122 97.1162 -8 217 | 32.7637 96.8588 -8 218 | 30.6153 96.5984 -8 219 | 28.4668 96.3105 -8 220 | 26.3184 96.0419 -8 221 | 24.17 95.7268 -8 222 | 22.0215 95.4496 -8 223 | 19.8731 95.1724 -8 224 | 19.0674 95.0684 -8 225 | 17.7246 94.8952 -8 226 | 15.5762 94.6179 -8 227 | 13.4278 94.3635 -8 228 | 11.2793 94.0635 -8 229 | 9.13089 93.7863 -8 230 | 6.98246 93.5091 -8 231 | 4.83402 93.2423 -8 232 | 2.68558 93.099 -8 233 | 0.537142 92.957 -8 234 | -0.537078 92.92 -8 235 | -1.6113 92.8842 -8 236 | -2.68552 92.92 -8 237 | -3.75973 92.9558 -8 238 | -5.90817 93.0274 -8 239 | -8.05661 93.2319 -8 240 | -10.205 93.4571 -8 241 | -12.3535 93.7863 -8 242 | -14.5019 94.1328 -8 243 | -16.6504 94.4793 -8 244 | -18.7988 94.8259 -8 245 | -20.6787 95.0684 -8 246 | -20.9472 95.1031 -8 247 | -23.0957 95.3803 -8 248 | -25.2441 95.7062 -8 249 | -27.3926 96.0419 -8 250 | -29.541 96.338 -8 251 | -31.6894 96.6635 -8 252 | -33.8379 96.9147 -8 253 | -35.9863 97.1162 -8 254 | -37.5976 97.2169 -8 255 | -38.1347 97.2504 -8 256 | -40.2832 97.3847 -8 257 | -42.4316 97.4594 -8 258 | -44.5801 97.5287 -8 259 | -46.7285 97.598 -8 260 | -48.8769 97.7204 -8 261 | -51.0254 97.7204 -8 262 | -53.1738 97.7204 -8 263 | -55.3223 97.6533 -8 264 | -57.4707 97.519 -8 265 | -59.6191 97.3208 -8 266 | -60.6933 97.2169 -8 267 | -61.7676 97.1129 -8 268 | -63.916 96.8357 -8 269 | -66.0644 96.4892 -8 270 | -68.2129 96.1426 -8 271 | -70.3613 95.7961 -8 272 | -72.5098 95.4496 -8 273 | -74.6582 95.1031 -8 274 | -74.8372 95.0684 -8 275 | -76.8066 94.6873 -8 276 | -78.9551 94.3407 -8 277 | -81.1035 93.9249 -8 278 | -83.252 93.4907 -8 279 | -85.4004 92.9546 -8 280 | -85.5538 92.92 -8 281 | -87.5488 92.4695 -8 282 | -89.6973 91.9151 -8 283 | -91.8457 91.3606 -8 284 | -93.8748 90.7715 -8 285 | -93.9941 90.7357 -8 286 | -96.1426 90.0439 -8 287 | -98.291 89.2815 -8 288 | -99.861 88.6231 -8 289 | -100.439 88.3725 -8 290 | -102.588 87.3699 -8 291 | -104.266 86.4747 -8 292 | -104.736 86.2154 -8 293 | -106.885 84.9017 -8 294 | -107.733 84.3262 -8 295 | -109.033 83.376 -8 296 | -110.517 82.1778 -8 297 | -111.182 81.6192 -8 298 | -112.91 80.0294 -8 299 | -113.33 79.609 -8 300 | -114.986 77.8809 -8 301 | -115.479 77.3182 -8 302 | -116.759 75.7325 -8 303 | -117.627 74.6583 -8 304 | -118.433 73.584 -8 305 | -119.775 71.6052 -8 306 | -119.89 71.4356 -8 307 | -121.22 69.2872 -8 308 | -121.924 68.0866 -8 309 | -122.479 67.1387 -8 310 | -123.591 64.9903 -8 311 | -124.072 63.9928 -8 312 | -124.609 62.8419 -8 313 | -125.54 60.6934 -8 314 | -126.221 58.9926 -8 315 | -126.394 58.545 -8 316 | -127.188 56.3965 -8 317 | -127.919 54.2481 -8 318 | -128.369 52.8516 -8 319 | -128.612 52.0997 -8 320 | -129.305 49.9512 -8 321 | -129.929 47.8028 -8 322 | -130.518 45.7737 -8 323 | -130.551 45.6543 -8 324 | -131.107 43.5059 -8 325 | -131.661 41.3575 -8 326 | -132.146 39.209 -8 327 | -132.666 37.1949 -8 328 | -132.7 37.0606 -8 329 | -133.17 34.9122 -8 330 | -133.602 32.7637 -8 331 | -134.042 30.6153 -8 332 | -134.503 28.4668 -8 333 | -134.814 26.8555 -8 334 | -134.918 26.3184 -8 335 | -135.334 24.17 -8 336 | -135.788 22.0215 -8 337 | -136.191 19.8731 -8 338 | -136.651 17.7246 -8 339 | -136.963 16.1133 -8 340 | -137.067 15.5762 -8 341 | -137.534 13.4278 -8 342 | -137.968 11.2793 -8 343 | -138.384 9.13089 -8 344 | -138.869 6.98246 -8 345 | -139.111 5.7292 -8 346 | -139.285 4.83402 -8 347 | -139.749 2.68558 -8 348 | -140.186 0.537142 -8 349 | -140.601 -1.6113 -8 350 | -141.017 -3.75973 -8 351 | -141.26 -5.01299 -8 352 | -141.428 -5.90817 -8 353 | -141.83 -8.05661 -8 354 | -142.233 -10.205 -8 355 | -142.569 -12.3535 -8 356 | -142.838 -14.5019 -8 357 | -143.106 -16.6504 -8 358 | -143.304 -18.7988 -8 359 | -143.374 -20.9472 -8 360 | -143.408 -22.0215 -8 361 | -143.443 -23.0957 -8 362 | -143.443 -25.2441 -8 363 | -143.442 -27.3926 -8 364 | -143.408 -28.4668 -8 365 | -143.374 -29.541 -8 366 | -143.304 -31.6894 -8 367 | -143.106 -33.8379 -8 368 | -142.905 -35.9863 -8 369 | -142.636 -38.1347 -8 370 | -142.3 -40.2832 -8 371 | -141.943 -42.4316 -8 372 | -141.562 -44.5801 -8 373 | -141.26 -45.9612 -8 374 | -141.087 -46.7285 -8 375 | -140.555 -48.8769 -8 376 | -139.978 -51.0254 -8 377 | -139.354 -53.1738 -8 378 | -139.111 -53.9258 -8 379 | -138.661 -55.3223 -8 380 | -137.899 -57.4707 -8 381 | -137.07 -59.6191 -8 382 | -136.963 -59.8877 -8 383 | -136.211 -61.7676 -8 384 | -135.28 -63.916 -8 385 | -134.814 -64.9135 -8 386 | -134.259 -66.0644 -8 387 | -133.148 -68.2129 -8 388 | -132.666 -69.1439 -8 389 | -132.036 -70.3613 -8 390 | -130.851 -72.5098 -8 391 | -130.518 -73.0785 -8 392 | -129.558 -74.6582 -8 393 | -128.369 -76.5082 -8 394 | -128.177 -76.8066 -8 395 | -126.738 -78.9551 -8 396 | -126.221 -79.6533 -8 397 | -125.105 -81.1035 -8 398 | -124.072 -82.3823 -8 399 | -123.37 -83.252 -8 400 | -121.924 -84.8866 -8 401 | -121.451 -85.4004 -8 402 | -119.775 -87.2219 -8 403 | -119.462 -87.5488 -8 404 | -117.627 -89.384 -8 405 | -117.314 -89.6973 -8 406 | -115.479 -91.459 -8 407 | -115.039 -91.8457 -8 408 | -113.33 -93.3496 -8 409 | -112.563 -93.9941 -8 410 | -111.182 -95.0684 -8 411 | -109.801 -96.1426 -8 412 | -109.033 -96.7394 -8 413 | -106.885 -98.2512 -8 414 | -106.828 -98.291 -8 415 | -104.736 -99.7105 -8 416 | -103.602 -100.439 -8 417 | -102.588 -101.069 -8 418 | -100.439 -102.396 -8 419 | -100.104 -102.588 -8 420 | -98.291 -103.588 -8 421 | -96.2097 -104.736 -8 422 | -96.1426 -104.773 -8 423 | -93.9941 -105.885 -8 424 | -91.9224 -106.885 -8 425 | -91.8457 -106.921 -8 426 | -89.6973 -107.852 -8 427 | -87.5488 -108.7 -8 428 | -86.7432 -109.033 -8 429 | -85.4004 -109.553 -8 430 | -83.252 -110.286 -8 431 | -81.1035 -111.071 -8 432 | -80.7454 -111.182 -8 433 | -78.9551 -111.719 -8 434 | -76.8066 -112.363 -8 435 | -74.6582 -112.985 -8 436 | -73.4497 -113.33 -8 437 | -72.5098 -113.573 -8 438 | -70.3613 -114.082 -8 439 | -68.2129 -114.627 -8 440 | -66.0644 -115.057 -8 441 | -64.095 -115.479 -8 442 | -63.916 -115.514 -8 443 | -61.7676 -115.944 -8 444 | -59.6191 -116.33 -8 445 | -57.4707 -116.701 -8 446 | -55.3223 -117.051 -8 447 | -53.1738 -117.282 -8 448 | -51.0254 -117.586 -8 449 | -50.6673 -117.627 -8 450 | -48.8769 -117.806 -8 451 | -46.7285 -117.96 -8 452 | -44.5801 -118.183 -8 453 | -42.4316 -118.405 -8 454 | -40.2832 -118.594 -8 455 | -38.1347 -118.701 -8 456 | -35.9863 -118.809 -8 457 | -33.8379 -118.88 -8 458 | -31.6894 -118.88 -8 459 | -29.541 -118.88 -8 460 | -27.3926 -118.88 -8 461 | -25.2441 -118.88 -8 462 | -23.0957 -118.88 -8 463 | -20.9472 -118.809 -8 464 | -18.7988 -118.809 -8 465 | -16.6504 -118.809 -8 466 | -14.5019 -118.809 -8 467 | -12.3535 -118.809 -8 468 | -10.205 -118.88 -8 469 | -8.05661 -118.952 -8 470 | -5.90817 -119.048 -8 471 | -3.75973 -119.186 -8 472 | -1.6113 -119.31 -8 473 | 0.537142 -119.453 -8 474 | 2.68558 -119.596 -8 475 | 4.83402 -119.74 -8 476 | 5.19209 -119.775 -8 477 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_47.txt: -------------------------------------------------------------------------------- 1 | 4.83402 -119.81 -3 2 | 6.98246 -119.949 -3 3 | 9.13089 -120.157 -3 4 | 11.2793 -120.364 -3 5 | 13.4278 -120.572 -3 6 | 15.5762 -120.816 -3 7 | 17.7246 -121.017 -3 8 | 19.8731 -121.219 -3 9 | 22.0215 -121.353 -3 10 | 24.17 -121.487 -3 11 | 26.3184 -121.501 -3 12 | 28.4668 -121.487 -3 13 | 30.6153 -121.42 -3 14 | 32.7637 -121.286 -3 15 | 34.9122 -121.085 -3 16 | 37.0606 -120.816 -3 17 | 39.209 -120.547 -3 18 | 41.3575 -120.226 -3 19 | 43.5059 -119.879 -3 20 | 44.043 -119.775 -3 21 | 45.6543 -119.464 -3 22 | 47.8028 -119.023 -3 23 | 49.9512 -118.563 -3 24 | 52.0997 -118.008 -3 25 | 53.7877 -117.627 -3 26 | 54.2481 -117.52 -3 27 | 56.3965 -116.899 -3 28 | 58.545 -116.345 -3 29 | 60.6934 -115.721 -3 30 | 61.6334 -115.479 -3 31 | 62.8419 -115.156 -3 32 | 64.9903 -114.543 -3 33 | 67.1387 -113.919 -3 34 | 69.1678 -113.33 -3 35 | 69.2872 -113.294 -3 36 | 71.4356 -112.602 -3 37 | 73.584 -111.979 -3 38 | 75.7325 -111.286 -3 39 | 76.0547 -111.182 -3 40 | 77.8809 -110.573 -3 41 | 80.0294 -109.83 -3 42 | 82.1778 -109.068 -3 43 | 82.2673 -109.033 -3 44 | 84.3262 -108.21 -3 45 | 86.4747 -107.405 -3 46 | 87.7142 -106.885 -3 47 | 88.6231 -106.491 -3 48 | 90.7715 -105.56 -3 49 | 92.5363 -104.736 -3 50 | 92.92 -104.557 -3 51 | 95.0684 -103.483 -3 52 | 96.7469 -102.588 -3 53 | 97.2169 -102.329 -3 54 | 99.3653 -101.092 -3 55 | 100.44 -100.439 -3 56 | 101.514 -99.7873 -3 57 | 103.662 -98.3294 -3 58 | 103.716 -98.291 -3 59 | 105.811 -96.7948 -3 60 | 106.68 -96.1426 -3 61 | 107.959 -95.1479 -3 62 | 109.375 -93.9941 -3 63 | 110.107 -93.3744 -3 64 | 111.836 -91.8457 -3 65 | 112.256 -91.459 -3 66 | 114.171 -89.6973 -3 67 | 114.404 -89.4824 -3 68 | 116.419 -87.5488 -3 69 | 116.553 -87.4087 -3 70 | 118.477 -85.4004 -3 71 | 118.701 -85.1562 -3 72 | 120.377 -83.252 -3 73 | 120.85 -82.7148 -3 74 | 122.213 -81.1035 -3 75 | 122.998 -80.1316 -3 76 | 123.913 -78.9551 -3 77 | 125.147 -77.29 -3 78 | 125.492 -76.8066 -3 79 | 126.937 -74.6582 -3 80 | 127.295 -74.0895 -3 81 | 128.254 -72.5098 -3 82 | 129.443 -70.4285 -3 83 | 129.48 -70.3613 -3 84 | 130.625 -68.2129 -3 85 | 131.592 -66.2793 -3 86 | 131.699 -66.0644 -3 87 | 132.702 -63.916 -3 88 | 133.633 -61.7676 -3 89 | 133.74 -61.5197 -3 90 | 134.537 -59.6191 -3 91 | 135.352 -57.4707 -3 92 | 135.889 -55.8594 -3 93 | 136.062 -55.3223 -3 94 | 136.755 -53.1738 -3 95 | 137.379 -51.0254 -3 96 | 138.001 -48.8769 -3 97 | 138.037 -48.7235 -3 98 | 138.474 -46.7285 -3 99 | 138.903 -44.5801 -3 100 | 139.279 -42.4316 -3 101 | 139.615 -40.2832 -3 102 | 139.884 -38.1347 -3 103 | 140.082 -35.9863 -3 104 | 140.186 -34.9121 -3 105 | 140.29 -33.8379 -3 106 | 140.428 -31.6894 -3 107 | 140.508 -29.541 -3 108 | 140.58 -27.3926 -3 109 | 140.651 -25.2441 -3 110 | 140.651 -23.0957 -3 111 | 140.636 -20.9472 -3 112 | 140.58 -18.7988 -3 113 | 140.508 -16.6504 -3 114 | 140.436 -14.5019 -3 115 | 140.436 -12.3535 -3 116 | 140.365 -10.205 -3 117 | 140.365 -8.05661 -3 118 | 140.359 -5.90817 -3 119 | 140.359 -3.75973 -3 120 | 140.29 -1.6113 -3 121 | 140.22 0.537142 -3 122 | 140.186 1.07425 -3 123 | 140.082 2.68558 -3 124 | 139.943 4.83402 -3 125 | 139.682 6.98246 -3 126 | 139.481 9.13089 -3 127 | 139.212 11.2793 -3 128 | 138.944 13.4278 -3 129 | 138.626 15.5762 -3 130 | 138.349 17.7246 -3 131 | 138.072 19.8731 -3 132 | 138.037 20.1416 -3 133 | 137.795 22.0215 -3 134 | 137.467 24.17 -3 135 | 137.131 26.3184 -3 136 | 136.728 28.4668 -3 137 | 136.325 30.6153 -3 138 | 135.922 32.7637 -3 139 | 135.889 32.9172 -3 140 | 135.438 34.9122 -3 141 | 134.915 37.0606 -3 142 | 134.378 39.209 -3 143 | 133.775 41.3575 -3 144 | 133.74 41.4768 -3 145 | 133.17 43.5059 -3 146 | 132.565 45.6543 -3 147 | 131.904 47.8028 -3 148 | 131.592 48.7696 -3 149 | 131.198 49.9512 -3 150 | 130.448 52.0997 -3 151 | 129.694 54.2481 -3 152 | 129.443 54.8747 -3 153 | 128.854 56.3965 -3 154 | 128.047 58.545 -3 155 | 127.295 60.2803 -3 156 | 127.116 60.6934 -3 157 | 126.185 62.8419 -3 158 | 125.182 64.9903 -3 159 | 125.147 65.0619 -3 160 | 124.072 67.1387 -3 161 | 122.998 69.0857 -3 162 | 122.883 69.2872 -3 163 | 121.502 71.4356 -3 164 | 120.85 72.3967 -3 165 | 120.014 73.584 -3 166 | 118.701 75.2721 -3 167 | 118.329 75.7325 -3 168 | 116.553 77.8321 -3 169 | 116.508 77.8809 -3 170 | 114.404 79.9005 -3 171 | 114.264 80.0294 -3 172 | 112.256 81.7402 -3 173 | 111.665 82.1778 -3 174 | 110.107 83.2904 -3 175 | 108.496 84.3262 -3 176 | 107.959 84.6596 -3 177 | 105.811 85.845 -3 178 | 104.506 86.4747 -3 179 | 103.662 86.8686 -3 180 | 101.514 87.7995 -3 181 | 99.4548 88.6231 -3 182 | 99.3653 88.6578 -3 183 | 97.2169 89.3508 -3 184 | 95.0684 90.0439 -3 185 | 92.92 90.6676 -3 186 | 92.5619 90.7715 -3 187 | 90.7715 91.2751 -3 188 | 88.6231 91.8122 -3 189 | 86.4747 92.2822 -3 190 | 84.3262 92.7521 -3 191 | 83.5589 92.92 -3 192 | 82.1778 93.2221 -3 193 | 80.0294 93.5578 -3 194 | 77.8809 93.8935 -3 195 | 75.7325 94.2292 -3 196 | 73.584 94.4977 -3 197 | 71.4356 94.7663 -3 198 | 69.2872 95.0338 -3 199 | 68.9291 95.0684 -3 200 | 67.1387 95.2417 -3 201 | 64.9903 95.5189 -3 202 | 62.8419 95.7734 -3 203 | 60.6934 96.0419 -3 204 | 58.545 96.3105 -3 205 | 56.3965 96.579 -3 206 | 54.2481 96.7937 -3 207 | 52.0997 96.989 -3 208 | 49.9512 97.1192 -3 209 | 48.3399 97.2169 -3 210 | 47.8028 97.2494 -3 211 | 45.6543 97.3796 -3 212 | 43.5059 97.3796 -3 213 | 41.3575 97.3796 -3 214 | 39.209 97.3145 -3 215 | 37.5977 97.2169 -3 216 | 37.0606 97.1833 -3 217 | 34.9122 96.9239 -3 218 | 32.7637 96.7133 -3 219 | 30.6153 96.4448 -3 220 | 28.4668 96.1762 -3 221 | 26.3184 95.8654 -3 222 | 24.17 95.5882 -3 223 | 22.0215 95.311 -3 224 | 19.8731 95.102 -3 225 | 19.6045 95.0684 -3 226 | 17.7246 94.8334 -3 227 | 15.5762 94.632 -3 228 | 13.4278 94.3635 -3 229 | 11.2793 94.0278 -3 230 | 9.13089 93.7592 -3 231 | 6.98246 93.5091 -3 232 | 4.83402 93.2423 -3 233 | 2.68558 93.0932 -3 234 | 0.537142 92.9558 -3 235 | -0.537078 92.92 -3 236 | -1.6113 92.8842 -3 237 | -2.68552 92.92 -3 238 | -3.75973 92.9558 -3 239 | -5.90817 93.099 -3 240 | -8.05661 93.3139 -3 241 | -10.205 93.6477 -3 242 | -12.3535 93.9606 -3 243 | -14.5019 94.2963 -3 244 | -16.6504 94.6873 -3 245 | -18.7988 95.0338 -3 246 | -19.0136 95.0684 -3 247 | -20.9472 95.3803 -3 248 | -23.0957 95.7268 -3 249 | -25.2441 96.0733 -3 250 | -27.3926 96.4199 -3 251 | -29.541 96.7664 -3 252 | -31.6894 97.0436 -3 253 | -33.4798 97.2169 -3 254 | -33.8379 97.2515 -3 255 | -35.9863 97.4594 -3 256 | -38.1347 97.6673 -3 257 | -40.2832 97.8753 -3 258 | -42.4316 98.0561 -3 259 | -44.5801 98.1904 -3 260 | -46.7285 98.2575 -3 261 | -48.8769 98.2575 -3 262 | -51.0254 98.1904 -3 263 | -53.1738 98.0832 -3 264 | -55.3223 97.9446 -3 265 | -57.4707 97.7875 -3 266 | -59.6191 97.598 -3 267 | -61.7676 97.3901 -3 268 | -63.5579 97.2169 -3 269 | -63.916 97.1822 -3 270 | -66.0644 96.905 -3 271 | -68.2129 96.6278 -3 272 | -70.3613 96.2434 -3 273 | -72.5098 95.9077 -3 274 | -74.6582 95.572 -3 275 | -76.8066 95.2363 -3 276 | -77.7018 95.0684 -3 277 | -78.9551 94.8259 -3 278 | -81.1035 94.4793 -3 279 | -83.252 94.0635 -3 280 | -85.4004 93.6249 -3 281 | -87.5488 93.0932 -3 282 | -88.3161 92.92 -3 283 | -89.6973 92.6081 -3 284 | -91.8457 92.0537 -3 285 | -93.9941 91.4299 -3 286 | -96.1426 90.8051 -3 287 | -96.25 90.7715 -3 288 | -98.291 90.0912 -3 289 | -100.439 89.2815 -3 290 | -102.14 88.6231 -3 291 | -102.588 88.4379 -3 292 | -104.736 87.3699 -3 293 | -106.415 86.4747 -3 294 | -106.885 86.2061 -3 295 | -109.033 84.825 -3 296 | -109.731 84.3262 -3 297 | -111.182 83.2107 -3 298 | -112.402 82.1778 -3 299 | -113.33 81.3274 -3 300 | -114.685 80.0294 -3 301 | -115.479 79.2354 -3 302 | -116.725 77.8809 -3 303 | -117.627 76.8067 -3 304 | -118.462 75.7325 -3 305 | -119.775 73.8667 -3 306 | -119.967 73.584 -3 307 | -121.348 71.4356 -3 308 | -121.924 70.4285 -3 309 | -122.533 69.2872 -3 310 | -123.607 67.1387 -3 311 | -124.072 66.1412 -3 312 | -124.609 64.9903 -3 313 | -125.54 62.8419 -3 314 | -126.221 60.9864 -3 315 | -126.328 60.6934 -3 316 | -127.156 58.545 -3 317 | -127.849 56.3965 -3 318 | -128.369 54.7852 -3 319 | -128.542 54.2481 -3 320 | -129.235 52.0997 -3 321 | -129.859 49.9512 -3 322 | -130.482 47.8028 -3 323 | -130.518 47.6685 -3 324 | -131.021 45.6543 -3 325 | -131.558 43.5059 -3 326 | -132.077 41.3575 -3 327 | -132.562 39.209 -3 328 | -132.666 38.7487 -3 329 | -133.035 37.0606 -3 330 | -133.505 34.9122 -3 331 | -133.975 32.7637 -3 332 | -134.433 30.6153 -3 333 | -134.814 28.9272 -3 334 | -134.915 28.4668 -3 335 | -135.318 26.3184 -3 336 | -135.721 24.17 -3 337 | -136.097 22.0215 -3 338 | -136.497 19.8731 -3 339 | -136.852 17.7246 -3 340 | -136.963 17.1875 -3 341 | -137.285 15.5762 -3 342 | -137.715 13.4278 -3 343 | -138.145 11.2793 -3 344 | -138.63 9.13089 -3 345 | -139.074 6.98246 -3 346 | -139.111 6.80342 -3 347 | -139.493 4.83402 -3 348 | -139.839 2.68558 -3 349 | -140.255 0.537142 -3 350 | -140.601 -1.6113 -3 351 | -140.948 -3.75973 -3 352 | -141.224 -5.90817 -3 353 | -141.26 -6.17673 -3 354 | -141.51 -8.05661 -3 355 | -141.725 -10.205 -3 356 | -142.012 -12.3535 -3 357 | -142.26 -14.5019 -3 358 | -142.482 -16.6504 -3 359 | -142.779 -18.7988 -3 360 | -142.927 -20.9472 -3 361 | -143.063 -23.0957 -3 362 | -143.001 -25.2441 -3 363 | -142.909 -27.3926 -3 364 | -142.756 -29.541 -3 365 | -142.556 -31.6894 -3 366 | -142.37 -33.8379 -3 367 | -142.195 -35.9863 -3 368 | -142.012 -38.1347 -3 369 | -141.78 -40.2832 -3 370 | -141.502 -42.4316 -3 371 | -141.26 -43.9355 -3 372 | -141.152 -44.5801 -3 373 | -140.671 -46.7285 -3 374 | -140.186 -48.8769 -3 375 | -139.631 -51.0254 -3 376 | -139.111 -52.8157 -3 377 | -139.004 -53.1738 -3 378 | -138.314 -55.3223 -3 379 | -137.552 -57.4707 -3 380 | -136.963 -59.1308 -3 381 | -136.784 -59.6191 -3 382 | -135.889 -61.7676 -3 383 | -134.988 -63.916 -3 384 | -134.814 -64.2997 -3 385 | -133.991 -66.0644 -3 386 | -132.978 -68.2129 -3 387 | -132.666 -68.7816 -3 388 | -131.74 -70.3613 -3 389 | -130.518 -72.4466 -3 390 | -130.479 -72.5098 -3 391 | -129.175 -74.6582 -3 392 | -128.369 -75.9115 -3 393 | -127.772 -76.8066 -3 394 | -126.261 -78.9551 -3 395 | -126.221 -79.0088 -3 396 | -124.609 -81.1035 -3 397 | -124.072 -81.7685 -3 398 | -122.826 -83.252 -3 399 | -121.924 -84.2773 -3 400 | -120.936 -85.4004 -3 401 | -119.775 -86.6614 -3 402 | -118.925 -87.5488 -3 403 | -117.627 -88.8468 -3 404 | -116.74 -89.6973 -3 405 | -115.479 -90.9058 -3 406 | -114.453 -91.8457 -3 407 | -113.33 -92.834 -3 408 | -111.949 -93.9941 -3 409 | -111.182 -94.6139 -3 410 | -109.194 -96.1426 -3 411 | -109.033 -96.2619 -3 412 | -106.885 -97.6942 -3 413 | -105.99 -98.291 -3 414 | -104.736 -99.1265 -3 415 | -102.651 -100.439 -3 416 | -102.588 -100.478 -3 417 | -100.439 -101.752 -3 418 | -99.0295 -102.588 -3 419 | -98.291 -103.01 -3 420 | -96.1426 -104.161 -3 421 | -95.0684 -104.736 -3 422 | -93.9941 -105.292 -3 423 | -91.8457 -106.329 -3 424 | -90.6948 -106.885 -3 425 | -89.6973 -107.35 -3 426 | -87.5488 -108.281 -3 427 | -85.6689 -109.033 -3 428 | -85.4004 -109.141 -3 429 | -83.252 -110 -3 430 | -81.1035 -110.7 -3 431 | -79.707 -111.182 -3 432 | -78.9551 -111.424 -3 433 | -76.8066 -112.005 -3 434 | -74.6582 -112.626 -3 435 | -72.5098 -113.138 -3 436 | -71.8384 -113.33 -3 437 | -70.3613 -113.724 -3 438 | -68.2129 -114.212 -3 439 | -66.0644 -114.75 -3 440 | -63.916 -115.21 -3 441 | -62.6628 -115.479 -3 442 | -61.7676 -115.664 -3 443 | -59.6191 -116.108 -3 444 | -57.4707 -116.517 -3 445 | -55.3223 -116.849 -3 446 | -53.1738 -117.145 -3 447 | -51.0254 -117.435 -3 448 | -49.6826 -117.627 -3 449 | -48.8769 -117.734 -3 450 | -46.7285 -117.949 -3 451 | -44.5801 -118.164 -3 452 | -42.4316 -118.355 -3 453 | -40.2832 -118.563 -3 454 | -38.1347 -118.701 -3 455 | -35.9863 -118.84 -3 456 | -33.8379 -118.909 -3 457 | -31.6894 -118.978 -3 458 | -29.541 -118.978 -3 459 | -27.3926 -118.978 -3 460 | -25.2441 -118.978 -3 461 | -23.0957 -118.978 -3 462 | -20.9472 -118.978 -3 463 | -18.7988 -118.909 -3 464 | -16.6504 -118.909 -3 465 | -14.5019 -118.909 -3 466 | -12.3535 -118.936 -3 467 | -10.205 -119.003 -3 468 | -8.05661 -119.07 -3 469 | -5.90817 -119.205 -3 470 | -3.75973 -119.272 -3 471 | -1.6113 -119.406 -3 472 | 0.537142 -119.533 -3 473 | 2.68558 -119.671 -3 474 | 4.29691 -119.775 -3 475 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_49.txt: -------------------------------------------------------------------------------- 1 | 2.68558 -119.809 2 2 | 4.83402 -119.949 2 3 | 6.98246 -120.087 2 4 | 9.13089 -120.226 2 5 | 11.2793 -120.434 2 6 | 13.4278 -120.682 2 7 | 15.5762 -120.95 2 8 | 17.7246 -121.152 2 9 | 19.8731 -121.42 2 10 | 22.0215 -121.555 2 11 | 24.17 -121.689 2 12 | 26.3184 -121.751 2 13 | 28.4668 -121.681 2 14 | 30.6153 -121.473 2 15 | 32.7637 -121.196 2 16 | 34.9122 -120.85 2 17 | 37.0606 -120.503 2 18 | 39.209 -120.145 2 19 | 41.1784 -119.775 2 20 | 41.3575 -119.741 2 21 | 43.5059 -119.325 2 22 | 45.6543 -118.909 2 23 | 47.8028 -118.466 2 24 | 49.9512 -117.996 2 25 | 51.6393 -117.627 2 26 | 52.0997 -117.52 2 27 | 54.2481 -116.969 2 28 | 56.3965 -116.414 2 29 | 58.545 -115.86 2 30 | 60.022 -115.479 2 31 | 60.6934 -115.305 2 32 | 62.8419 -114.682 2 33 | 64.9903 -114.102 2 34 | 67.1387 -113.503 2 35 | 67.7355 -113.33 2 36 | 69.2872 -112.88 2 37 | 71.4356 -112.256 2 38 | 73.584 -111.632 2 39 | 74.9805 -111.182 2 40 | 75.7325 -110.939 2 41 | 77.8809 -110.275 2 42 | 80.0294 -109.553 2 43 | 81.6407 -109.033 2 44 | 82.1778 -108.854 2 45 | 84.3262 -108.028 2 46 | 86.4747 -107.197 2 47 | 87.2184 -106.885 2 48 | 88.6231 -106.276 2 49 | 90.7715 -105.325 2 50 | 91.989 -104.736 2 51 | 92.92 -104.255 2 52 | 95.0684 -103.144 2 53 | 96.0755 -102.588 2 54 | 97.2169 -101.936 2 55 | 99.3653 -100.699 2 56 | 99.7831 -100.439 2 57 | 101.514 -99.3269 2 58 | 103.125 -98.291 2 59 | 103.662 -97.9329 2 60 | 105.811 -96.4211 2 61 | 106.187 -96.1426 2 62 | 107.959 -94.7791 2 63 | 108.931 -93.9941 2 64 | 110.107 -93.0439 2 65 | 111.462 -91.8457 2 66 | 112.256 -91.1152 2 67 | 113.733 -89.6973 2 68 | 114.404 -89.0527 2 69 | 115.971 -87.5488 2 70 | 116.553 -86.9417 2 71 | 117.971 -85.4004 2 72 | 118.701 -84.6064 2 73 | 119.899 -83.252 2 74 | 120.85 -82.1289 2 75 | 121.717 -81.1035 2 76 | 122.998 -79.5178 2 77 | 123.436 -78.9551 2 78 | 124.948 -76.8066 2 79 | 125.147 -76.5239 2 80 | 126.413 -74.6582 2 81 | 127.295 -73.2048 2 82 | 127.717 -72.5098 2 83 | 128.962 -70.3613 2 84 | 129.443 -69.4885 2 85 | 130.147 -68.2129 2 86 | 131.258 -66.0644 2 87 | 131.592 -65.3739 2 88 | 132.272 -63.916 2 89 | 133.203 -61.7676 2 90 | 133.74 -60.5281 2 91 | 134.121 -59.6191 2 92 | 134.953 -57.4707 2 93 | 135.71 -55.3223 2 94 | 135.889 -54.7851 2 95 | 136.409 -53.1738 2 96 | 137.032 -51.0254 2 97 | 137.587 -48.8769 2 98 | 138.037 -47.1313 2 99 | 138.138 -46.7285 2 100 | 138.608 -44.5801 2 101 | 139.011 -42.4316 2 102 | 139.346 -40.2832 2 103 | 139.615 -38.1347 2 104 | 139.884 -35.9863 2 105 | 140.082 -33.8379 2 106 | 140.186 -32.2265 2 107 | 140.22 -31.6894 2 108 | 140.293 -29.541 2 109 | 140.365 -27.3926 2 110 | 140.365 -25.2441 2 111 | 140.371 -23.0957 2 112 | 140.436 -20.9472 2 113 | 140.365 -18.7988 2 114 | 140.365 -16.6504 2 115 | 140.365 -14.5019 2 116 | 140.297 -12.3535 2 117 | 140.297 -10.205 2 118 | 140.365 -8.05661 2 119 | 140.365 -5.90817 2 120 | 140.365 -3.75973 2 121 | 140.365 -1.6113 2 122 | 140.353 0.537142 2 123 | 140.219 2.68558 2 124 | 140.186 3.04365 2 125 | 140.018 4.83402 2 126 | 139.816 6.98246 2 127 | 139.615 9.13089 2 128 | 139.346 11.2793 2 129 | 139.078 13.4278 2 130 | 138.834 15.5762 2 131 | 138.608 17.7246 2 132 | 138.339 19.8731 2 133 | 138.072 22.0215 2 134 | 138.037 22.2901 2 135 | 137.795 24.17 2 136 | 137.467 26.3184 2 137 | 137.131 28.4668 2 138 | 136.795 30.6153 2 139 | 136.392 32.7637 2 140 | 135.923 34.9122 2 141 | 135.889 35.0912 2 142 | 135.508 37.0606 2 143 | 135.022 39.209 2 144 | 134.512 41.3575 2 145 | 133.983 43.5059 2 146 | 133.74 44.4458 2 147 | 133.428 45.6543 2 148 | 132.805 47.8028 2 149 | 132.181 49.9512 2 150 | 131.592 51.7774 2 151 | 131.488 52.0997 2 152 | 130.795 54.2481 2 153 | 130.033 56.3965 2 154 | 129.443 58.0567 2 155 | 129.264 58.545 2 156 | 128.439 60.6934 2 157 | 127.538 62.8419 2 158 | 127.295 63.379 2 159 | 126.543 64.9903 2 160 | 125.469 67.1387 2 161 | 125.147 67.743 2 162 | 124.264 69.2872 2 163 | 122.998 71.2566 2 164 | 122.883 71.4356 2 165 | 121.425 73.584 2 166 | 120.85 74.3513 2 167 | 119.734 75.7325 2 168 | 118.701 76.9001 2 169 | 117.761 77.8809 2 170 | 116.553 79.0894 2 171 | 115.527 80.0294 2 172 | 114.404 81.0176 2 173 | 112.954 82.1778 2 174 | 112.256 82.695 2 175 | 110.107 84.1344 2 176 | 109.772 84.3262 2 177 | 107.959 85.3264 2 178 | 105.811 86.4389 2 179 | 105.734 86.4747 2 180 | 103.662 87.4103 2 181 | 101.514 88.3008 2 182 | 100.635 88.6231 2 183 | 99.3653 89.0736 2 184 | 97.2169 89.7666 2 185 | 95.0684 90.4597 2 186 | 93.8599 90.7715 2 187 | 92.92 91.0141 2 188 | 90.7715 91.5436 2 189 | 88.6231 92.0136 2 190 | 86.4747 92.4695 2 191 | 84.3262 92.8853 2 192 | 84.1114 92.92 2 193 | 82.1778 93.2221 2 194 | 80.0294 93.5578 2 195 | 77.8809 93.8935 2 196 | 75.7325 94.1621 2 197 | 73.584 94.4977 2 198 | 71.4356 94.7663 2 199 | 69.2872 95.0338 2 200 | 68.9291 95.0684 2 201 | 67.1387 95.2363 2 202 | 64.9903 95.4496 2 203 | 62.8419 95.7268 2 204 | 60.6934 95.9748 2 205 | 58.545 96.2434 2 206 | 56.3965 96.5119 2 207 | 54.2481 96.7286 2 208 | 52.0997 96.8588 2 209 | 49.9512 96.989 2 210 | 47.8028 97.0589 2 211 | 45.6543 97.1192 2 212 | 43.5059 97.1221 2 213 | 41.3575 97.1192 2 214 | 39.209 97.1192 2 215 | 37.0606 96.989 2 216 | 34.9122 96.9147 2 217 | 32.7637 96.7133 2 218 | 30.6153 96.4892 2 219 | 28.4668 96.2119 2 220 | 26.3184 95.9347 2 221 | 24.17 95.6771 2 222 | 22.0215 95.4623 2 223 | 19.8731 95.2417 2 224 | 17.7246 95.1031 2 225 | 17.4561 95.0684 2 226 | 15.5762 94.8259 2 227 | 13.4278 94.6179 2 228 | 11.2793 94.3881 2 229 | 9.13089 94.1732 2 230 | 6.98246 93.9201 2 231 | 4.83402 93.7257 2 232 | 2.68558 93.5963 2 233 | 0.537142 93.5168 2 234 | -1.6113 93.4955 2 235 | -3.75973 93.5722 2 236 | -5.90817 93.6979 2 237 | -8.05661 93.9558 2 238 | -10.205 94.2165 2 239 | -12.3535 94.6029 2 240 | -14.5019 94.961 2 241 | -15.1465 95.0684 2 242 | -16.6504 95.3277 2 243 | -18.7988 95.6771 2 244 | -20.9472 96.004 2 245 | -23.0957 96.3506 2 246 | -25.2441 96.7133 2 247 | -27.3926 97.1129 2 248 | -28.1982 97.2169 2 249 | -29.541 97.3847 2 250 | -31.6894 97.7204 2 251 | -33.8379 98.0561 2 252 | -35.9863 98.3918 2 253 | -38.1347 98.7069 2 254 | -40.2832 99.0632 2 255 | -41.8945 99.3653 2 256 | -42.4316 99.466 2 257 | -44.5801 99.7346 2 258 | -46.7285 99.8688 2 259 | -48.8769 99.8688 2 260 | -51.0254 99.6772 2 261 | -53.1738 99.4 2 262 | -53.3887 99.3653 2 263 | -55.3223 99.0534 2 264 | -57.4707 98.6376 2 265 | -59.6191 98.2911 2 266 | -61.7676 97.989 2 267 | -63.916 97.7204 2 268 | -66.0644 97.4518 2 269 | -67.5684 97.2169 2 270 | -68.2129 97.1162 2 271 | -70.3613 96.7805 2 272 | -72.5098 96.3776 2 273 | -74.6582 96.004 2 274 | -76.8066 95.6391 2 275 | -78.9551 95.3034 2 276 | -80.2083 95.0684 2 277 | -81.1035 94.8952 2 278 | -83.252 94.5486 2 279 | -85.4004 94.0949 2 280 | -87.5488 93.6477 2 281 | -89.6973 93.1626 2 282 | -90.6372 92.92 2 283 | -91.8457 92.6081 2 284 | -93.9941 92.0537 2 285 | -96.1426 91.4299 2 286 | -98.291 90.8062 2 287 | -98.3887 90.7715 2 288 | -100.439 90.0439 2 289 | -102.588 89.2318 2 290 | -103.993 88.6231 2 291 | -104.736 88.3008 2 292 | -106.885 87.2526 2 293 | -108.295 86.4747 2 294 | -109.033 86.037 2 295 | -111.182 84.5328 2 296 | -111.45 84.3262 2 297 | -113.33 82.8223 2 298 | -114.031 82.1778 2 299 | -115.479 80.7903 2 300 | -116.239 80.0294 2 301 | -117.627 78.5157 2 302 | -118.164 77.8809 2 303 | -119.775 75.8859 2 304 | -119.89 75.7325 2 305 | -121.348 73.584 2 306 | -121.924 72.6362 2 307 | -122.628 71.4356 2 308 | -123.739 69.2872 2 309 | -124.072 68.6426 2 310 | -124.8 67.1387 2 311 | -125.755 64.9903 2 312 | -126.221 63.8266 2 313 | -126.602 62.8419 2 314 | -127.434 60.6934 2 315 | -128.19 58.545 2 316 | -128.369 58.0079 2 317 | -128.873 56.3965 2 318 | -129.513 54.2481 2 319 | -130.081 52.0997 2 320 | -130.518 50.548 2 321 | -130.691 49.9512 2 322 | -131.245 47.8028 2 323 | -131.73 45.6543 2 324 | -132.285 43.5059 2 325 | -132.666 41.8178 2 326 | -132.77 41.3575 2 327 | -133.255 39.209 2 328 | -133.707 37.0606 2 329 | -134.156 34.9122 2 330 | -134.572 32.7637 2 331 | -134.814 31.5105 2 332 | -134.988 30.6153 2 333 | -135.404 28.4668 2 334 | -135.75 26.3184 2 335 | -136.139 24.17 2 336 | -136.481 22.0215 2 337 | -136.771 19.8731 2 338 | -136.963 18.7989 2 339 | -137.148 17.7246 2 340 | -137.519 15.5762 2 341 | -137.922 13.4278 2 342 | -138.382 11.2793 2 343 | -138.843 9.13089 2 344 | -139.111 7.87764 2 345 | -139.29 6.98246 2 346 | -139.648 4.83402 2 347 | -140.078 2.68558 2 348 | -140.436 0.537142 2 349 | -140.778 -1.6113 2 350 | -141 -3.75973 2 351 | -141.149 -5.90817 2 352 | -141.22 -8.05661 2 353 | -141.136 -10.205 2 354 | -140.971 -12.3535 2 355 | -140.873 -14.5019 2 356 | -140.959 -16.6504 2 357 | -141.215 -18.7988 2 358 | -141.26 -19.1569 2 359 | -141.466 -20.9472 2 360 | -141.618 -23.0957 2 361 | -141.618 -25.2441 2 362 | -141.379 -27.3926 2 363 | -141.26 -28.1982 2 364 | -141.036 -29.541 2 365 | -140.767 -31.6894 2 366 | -140.701 -33.8379 2 367 | -140.787 -35.9863 2 368 | -140.888 -38.1347 2 369 | -140.902 -40.2832 2 370 | -140.743 -42.4316 2 371 | -140.454 -44.5801 2 372 | -140.07 -46.7285 2 373 | -139.593 -48.8769 2 374 | -139.111 -50.8719 2 375 | -139.068 -51.0254 2 376 | -138.355 -53.1738 2 377 | -137.615 -55.3223 2 378 | -136.963 -56.9824 2 379 | -136.739 -57.4707 2 380 | -135.754 -59.6191 2 381 | -134.814 -61.6699 2 382 | -134.763 -61.7676 2 383 | -133.695 -63.916 2 384 | -132.709 -66.0644 2 385 | -132.666 -66.1621 2 386 | -131.726 -68.2129 2 387 | -130.724 -70.3613 2 388 | -130.518 -70.7745 2 389 | -129.65 -72.5098 2 390 | -128.409 -74.6582 2 391 | -128.369 -74.7253 2 392 | -127.037 -76.8066 2 393 | -126.221 -77.9405 2 394 | -125.49 -78.9551 2 395 | -124.072 -80.8208 2 396 | -123.828 -81.1035 2 397 | -121.971 -83.252 2 398 | -121.924 -83.3031 2 399 | -119.827 -85.4004 2 400 | -119.775 -85.4515 2 401 | -117.627 -87.2661 2 402 | -117.269 -87.5488 2 403 | -115.479 -88.9623 2 404 | -114.548 -89.6973 2 405 | -113.33 -90.6584 2 406 | -111.826 -91.8457 2 407 | -111.182 -92.3545 2 408 | -109.235 -93.9941 2 409 | -109.033 -94.1553 2 410 | -106.885 -95.953 2 411 | -106.655 -96.1426 2 412 | -104.736 -97.556 2 413 | -103.805 -98.291 2 414 | -102.588 -99.1606 2 415 | -100.798 -100.439 2 416 | -100.439 -100.673 2 417 | -98.291 -102.051 2 418 | -97.5033 -102.588 2 419 | -96.1426 -103.373 2 420 | -93.9941 -104.513 2 421 | -93.5059 -104.736 2 422 | -91.8457 -105.413 2 423 | -89.6973 -106.182 2 424 | -87.5488 -106.84 2 425 | -87.3698 -106.885 2 426 | -85.4004 -107.377 2 427 | -83.252 -108.052 2 428 | -81.1035 -108.88 2 429 | -80.7812 -109.033 2 430 | -78.9551 -109.794 2 431 | -76.8066 -110.668 2 432 | -75.4937 -111.182 2 433 | -74.6582 -111.482 2 434 | -72.5098 -112.084 2 435 | -70.3613 -112.63 2 436 | -68.2129 -113.184 2 437 | -67.5684 -113.33 2 438 | -66.0644 -113.631 2 439 | -63.916 -114.181 2 440 | -61.7676 -114.628 2 441 | -59.6191 -115.152 2 442 | -57.7392 -115.479 2 443 | -57.4707 -115.52 2 444 | -55.3223 -115.933 2 445 | -53.1738 -116.209 2 446 | -51.0254 -116.508 2 447 | -48.8769 -116.777 2 448 | -46.7285 -117.045 2 449 | -44.5801 -117.3 2 450 | -42.4316 -117.58 2 451 | -41.8945 -117.627 2 452 | -40.2832 -117.746 2 453 | -38.1347 -117.985 2 454 | -35.9863 -118.202 2 455 | -33.8379 -118.356 2 456 | -31.6894 -118.509 2 457 | -29.541 -118.586 2 458 | -27.3926 -118.586 2 459 | -25.2441 -118.586 2 460 | -23.0957 -118.509 2 461 | -20.9472 -118.509 2 462 | -18.7988 -118.586 2 463 | -16.6504 -118.701 2 464 | -14.5019 -118.84 2 465 | -12.3535 -118.978 2 466 | -10.205 -119.138 2 467 | -8.05661 -119.222 2 468 | -5.90817 -119.352 2 469 | -3.75973 -119.417 2 470 | -1.6113 -119.54 2 471 | 0.537142 -119.675 2 472 | 2.14847 -119.775 2 473 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_51.txt: -------------------------------------------------------------------------------- 1 | 2.68558 -119.81 7 2 | 4.83402 -119.879 7 3 | 6.98246 -120.018 7 4 | 9.13089 -120.157 7 5 | 11.2793 -120.295 7 6 | 13.4278 -120.503 7 7 | 15.5762 -120.682 7 8 | 17.7246 -120.816 7 9 | 19.8731 -120.95 7 10 | 22.0215 -121.045 7 11 | 24.17 -121.045 7 12 | 26.3184 -121.017 7 13 | 28.4668 -120.915 7 14 | 30.6153 -120.749 7 15 | 32.7637 -120.547 7 16 | 34.9122 -120.279 7 17 | 37.0606 -119.949 7 18 | 38.1348 -119.775 7 19 | 39.209 -119.608 7 20 | 41.3575 -119.256 7 21 | 43.5059 -118.84 7 22 | 45.6543 -118.399 7 23 | 47.8028 -117.939 7 24 | 49.1839 -117.627 7 25 | 49.9512 -117.454 7 26 | 52.0997 -116.969 7 27 | 54.2481 -116.452 7 28 | 56.3965 -115.915 7 29 | 58.1421 -115.479 7 30 | 58.545 -115.371 7 31 | 60.6934 -114.774 7 32 | 62.8419 -114.196 7 33 | 64.9903 -113.632 7 34 | 66.0645 -113.33 7 35 | 67.1387 -113.018 7 36 | 69.2872 -112.394 7 37 | 71.4356 -111.771 7 38 | 73.4647 -111.182 7 39 | 73.584 -111.147 7 40 | 75.7325 -110.454 7 41 | 77.8809 -109.83 7 42 | 80.0294 -109.069 7 43 | 80.1368 -109.033 7 44 | 82.1778 -108.353 7 45 | 84.3262 -107.543 7 46 | 86.0271 -106.885 7 47 | 86.4747 -106.706 7 48 | 88.6231 -105.811 7 49 | 90.7715 -104.844 7 50 | 91.0017 -104.736 7 51 | 92.92 -103.841 7 52 | 95.0684 -102.699 7 53 | 95.2698 -102.588 7 54 | 97.2169 -101.514 7 55 | 99.0494 -100.439 7 56 | 99.3653 -100.248 7 57 | 101.514 -98.9207 7 58 | 102.475 -98.291 7 59 | 103.662 -97.4854 7 60 | 105.542 -96.1426 7 61 | 105.811 -95.9437 7 62 | 107.959 -94.3522 7 63 | 108.399 -93.9941 7 64 | 110.107 -92.5481 7 65 | 110.901 -91.8457 7 66 | 112.256 -90.5996 7 67 | 113.237 -89.6973 7 68 | 114.404 -88.5783 7 69 | 115.434 -87.5488 7 70 | 116.553 -86.3812 7 71 | 117.455 -85.4004 7 72 | 118.701 -84.0459 7 73 | 119.432 -83.252 7 74 | 120.85 -81.5639 7 75 | 121.222 -81.1035 7 76 | 122.957 -78.9551 7 77 | 122.998 -78.9014 7 78 | 124.494 -76.8066 7 79 | 125.147 -75.8455 7 80 | 125.952 -74.6582 7 81 | 127.295 -72.5694 7 82 | 127.332 -72.5098 7 83 | 128.591 -70.3613 7 84 | 129.443 -68.8171 7 85 | 129.777 -68.2129 7 86 | 130.84 -66.0644 7 87 | 131.592 -64.5605 7 88 | 131.914 -63.916 7 89 | 132.845 -61.7676 7 90 | 133.705 -59.6191 7 91 | 133.74 -59.5296 7 92 | 134.537 -57.4707 7 93 | 135.3 -55.3223 7 94 | 135.889 -53.4961 7 95 | 135.993 -53.1738 7 96 | 136.616 -51.0254 7 97 | 137.198 -48.8769 7 98 | 137.725 -46.7285 7 99 | 138.037 -45.3474 7 100 | 138.205 -44.5801 7 101 | 138.675 -42.4316 7 102 | 139.078 -40.2832 7 103 | 139.414 -38.1347 7 104 | 139.682 -35.9863 7 105 | 139.884 -33.8379 7 106 | 140.018 -31.6894 7 107 | 140.151 -29.541 7 108 | 140.186 -28.4668 7 109 | 140.22 -27.3926 7 110 | 140.221 -25.2441 7 111 | 140.221 -23.0957 7 112 | 140.221 -20.9472 7 113 | 140.221 -18.7988 7 114 | 140.186 -17.7246 7 115 | 140.15 -16.6504 7 116 | 140.149 -14.5019 7 117 | 140.078 -12.3535 7 118 | 140.078 -10.205 7 119 | 140.078 -8.05661 7 120 | 140.078 -5.90817 7 121 | 140.082 -3.75973 7 122 | 140.082 -1.6113 7 123 | 140.018 0.537142 7 124 | 139.958 2.68558 7 125 | 139.893 4.83402 7 126 | 139.762 6.98246 7 127 | 139.632 9.13089 7 128 | 139.481 11.2793 7 129 | 139.279 13.4278 7 130 | 139.078 15.5762 7 131 | 138.876 17.7246 7 132 | 138.626 19.8731 7 133 | 138.406 22.0215 7 134 | 138.205 24.17 7 135 | 138.037 25.5127 7 136 | 137.933 26.3184 7 137 | 137.656 28.4668 7 138 | 137.332 30.6153 7 139 | 136.997 32.7637 7 140 | 136.594 34.9122 7 141 | 136.191 37.0606 7 142 | 135.889 38.4417 7 143 | 135.715 39.209 7 144 | 135.251 41.3575 7 145 | 134.745 43.5059 7 146 | 134.244 45.6543 7 147 | 133.74 47.4447 7 148 | 133.636 47.8028 7 149 | 133.082 49.9512 7 150 | 132.458 52.0997 7 151 | 131.765 54.2481 7 152 | 131.592 54.7852 7 153 | 131.072 56.3965 7 154 | 130.31 58.545 7 155 | 129.479 60.6934 7 156 | 129.443 60.7829 7 157 | 128.62 62.8419 7 158 | 127.617 64.9903 7 159 | 127.295 65.6348 7 160 | 126.517 67.1387 7 161 | 125.338 69.2872 7 162 | 125.147 69.6031 7 163 | 124.034 71.4356 7 164 | 122.998 72.9621 7 165 | 122.56 73.584 7 166 | 120.891 75.7325 7 167 | 120.85 75.7813 7 168 | 119.002 77.8809 7 169 | 118.701 78.1942 7 170 | 116.786 80.0294 7 171 | 116.553 80.2359 7 172 | 114.404 81.9712 7 173 | 114.122 82.1778 7 174 | 112.256 83.4438 7 175 | 110.803 84.3262 7 176 | 110.107 84.7337 7 177 | 107.959 85.919 7 178 | 106.808 86.4747 7 179 | 105.811 86.9402 7 180 | 103.662 87.8712 7 181 | 101.782 88.6231 7 182 | 101.514 88.7271 7 183 | 99.3653 89.4201 7 184 | 97.2169 90.1132 7 185 | 95.0684 90.6676 7 186 | 94.6656 90.7715 7 187 | 92.92 91.222 7 188 | 90.7715 91.7451 7 189 | 88.6231 92.1479 7 190 | 86.4747 92.5388 7 191 | 84.3262 92.8853 7 192 | 84.1114 92.92 7 193 | 82.1778 93.2319 7 194 | 80.0294 93.5578 7 195 | 77.8809 93.8556 7 196 | 75.7325 94.2021 7 197 | 73.584 94.4793 7 198 | 71.4356 94.7566 7 199 | 69.2872 94.9645 7 200 | 68.4815 95.0684 7 201 | 67.1387 95.2417 7 202 | 64.9903 95.5189 7 203 | 62.8419 95.7961 7 204 | 60.6934 96.0733 7 205 | 58.545 96.338 7 206 | 56.3965 96.579 7 207 | 54.2481 96.7286 7 208 | 52.0997 96.9147 7 209 | 49.9512 96.989 7 210 | 47.8028 97.1162 7 211 | 45.6543 97.1162 7 212 | 43.5059 97.1162 7 213 | 41.3575 97.0541 7 214 | 39.209 96.989 7 215 | 37.0606 96.8588 7 216 | 34.9122 96.7805 7 217 | 32.7637 96.6462 7 218 | 30.6153 96.5119 7 219 | 28.4668 96.3105 7 220 | 26.3184 96.1068 7 221 | 24.17 95.8654 7 222 | 22.0215 95.6055 7 223 | 19.8731 95.3191 7 224 | 17.7246 95.1031 7 225 | 17.4561 95.0684 7 226 | 15.5762 94.8334 7 227 | 13.4278 94.6179 7 228 | 11.2793 94.3635 7 229 | 9.13089 94.1328 7 230 | 6.98246 93.8868 7 231 | 4.83402 93.6719 7 232 | 2.68558 93.5287 7 233 | 0.537142 93.4571 7 234 | -1.6113 93.4571 7 235 | -3.75973 93.5287 7 236 | -5.90817 93.717 7 237 | -8.05661 93.9942 7 238 | -10.205 94.2714 7 239 | -12.3535 94.6179 7 240 | -14.5019 95.0338 7 241 | -14.7168 95.0684 7 242 | -16.6504 95.3705 7 243 | -18.7988 95.7734 7 244 | -20.9472 96.1762 7 245 | -23.0957 96.5119 7 246 | -25.2441 96.9147 7 247 | -27.1777 97.2169 7 248 | -27.3926 97.2504 7 249 | -29.541 97.6533 7 250 | -31.6894 98.0561 7 251 | -33.8379 98.4589 7 252 | -35.9863 98.9148 7 253 | -38.1347 99.3306 7 254 | -38.3496 99.3653 7 255 | -40.2832 99.6772 7 256 | -42.4316 99.8851 7 257 | -44.5801 100.024 7 258 | -46.7285 100.093 7 259 | -48.8769 100.093 7 260 | -51.0254 100.093 7 261 | -53.1738 100.003 7 262 | -55.3223 99.8017 7 263 | -57.4707 99.5331 7 264 | -58.3659 99.3653 7 265 | -59.6191 99.1227 7 266 | -61.7676 98.6603 7 267 | -63.916 98.2575 7 268 | -66.0644 97.8753 7 269 | -68.2129 97.519 7 270 | -70.1465 97.2169 7 271 | -70.3613 97.1822 7 272 | -72.5098 96.905 7 273 | -74.6582 96.5585 7 274 | -76.8066 96.2119 7 275 | -78.9551 95.7961 7 276 | -81.1035 95.4496 7 277 | -83.0729 95.0684 7 278 | -83.252 95.0338 7 279 | -85.4004 94.6179 7 280 | -87.5488 94.2021 7 281 | -89.6973 93.7592 7 282 | -91.8457 93.2319 7 283 | -93.2268 92.92 7 284 | -93.9941 92.7409 7 285 | -96.1426 92.123 7 286 | -98.291 91.4992 7 287 | -100.439 90.8755 7 288 | -100.732 90.7715 7 289 | -102.588 90.0912 7 290 | -104.736 89.2318 7 291 | -106.141 88.6231 7 292 | -106.885 88.2897 7 293 | -109.033 87.1785 7 294 | -110.234 86.4747 7 295 | -111.182 85.8779 7 296 | -113.276 84.3262 7 297 | -113.33 84.2849 7 298 | -115.479 82.4786 7 299 | -115.805 82.1778 7 300 | -117.627 80.3563 7 301 | -117.94 80.0294 7 302 | -119.775 77.9321 7 303 | -119.817 77.8809 7 304 | -121.407 75.7325 7 305 | -121.924 74.9975 7 306 | -122.85 73.584 7 307 | -124.035 71.4356 7 308 | -124.072 71.364 7 309 | -125.146 69.2872 7 310 | -126.11 67.1387 7 311 | -126.221 66.8702 7 312 | -126.973 64.9903 7 313 | -127.76 62.8419 7 314 | -128.369 61.0157 7 315 | -128.477 60.6934 7 316 | -129.166 58.545 7 317 | -129.79 56.3965 7 318 | -130.414 54.2481 7 319 | -130.518 53.89 7 320 | -131.037 52.0997 7 321 | -131.558 49.9512 7 322 | -132.077 47.8028 7 323 | -132.562 45.6543 7 324 | -132.666 45.194 7 325 | -133.047 43.5059 7 326 | -133.505 41.3575 7 327 | -133.975 39.209 7 328 | -134.378 37.0606 7 329 | -134.781 34.9122 7 330 | -134.814 34.7331 7 331 | -135.196 32.7637 7 332 | -135.587 30.6153 7 333 | -135.958 28.4668 7 334 | -136.305 26.3184 7 335 | -136.641 24.17 7 336 | -136.926 22.0215 7 337 | -136.963 21.753 7 338 | -137.222 19.8731 7 339 | -137.519 17.7246 7 340 | -137.889 15.5762 7 341 | -138.306 13.4278 7 342 | -138.689 11.2793 7 343 | -139.111 9.30993 7 344 | -139.147 9.13089 7 345 | -139.562 6.98246 7 346 | -139.935 4.83402 7 347 | -140.293 2.68558 7 348 | -140.63 0.537142 7 349 | -140.926 -1.6113 7 350 | -141.149 -3.75973 7 351 | -141.223 -5.90817 7 352 | -141.22 -8.05661 7 353 | -141.136 -10.205 7 354 | -140.959 -12.3535 7 355 | -140.873 -14.5019 7 356 | -140.946 -16.6504 7 357 | -141.126 -18.7988 7 358 | -141.26 -19.873 7 359 | -141.379 -20.9472 7 360 | -141.459 -23.0957 7 361 | -141.3 -25.2441 7 362 | -141.26 -25.5127 7 363 | -140.946 -27.3926 7 364 | -140.653 -29.541 7 365 | -140.409 -31.6894 7 366 | -140.409 -33.8379 7 367 | -140.529 -35.9863 7 368 | -140.557 -38.1347 7 369 | -140.557 -40.2832 7 370 | -140.345 -42.4316 7 371 | -140.026 -44.5801 7 372 | -139.61 -46.7285 7 373 | -139.111 -48.7235 7 374 | -139.067 -48.8769 7 375 | -138.381 -51.0254 7 376 | -137.748 -53.1738 7 377 | -136.963 -55.2148 7 378 | -136.914 -55.3223 7 379 | -135.938 -57.4707 7 380 | -134.955 -59.6191 7 381 | -134.814 -59.8877 7 382 | -133.687 -61.7676 7 383 | -132.715 -63.916 7 384 | -132.666 -64.0234 7 385 | -131.694 -66.0644 7 386 | -130.751 -68.2129 7 387 | -130.518 -68.75 7 388 | -129.846 -70.3613 7 389 | -128.842 -72.5098 7 390 | -128.369 -73.3538 7 391 | -127.639 -74.6582 7 392 | -126.264 -76.8066 7 393 | -126.221 -76.8663 7 394 | -124.654 -78.9551 7 395 | -124.072 -79.6901 7 396 | -122.793 -81.1035 7 397 | -121.924 -82.0647 7 398 | -120.737 -83.252 7 399 | -119.775 -84.2131 7 400 | -118.448 -85.4004 7 401 | -117.627 -86.1354 7 402 | -115.837 -87.5488 7 403 | -115.479 -87.8315 7 404 | -113.33 -89.3813 7 405 | -112.882 -89.6973 7 406 | -111.182 -90.9729 7 407 | -110.107 -91.8457 7 408 | -109.033 -92.6672 7 409 | -107.529 -93.9941 7 410 | -106.885 -94.5313 7 411 | -104.951 -96.1426 7 412 | -104.736 -96.3122 7 413 | -102.588 -97.821 7 414 | -102.009 -98.291 7 415 | -100.439 -99.3652 7 416 | -98.8694 -100.439 7 417 | -98.291 -100.798 7 418 | -96.1426 -102.212 7 419 | -95.5642 -102.588 7 420 | -93.9941 -103.438 7 421 | -91.8457 -104.409 7 422 | -90.9058 -104.736 7 423 | -89.6973 -105.108 7 424 | -87.5488 -105.639 7 425 | -85.4004 -106.091 7 426 | -83.252 -106.724 7 427 | -82.8491 -106.885 7 428 | -81.1035 -107.52 7 429 | -78.9551 -108.55 7 430 | -77.9883 -109.033 7 431 | -76.8066 -109.57 7 432 | -74.6582 -110.449 7 433 | -72.5098 -111.128 7 434 | -72.3307 -111.182 7 435 | -70.3613 -111.719 7 436 | -68.2129 -112.256 7 437 | -66.0644 -112.847 7 438 | -64.1308 -113.33 7 439 | -63.916 -113.377 7 440 | -61.7676 -113.937 7 441 | -59.6191 -114.453 7 442 | -57.4707 -114.844 7 443 | -55.3223 -115.325 7 444 | -54.5166 -115.479 7 445 | -53.1738 -115.693 7 446 | -51.0254 -115.971 7 447 | -48.8769 -116.329 7 448 | -46.7285 -116.646 7 449 | -44.5801 -116.926 7 450 | -42.4316 -117.09 7 451 | -40.2832 -117.371 7 452 | -38.1347 -117.576 7 453 | -37.5976 -117.627 7 454 | -35.9863 -117.756 7 455 | -33.8379 -118.065 7 456 | -31.6894 -118.303 7 457 | -29.541 -118.433 7 458 | -27.3926 -118.509 7 459 | -25.2441 -118.509 7 460 | -23.0957 -118.462 7 461 | -20.9472 -118.509 7 462 | -18.7988 -118.586 7 463 | -16.6504 -118.701 7 464 | -14.5019 -118.88 7 465 | -12.3535 -119.003 7 466 | -10.205 -119.138 7 467 | -8.05661 -119.272 7 468 | -5.90817 -119.406 7 469 | -3.75973 -119.54 7 470 | -1.6113 -119.608 7 471 | 0.537142 -119.675 7 472 | 2.14847 -119.775 7 473 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_53.txt: -------------------------------------------------------------------------------- 1 | 6.98246 -119.879 12 2 | 9.13089 -119.949 12 3 | 11.2793 -120.018 12 4 | 13.4278 -120.087 12 5 | 15.5762 -120.169 12 6 | 17.7246 -120.241 12 7 | 19.8731 -120.313 12 8 | 22.0215 -120.364 12 9 | 24.17 -120.364 12 10 | 26.3184 -120.295 12 11 | 28.4668 -120.226 12 12 | 30.6153 -120.087 12 13 | 32.7637 -119.879 12 14 | 33.5694 -119.775 12 15 | 34.9122 -119.602 12 16 | 37.0606 -119.325 12 17 | 39.209 -118.909 12 18 | 41.3575 -118.533 12 19 | 43.5059 -118.131 12 20 | 45.6543 -117.662 12 21 | 45.8078 -117.627 12 22 | 47.8028 -117.176 12 23 | 49.9512 -116.732 12 24 | 52.0997 -116.276 12 25 | 54.2481 -115.79 12 26 | 55.6292 -115.479 12 27 | 56.3965 -115.299 12 28 | 58.545 -114.751 12 29 | 60.6934 -114.266 12 30 | 62.8419 -113.711 12 31 | 64.3189 -113.33 12 32 | 64.9903 -113.151 12 33 | 67.1387 -112.602 12 34 | 69.2872 -111.979 12 35 | 71.4356 -111.424 12 36 | 72.2711 -111.182 12 37 | 73.584 -110.8 12 38 | 75.7325 -110.177 12 39 | 77.8809 -109.537 12 40 | 79.3458 -109.033 12 41 | 80.0294 -108.791 12 42 | 82.1778 -108.06 12 43 | 84.3262 -107.254 12 44 | 85.2352 -106.885 12 45 | 86.4747 -106.348 12 46 | 88.6231 -105.395 12 47 | 89.9838 -104.736 12 48 | 90.7715 -104.329 12 49 | 92.92 -103.218 12 50 | 94.1374 -102.588 12 51 | 95.0684 -102.089 12 52 | 97.2169 -100.847 12 53 | 97.9119 -100.439 12 54 | 99.3653 -99.5571 12 55 | 101.451 -98.291 12 56 | 101.514 -98.2512 12 57 | 103.662 -96.7948 12 58 | 104.623 -96.1426 12 59 | 105.811 -95.2749 12 60 | 107.476 -93.9941 12 61 | 107.959 -93.6223 12 62 | 110.107 -91.887 12 63 | 110.154 -91.8457 12 64 | 112.256 -89.9121 12 65 | 112.489 -89.6973 12 66 | 114.404 -87.8621 12 67 | 114.705 -87.5488 12 68 | 116.553 -85.6242 12 69 | 116.768 -85.4004 12 70 | 118.701 -83.2987 12 71 | 118.743 -83.252 12 72 | 120.56 -81.1035 12 73 | 120.85 -80.7454 12 74 | 122.296 -78.9551 12 75 | 122.998 -78.042 12 76 | 123.913 -76.8066 12 77 | 125.147 -75.054 12 78 | 125.425 -74.6582 12 79 | 126.873 -72.5098 12 80 | 127.295 -71.8147 12 81 | 128.147 -70.3613 12 82 | 129.332 -68.2129 12 83 | 129.443 -68.0115 12 84 | 130.482 -66.0644 12 85 | 131.484 -63.916 12 86 | 131.592 -63.6858 12 87 | 132.458 -61.7676 12 88 | 133.359 -59.6191 12 89 | 133.74 -58.6344 12 90 | 134.177 -57.4707 12 91 | 134.915 -55.3223 12 92 | 135.646 -53.1738 12 93 | 135.889 -52.4219 12 94 | 136.325 -51.0254 12 95 | 136.929 -48.8769 12 96 | 137.467 -46.7285 12 97 | 138.003 -44.5801 12 98 | 138.037 -44.4266 12 99 | 138.474 -42.4316 12 100 | 138.809 -40.2832 12 101 | 139.177 -38.1347 12 102 | 139.481 -35.9863 12 103 | 139.749 -33.8379 12 104 | 139.943 -31.6894 12 105 | 140.082 -29.541 12 106 | 140.151 -27.3926 12 107 | 140.151 -25.2441 12 108 | 140.186 -24.1699 12 109 | 140.22 -23.0957 12 110 | 140.221 -20.9472 12 111 | 140.186 -19.873 12 112 | 140.15 -18.7988 12 113 | 140.15 -16.6504 12 114 | 140.149 -14.5019 12 115 | 140.078 -12.3535 12 116 | 140.078 -10.205 12 117 | 140.078 -8.05661 12 118 | 140.15 -5.90817 12 119 | 140.151 -3.75973 12 120 | 140.186 -2.68552 12 121 | 140.22 -1.6113 12 122 | 140.22 0.537142 12 123 | 140.22 2.68558 12 124 | 140.219 4.83402 12 125 | 140.186 5.90824 12 126 | 140.152 6.98246 12 127 | 140.085 9.13089 12 128 | 139.951 11.2793 12 129 | 139.816 13.4278 12 130 | 139.682 15.5762 12 131 | 139.481 17.7246 12 132 | 139.279 19.8731 12 133 | 139.078 22.0215 12 134 | 138.809 24.17 12 135 | 138.608 26.3184 12 136 | 138.349 28.4668 12 137 | 138.072 30.6153 12 138 | 138.037 30.8838 12 139 | 137.795 32.7637 12 140 | 137.517 34.9122 12 141 | 137.171 37.0606 12 142 | 136.755 39.209 12 143 | 136.339 41.3575 12 144 | 135.923 43.5059 12 145 | 135.889 43.6594 12 146 | 135.438 45.6543 12 147 | 134.884 47.8028 12 148 | 134.329 49.9512 12 149 | 133.74 51.9803 12 150 | 133.705 52.0997 12 151 | 133.06 54.2481 12 152 | 132.344 56.3965 12 153 | 131.592 58.4473 12 154 | 131.556 58.545 12 155 | 130.768 60.6934 12 156 | 129.837 62.8419 12 157 | 129.443 63.7508 12 158 | 128.888 64.9903 12 159 | 127.851 67.1387 12 160 | 127.295 68.1458 12 161 | 126.665 69.2872 12 162 | 125.338 71.4356 12 163 | 125.147 71.734 12 164 | 123.913 73.584 12 165 | 122.998 74.7606 12 166 | 122.213 75.7325 12 167 | 120.85 77.2738 12 168 | 120.268 77.8809 12 169 | 118.701 79.4475 12 170 | 118.066 80.0294 12 171 | 116.553 81.3102 12 172 | 115.479 82.1778 12 173 | 114.404 82.9835 12 174 | 112.316 84.3262 12 175 | 112.256 84.3646 12 176 | 110.107 85.6227 12 177 | 108.46 86.4747 12 178 | 107.959 86.7253 12 179 | 105.811 87.6563 12 180 | 103.662 88.5157 12 181 | 103.369 88.6231 12 182 | 101.514 89.2815 12 183 | 99.3653 89.9745 12 184 | 97.2169 90.5983 12 185 | 96.5455 90.7715 12 186 | 95.0684 91.1408 12 187 | 92.92 91.6379 12 188 | 90.7715 92.0808 12 189 | 88.6231 92.4836 12 190 | 86.4747 92.8853 12 191 | 86.2598 92.92 12 192 | 84.3262 93.2221 12 193 | 82.1778 93.5091 12 194 | 80.0294 93.8556 12 195 | 77.8809 94.1621 12 196 | 75.7325 94.4793 12 197 | 73.584 94.7566 12 198 | 71.6504 95.0684 12 199 | 71.4356 95.102 12 200 | 69.2872 95.3803 12 201 | 67.1387 95.6771 12 202 | 64.9903 95.9636 12 203 | 62.8419 96.3649 12 204 | 60.6934 96.7353 12 205 | 58.545 97.1057 12 206 | 57.7393 97.2169 12 207 | 56.3965 97.4021 12 208 | 54.2481 97.6243 12 209 | 52.0997 97.7725 12 210 | 49.9512 97.8466 12 211 | 47.8028 97.8972 12 212 | 45.6543 97.8972 12 213 | 43.5059 97.8972 12 214 | 41.3575 97.8256 12 215 | 39.209 97.7725 12 216 | 37.0606 97.6984 12 217 | 34.9122 97.6243 12 218 | 32.7637 97.4762 12 219 | 30.6153 97.2552 12 220 | 30.3467 97.2169 12 221 | 28.4668 96.9483 12 222 | 26.3184 96.7181 12 223 | 24.17 96.4112 12 224 | 22.0215 96.1426 12 225 | 19.8731 95.9039 12 226 | 17.7246 95.6652 12 227 | 15.5762 95.4904 12 228 | 13.4278 95.3277 12 229 | 11.2793 95.1068 12 230 | 10.7422 95.0684 12 231 | 9.13089 94.9533 12 232 | 6.98246 94.7231 12 233 | 4.83402 94.5512 12 234 | 2.68558 94.3921 12 235 | 0.537142 94.2329 12 236 | -1.6113 94.186 12 237 | -3.75973 94.2165 12 238 | -5.90817 94.3646 12 239 | -8.05661 94.5313 12 240 | -10.205 94.8832 12 241 | -11.2793 95.0684 12 242 | -12.3535 95.2536 12 243 | -14.5019 95.6981 12 244 | -16.6504 96.2167 12 245 | -18.7988 96.7181 12 246 | -20.9472 97.1798 12 247 | -21.1263 97.2169 12 248 | -23.0957 97.6243 12 249 | -25.2441 97.9947 12 250 | -27.3926 98.3269 12 251 | -29.541 98.7069 12 252 | -31.6894 99.1146 12 253 | -33.1933 99.3653 12 254 | -33.8379 99.4693 12 255 | -35.9863 99.8017 12 256 | -38.1347 100.024 12 257 | -40.2832 100.205 12 258 | -42.4316 100.272 12 259 | -44.5801 100.339 12 260 | -46.7285 100.374 12 261 | -48.8769 100.406 12 262 | -51.0254 100.44 12 263 | -53.1738 100.44 12 264 | -55.3223 100.406 12 265 | -57.4707 100.309 12 266 | -59.6191 100.137 12 267 | -61.7676 99.8158 12 268 | -63.916 99.4 12 269 | -64.0695 99.3653 12 270 | -66.0644 98.8998 12 271 | -68.2129 98.3985 12 272 | -70.3613 97.9446 12 273 | -72.5098 97.4675 12 274 | -74.0137 97.2169 12 275 | -74.6582 97.1094 12 276 | -76.8066 96.6971 12 277 | -78.9551 96.3506 12 278 | -81.1035 95.9347 12 279 | -83.252 95.5189 12 280 | -85.4004 95.1031 12 281 | -85.5794 95.0684 12 282 | -87.5488 94.6873 12 283 | -89.6973 94.2292 12 284 | -91.8457 93.7592 12 285 | -93.9941 93.2319 12 286 | -95.2026 92.92 12 287 | -96.1426 92.6774 12 288 | -98.291 92.123 12 289 | -100.439 91.4765 12 290 | -102.588 90.8062 12 291 | -102.686 90.7715 12 292 | -104.736 90.0196 12 293 | -106.885 89.1429 12 294 | -108.036 88.6231 12 295 | -109.033 88.1416 12 296 | -111.182 87.0303 12 297 | -112.077 86.4747 12 298 | -113.33 85.669 12 299 | -115.21 84.3262 12 300 | -115.479 84.1197 12 301 | -117.627 82.2226 12 302 | -117.674 82.1778 12 303 | -119.775 80.0761 12 304 | -119.818 80.0294 12 305 | -121.635 77.8809 12 306 | -121.924 77.5049 12 307 | -123.19 75.7325 12 308 | -124.072 74.3599 12 309 | -124.554 73.584 12 310 | -125.665 71.4356 12 311 | -126.221 70.2847 12 312 | -126.686 69.2872 12 313 | -127.546 67.1387 12 314 | -128.333 64.9903 12 315 | -128.369 64.8926 12 316 | -129.097 62.8419 12 317 | -129.766 60.6934 12 318 | -130.344 58.545 12 319 | -130.518 57.9482 12 320 | -130.968 56.3965 12 321 | -131.453 54.2481 12 322 | -131.938 52.0997 12 323 | -132.423 49.9512 12 324 | -132.666 48.877 12 325 | -132.901 47.8028 12 326 | -133.324 45.6543 12 327 | -133.774 43.5059 12 328 | -134.177 41.3575 12 329 | -134.572 39.209 12 330 | -134.814 37.7051 12 331 | -134.918 37.0606 12 332 | -135.318 34.9122 12 333 | -135.681 32.7637 12 334 | -136.027 30.6153 12 335 | -136.374 28.4668 12 336 | -136.712 26.3184 12 337 | -136.963 24.4385 12 338 | -136.998 24.17 12 339 | -137.285 22.0215 12 340 | -137.572 19.8731 12 341 | -137.889 17.7246 12 342 | -138.229 15.5762 12 343 | -138.613 13.4278 12 344 | -138.992 11.2793 12 345 | -139.111 10.6348 12 346 | -139.362 9.13089 12 347 | -139.741 6.98246 12 348 | -140.111 4.83402 12 349 | -140.436 2.68558 12 350 | -140.778 0.537142 12 351 | -141 -1.6113 12 352 | -141.145 -3.75973 12 353 | -141.145 -5.90817 12 354 | -141.061 -8.05661 12 355 | -140.805 -10.205 12 356 | -140.615 -12.3535 12 357 | -140.499 -14.5019 12 358 | -140.653 -16.6504 12 359 | -140.933 -18.7988 12 360 | -141.213 -20.9472 12 361 | -141.26 -22.0215 12 362 | -141.3 -23.0957 12 363 | -141.26 -23.6328 12 364 | -141.126 -25.2441 12 365 | -140.767 -27.3926 12 366 | -140.357 -29.541 12 367 | -140.1 -31.6894 12 368 | -140.1 -33.8379 12 369 | -140.186 -35.9863 12 370 | -140.265 -38.1347 12 371 | -140.224 -40.2832 12 372 | -140.026 -42.4316 12 373 | -139.687 -44.5801 12 374 | -139.226 -46.7285 12 375 | -139.111 -47.1889 12 376 | -138.639 -48.8769 12 377 | -138.078 -51.0254 12 378 | -137.401 -53.1738 12 379 | -136.963 -54.4867 12 380 | -136.621 -55.3223 12 381 | -135.608 -57.4707 12 382 | -134.814 -59.1308 12 383 | -134.532 -59.6191 12 384 | -133.364 -61.7676 12 385 | -132.666 -63.0371 12 386 | -132.129 -63.916 12 387 | -131.108 -66.0644 12 388 | -130.518 -67.3774 12 389 | -130.176 -68.2129 12 390 | -129.271 -70.3613 12 391 | -128.369 -72.2412 12 392 | -128.235 -72.5098 12 393 | -127.037 -74.6582 12 394 | -126.221 -75.8588 12 395 | -125.549 -76.8066 12 396 | -124.072 -78.776 12 397 | -123.911 -78.9551 12 398 | -121.975 -81.1035 12 399 | -121.924 -81.16 12 400 | -119.832 -83.252 12 401 | -119.775 -83.3085 12 402 | -117.627 -85.2214 12 403 | -117.397 -85.4004 12 404 | -115.479 -86.8924 12 405 | -114.57 -87.5488 12 406 | -113.33 -88.444 12 407 | -111.595 -89.6973 12 408 | -111.182 -89.9957 12 409 | -109.033 -91.4876 12 410 | -108.62 -91.8457 12 411 | -106.885 -93.3496 12 412 | -106.141 -93.9941 12 413 | -104.736 -95.1355 12 414 | -103.585 -96.1426 12 415 | -102.588 -96.964 12 416 | -100.977 -98.291 12 417 | -100.439 -98.667 12 418 | -98.291 -100.141 12 419 | -97.9074 -100.439 12 420 | -96.1426 -101.563 12 421 | -94.4073 -102.588 12 422 | -93.9941 -102.803 12 423 | -91.8457 -103.796 12 424 | -89.6973 -104.513 12 425 | -88.93 -104.736 12 426 | -87.5488 -105.094 12 427 | -85.4004 -105.497 12 428 | -83.252 -106.152 12 429 | -81.4616 -106.885 12 430 | -81.1035 -107.025 12 431 | -78.9551 -108.061 12 432 | -76.9141 -109.033 12 433 | -76.8066 -109.08 12 434 | -74.6582 -110.014 12 435 | -72.5098 -110.721 12 436 | -70.8984 -111.182 12 437 | -70.3613 -111.316 12 438 | -68.2129 -111.789 12 439 | -66.0644 -112.305 12 440 | -63.916 -112.87 12 441 | -62.3047 -113.33 12 442 | -61.7676 -113.464 12 443 | -59.6191 -113.912 12 444 | -57.4707 -114.217 12 445 | -55.3223 -114.551 12 446 | -53.1738 -114.888 12 447 | -51.0254 -115.21 12 448 | -49.6826 -115.479 12 449 | -48.8769 -115.607 12 450 | -46.7285 -115.951 12 451 | -44.5801 -116.239 12 452 | -42.4316 -116.459 12 453 | -40.2832 -116.699 12 454 | -38.1347 -116.895 12 455 | -35.9863 -117.188 12 456 | -33.8379 -117.48 12 457 | -32.7637 -117.627 12 458 | -31.6894 -117.751 12 459 | -29.541 -117.916 12 460 | -27.3926 -117.999 12 461 | -25.2441 -118.065 12 462 | -23.0957 -118.081 12 463 | -20.9472 -118.081 12 464 | -18.7988 -118.164 12 465 | -16.6504 -118.303 12 466 | -14.5019 -118.479 12 467 | -12.3535 -118.665 12 468 | -10.205 -118.84 12 469 | -8.05661 -119.003 12 470 | -5.90817 -119.138 12 471 | -3.75973 -119.287 12 472 | -1.6113 -119.417 12 473 | 0.537142 -119.54 12 474 | 2.68558 -119.675 12 475 | 4.83402 -119.742 12 476 | 5.37113 -119.775 12 477 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_59.txt: -------------------------------------------------------------------------------- 1 | -29.541 -115.52 27 2 | -27.3926 -115.521 27 3 | -25.2441 -115.521 27 4 | -23.0957 -115.521 27 5 | -20.9472 -115.521 27 6 | -18.7988 -115.602 27 7 | -16.6504 -115.677 27 8 | -14.5019 -115.824 27 9 | -12.3535 -115.886 27 10 | -10.205 -115.944 27 11 | -8.05661 -115.929 27 12 | -5.90817 -115.929 27 13 | -3.75973 -115.915 27 14 | -1.6113 -115.929 27 15 | 0.537142 -115.998 27 16 | 2.68558 -116.183 27 17 | 4.83402 -116.345 27 18 | 6.98246 -116.586 27 19 | 9.13089 -116.788 27 20 | 11.2793 -117.038 27 21 | 13.4278 -117.176 27 22 | 15.5762 -117.315 27 23 | 17.7246 -117.384 27 24 | 19.8731 -117.454 27 25 | 22.0215 -117.454 27 26 | 24.17 -117.454 27 27 | 26.3184 -117.384 27 28 | 28.4668 -117.315 27 29 | 30.6153 -117.176 27 30 | 32.7637 -117.038 27 31 | 34.9122 -116.83 27 32 | 37.0606 -116.553 27 33 | 39.209 -116.318 27 34 | 41.3575 -115.998 27 35 | 43.5059 -115.714 27 36 | 45.0098 -115.479 27 37 | 45.6543 -115.371 27 38 | 47.8028 -114.959 27 39 | 49.9512 -114.572 27 40 | 52.0997 -114.169 27 41 | 54.2481 -113.766 27 42 | 56.2431 -113.33 27 43 | 56.3965 -113.295 27 44 | 58.545 -112.81 27 45 | 60.6934 -112.325 27 46 | 62.8419 -111.84 27 47 | 64.9903 -111.286 27 48 | 65.4507 -111.182 27 49 | 67.1387 -110.788 27 50 | 69.2872 -110.208 27 51 | 71.4356 -109.622 27 52 | 73.4647 -109.033 27 53 | 73.584 -108.999 27 54 | 75.7325 -108.375 27 55 | 77.8809 -107.682 27 56 | 80.0294 -106.919 27 57 | 80.1189 -106.885 27 58 | 82.1778 -106.061 27 59 | 84.3262 -105.202 27 60 | 85.4005 -104.736 27 61 | 86.4747 -104.271 27 62 | 88.6231 -103.34 27 63 | 90.127 -102.588 27 64 | 90.7715 -102.255 27 65 | 92.92 -101.143 27 66 | 94.1956 -100.439 27 67 | 95.0684 -99.9407 27 68 | 97.2169 -98.6363 27 69 | 97.7856 -98.291 27 70 | 99.3653 -97.3319 27 71 | 101.215 -96.1426 27 72 | 101.514 -95.9437 27 73 | 103.662 -94.4929 27 74 | 104.36 -93.9941 27 75 | 105.811 -92.9199 27 76 | 107.261 -91.8457 27 77 | 107.959 -91.3285 27 78 | 110.056 -89.6973 27 79 | 110.107 -89.6543 27 80 | 112.256 -87.7637 27 81 | 112.489 -87.5488 27 82 | 114.404 -85.7871 27 83 | 114.807 -85.4004 27 84 | 116.553 -83.6548 27 85 | 116.94 -83.252 27 86 | 118.701 -81.337 27 87 | 118.908 -81.1035 27 88 | 120.807 -78.9551 27 89 | 120.85 -78.9039 27 90 | 122.544 -76.8066 27 91 | 122.998 -76.2158 27 92 | 124.152 -74.6582 27 93 | 125.147 -73.3154 27 94 | 125.722 -72.5098 27 95 | 127.18 -70.3613 27 96 | 127.295 -70.1718 27 97 | 128.443 -68.2129 27 98 | 129.443 -66.4001 27 99 | 129.622 -66.0644 27 100 | 130.768 -63.916 27 101 | 131.592 -62.1512 27 102 | 131.771 -61.7676 27 103 | 132.805 -59.6191 27 104 | 133.706 -57.4707 27 105 | 133.74 -57.3881 27 106 | 134.607 -55.3223 27 107 | 135.438 -53.1738 27 108 | 135.889 -51.9043 27 109 | 136.191 -51.0254 27 110 | 136.894 -48.8769 27 111 | 137.517 -46.7285 27 112 | 138.037 -44.9381 27 113 | 138.141 -44.5801 27 114 | 138.675 -42.4316 27 115 | 139.181 -40.2832 27 116 | 139.666 -38.1347 27 117 | 140.151 -35.9863 27 118 | 140.186 -35.8328 27 119 | 140.636 -33.8379 27 120 | 141.092 -31.6894 27 121 | 141.537 -29.541 27 122 | 141.953 -27.3926 27 123 | 142.299 -25.2441 27 124 | 142.334 -25.0293 27 125 | 142.646 -23.0957 27 126 | 142.905 -20.9472 27 127 | 143.131 -18.7988 27 128 | 143.308 -16.6504 27 129 | 143.478 -14.5019 27 130 | 143.616 -12.3535 27 131 | 143.731 -10.205 27 132 | 143.874 -8.05661 27 133 | 144.017 -5.90817 27 134 | 144.16 -3.75973 27 135 | 144.303 -1.6113 27 136 | 144.375 0.537142 27 137 | 144.483 2.14847 27 138 | 144.517 2.68558 27 139 | 144.586 4.83402 27 140 | 144.725 6.98246 27 141 | 144.794 9.13089 27 142 | 144.864 11.2793 27 143 | 144.933 13.4278 27 144 | 144.986 15.5762 27 145 | 145.002 17.7246 27 146 | 144.986 19.8731 27 147 | 144.986 22.0215 27 148 | 144.852 24.17 27 149 | 144.717 26.3184 27 150 | 144.516 28.4668 27 151 | 144.483 28.7354 27 152 | 144.248 30.6153 27 153 | 143.979 32.7637 27 154 | 143.686 34.9122 27 155 | 143.308 37.0606 27 156 | 142.923 39.209 27 157 | 142.502 41.3575 27 158 | 142.334 42.1248 27 159 | 142.022 43.5059 27 160 | 141.537 45.6543 27 161 | 140.983 47.8028 27 162 | 140.359 49.9512 27 163 | 140.186 50.548 27 164 | 139.72 52.0997 27 165 | 139.004 54.2481 27 166 | 138.216 56.3965 27 167 | 138.037 56.8848 27 168 | 137.428 58.545 27 169 | 136.497 60.6934 27 170 | 135.889 62.0982 27 171 | 135.555 62.8419 27 172 | 134.564 64.9903 27 173 | 133.74 66.6374 27 174 | 133.472 67.1387 27 175 | 132.296 69.2872 27 176 | 131.592 70.4878 27 177 | 131.016 71.4356 27 178 | 129.563 73.584 27 179 | 129.443 73.7452 27 180 | 127.915 75.7325 27 181 | 127.295 76.4998 27 182 | 126.135 77.8809 27 183 | 125.147 78.9551 27 184 | 124.072 80.0294 27 185 | 122.998 81.0176 27 186 | 121.68 82.1778 27 187 | 120.85 82.8802 27 188 | 118.871 84.3262 27 189 | 118.701 84.4456 27 190 | 116.553 85.8225 27 191 | 115.411 86.4747 27 192 | 114.404 87.0118 27 193 | 112.256 88.0144 27 194 | 110.851 88.6231 27 195 | 110.107 88.935 27 196 | 107.959 89.6973 27 197 | 105.811 90.3904 27 198 | 104.498 90.7715 27 199 | 103.662 91.0141 27 200 | 101.514 91.5685 27 201 | 99.3653 92.123 27 202 | 97.2169 92.6081 27 203 | 95.6055 92.92 27 204 | 95.0684 93.0207 27 205 | 92.92 93.4235 27 206 | 90.7715 93.7863 27 207 | 88.6231 94.1621 27 208 | 86.4747 94.4793 27 209 | 84.3262 94.7663 27 210 | 82.3926 95.0684 27 211 | 82.1778 95.102 27 212 | 80.0294 95.3705 27 213 | 77.8809 95.6391 27 214 | 75.7325 95.9077 27 215 | 73.584 96.2119 27 216 | 71.4356 96.5119 27 217 | 69.2872 96.8476 27 218 | 67.1387 97.1822 27 219 | 66.8702 97.2169 27 220 | 64.9903 97.4518 27 221 | 62.8419 97.6673 27 222 | 60.6934 97.8972 27 223 | 58.545 98.0404 27 224 | 56.3965 98.1525 27 225 | 54.2481 98.1837 27 226 | 52.0997 98.2553 27 227 | 49.9512 98.2553 27 228 | 47.8028 98.2553 27 229 | 45.6543 98.2553 27 230 | 43.5059 98.2553 27 231 | 41.3575 98.1837 27 232 | 39.209 98.1837 27 233 | 37.0606 98.1837 27 234 | 34.9122 98.1429 27 235 | 32.7637 98.0688 27 236 | 30.6153 97.9947 27 237 | 28.4668 97.8466 27 238 | 26.3184 97.6243 27 239 | 24.17 97.3362 27 240 | 23.0957 97.2169 27 241 | 22.0215 97.0975 27 242 | 19.8731 96.7792 27 243 | 17.7246 96.4609 27 244 | 15.5762 96.1426 27 245 | 13.4278 95.9039 27 246 | 11.2793 95.6652 27 247 | 9.13089 95.5061 27 248 | 6.98246 95.337 27 249 | 4.83402 95.2536 27 250 | 2.68558 95.1068 27 251 | 0.537142 95.1055 27 252 | -1.6113 95.1055 27 253 | -3.75973 95.1055 27 254 | -5.90817 95.1796 27 255 | -8.05661 95.3277 27 256 | -10.205 95.55 27 257 | -12.3535 95.7722 27 258 | -14.5019 96.1426 27 259 | -16.6504 96.4649 27 260 | -18.7988 96.823 27 261 | -20.7682 97.2169 27 262 | -20.9472 97.2527 27 263 | -23.0957 97.6673 27 264 | -25.2441 98.1525 27 265 | -27.3926 98.685 27 266 | -29.541 99.1863 27 267 | -30.4362 99.3653 27 268 | -31.6894 99.6079 27 269 | -33.8379 100.003 27 270 | -35.9863 100.309 27 271 | -38.1347 100.505 27 272 | -40.2832 100.57 27 273 | -42.4316 100.635 27 274 | -44.5801 100.661 27 275 | -46.7285 100.661 27 276 | -48.8769 100.661 27 277 | -51.0254 100.635 27 278 | -53.1738 100.635 27 279 | -55.3223 100.57 27 280 | -57.4707 100.505 27 281 | -59.6191 100.374 27 282 | -61.7676 100.244 27 283 | -63.916 99.936 27 284 | -66.0644 99.6003 27 285 | -67.3177 99.3653 27 286 | -68.2129 99.192 27 287 | -70.3613 98.7275 27 288 | -72.5098 98.3247 27 289 | -74.6582 97.989 27 290 | -76.8066 97.64 27 291 | -78.9551 97.2504 27 292 | -79.1341 97.2169 27 293 | -81.1035 96.8476 27 294 | -83.252 96.4448 27 295 | -85.4004 95.9748 27 296 | -87.5488 95.5048 27 297 | -89.5438 95.0684 27 298 | -89.6973 95.0338 27 299 | -91.8457 94.5649 27 300 | -93.9941 94.0949 27 301 | -96.1426 93.6249 27 302 | -98.291 93.0932 27 303 | -98.9624 92.92 27 304 | -100.439 92.5388 27 305 | -102.588 91.9465 27 306 | -104.736 91.3422 27 307 | -106.563 90.7715 27 308 | -106.885 90.6641 27 309 | -109.033 89.9052 27 310 | -111.182 89.0886 27 311 | -112.256 88.6231 27 312 | -113.33 88.1576 27 313 | -115.479 87.155 27 314 | -116.754 86.4747 27 315 | -117.627 85.9759 27 316 | -119.775 84.5948 27 317 | -120.151 84.3262 27 318 | -121.924 82.9083 27 319 | -122.754 82.1778 27 320 | -124.072 80.9168 27 321 | -124.889 80.0294 27 322 | -126.221 78.4436 27 323 | -126.658 77.8809 27 324 | -128.091 75.7325 27 325 | -128.369 75.2312 27 326 | -129.221 73.584 27 327 | -130.195 71.4356 27 328 | -130.518 70.6299 27 329 | -131.037 69.2872 27 330 | -131.73 67.1387 27 331 | -132.344 64.9903 27 332 | -132.666 63.7818 27 333 | -132.909 62.8419 27 334 | -133.394 60.6934 27 335 | -133.879 58.545 27 336 | -134.295 56.3965 27 337 | -134.711 54.2481 27 338 | -134.814 53.711 27 339 | -135.117 52.0997 27 340 | -135.404 49.9512 27 341 | -135.721 47.8028 27 342 | -135.958 45.6543 27 343 | -136.166 43.5059 27 344 | -136.354 41.3575 27 345 | -136.512 39.209 27 346 | -136.712 37.0606 27 347 | -136.927 34.9122 27 348 | -136.963 34.6436 27 349 | -137.198 32.7637 27 350 | -137.466 30.6153 27 351 | -137.802 28.4668 27 352 | -138.176 26.3184 27 353 | -138.592 24.17 27 354 | -139.074 22.0215 27 355 | -139.111 21.8425 27 356 | -139.493 19.8731 27 357 | -139.863 17.7246 27 358 | -140.293 15.5762 27 359 | -140.651 13.4278 27 360 | -141.009 11.2793 27 361 | -141.26 9.77543 27 362 | -141.364 9.13089 27 363 | -141.71 6.98246 27 364 | -141.987 4.83402 27 365 | -142.334 2.68558 27 366 | -142.585 0.537142 27 367 | -142.799 -1.6113 27 368 | -143.001 -3.75973 27 369 | -143.063 -5.90817 27 370 | -142.971 -8.05661 27 371 | -142.788 -10.205 27 372 | -142.558 -12.3535 27 373 | -142.427 -14.5019 27 374 | -142.427 -16.6504 27 375 | -142.578 -18.7988 27 376 | -142.676 -20.9472 27 377 | -142.614 -23.0957 27 378 | -142.289 -25.2441 27 379 | -141.842 -27.3926 27 380 | -141.305 -29.541 27 381 | -141.26 -29.8991 27 382 | -141.016 -31.6894 27 383 | -140.839 -33.8379 27 384 | -140.767 -35.9863 27 385 | -140.64 -38.1347 27 386 | -140.424 -40.2832 27 387 | -140.026 -42.4316 27 388 | -139.469 -44.5801 27 389 | -139.111 -45.9612 27 390 | -138.888 -46.7285 27 391 | -138.161 -48.8769 27 392 | -137.48 -51.0254 27 393 | -136.963 -52.577 27 394 | -136.729 -53.1738 27 395 | -135.803 -55.3223 27 396 | -134.856 -57.4707 27 397 | -134.814 -57.5533 27 398 | -133.594 -59.6191 27 399 | -132.666 -61.32 27 400 | -132.397 -61.7676 27 401 | -131.25 -63.916 27 402 | -130.518 -65.3809 27 403 | -130.176 -66.0644 27 404 | -129.13 -68.2129 27 405 | -128.369 -69.7347 27 406 | -128.056 -70.3613 27 407 | -126.84 -72.5098 27 408 | -126.221 -73.4576 27 409 | -125.37 -74.6582 27 410 | -124.072 -76.3889 27 411 | -123.714 -76.8066 27 412 | -121.924 -78.8954 27 413 | -121.864 -78.9551 27 414 | -119.775 -80.9339 27 415 | -119.574 -81.1035 27 416 | -117.627 -82.7431 27 417 | -116.936 -83.252 27 418 | -115.479 -84.3262 27 419 | -113.778 -85.4004 27 420 | -113.33 -85.6689 27 421 | -111.182 -86.8924 27 422 | -110.107 -87.5488 27 423 | -109.033 -88.2439 27 424 | -107.133 -89.6973 27 425 | -106.885 -89.8868 27 426 | -104.803 -91.8457 27 427 | -104.736 -91.9089 27 428 | -102.588 -93.9225 27 429 | -102.505 -93.9941 27 430 | -100.439 -95.6726 27 431 | -99.861 -96.1426 27 432 | -98.291 -97.2765 27 433 | -96.8863 -98.291 27 434 | -96.1426 -98.7744 27 435 | -93.9941 -100.171 27 436 | -93.581 -100.439 27 437 | -91.8457 -101.379 27 438 | -89.6973 -102.261 27 439 | -88.8618 -102.588 27 440 | -87.5488 -103.042 27 441 | -85.4004 -103.662 27 442 | -83.252 -104.503 27 443 | -82.7148 -104.736 27 444 | -81.1035 -105.381 27 445 | -78.9551 -106.482 27 446 | -78.2114 -106.885 27 447 | -76.8066 -107.615 27 448 | -74.6582 -108.646 27 449 | -73.6914 -109.033 27 450 | -72.5098 -109.455 27 451 | -70.3613 -110.107 27 452 | -68.2129 -110.664 27 453 | -66.0644 -111.139 27 454 | -65.8496 -111.182 27 455 | -63.916 -111.527 27 456 | -61.7676 -111.778 27 457 | -59.6191 -111.998 27 458 | -57.4707 -112.211 27 459 | -55.3223 -112.349 27 460 | -53.1738 -112.598 27 461 | -51.0254 -112.87 27 462 | -48.8769 -113.276 27 463 | -48.6084 -113.33 27 464 | -46.7285 -113.631 27 465 | -44.5801 -113.975 27 466 | -42.4316 -114.217 27 467 | -40.2832 -114.498 27 468 | -38.1347 -114.648 27 469 | -35.9863 -114.916 27 470 | -33.8379 -115.12 27 471 | -31.6894 -115.325 27 472 | -30.0781 -115.479 27 473 | -------------------------------------------------------------------------------- /assets/polygons/raw_mask_92.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/assets/polygons/raw_mask_92.txt -------------------------------------------------------------------------------- /doc/doxygen_log.txt: -------------------------------------------------------------------------------- 1 | Searching for include files... 2 | Searching for example files... 3 | Searching for images... 4 | Searching for dot files... 5 | Searching for msc files... 6 | Searching for dia files... 7 | Searching for files to exclude 8 | Searching INPUT for files to process... 9 | Searching for files in directory C:/Users/dl.chen/Documents/Python_Practices/doc 10 | Reading and parsing tag files 11 | Parsing files 12 | Reading C:/Users/dl.chen/Documents/Python_Practices/doc/trimap_module.py... 13 | Parsing file C:/Users/dl.chen/Documents/Python_Practices/doc/trimap_module.py... 14 | Building group list... 15 | Building directory list... 16 | Building namespace list... 17 | Building file list... 18 | Building class list... 19 | Associating documentation with classes... 20 | Computing nesting relations for classes... 21 | Building example list... 22 | Searching for enumerations... 23 | Searching for documented typedefs... 24 | Searching for members imported via using declarations... 25 | Searching for included using directives... 26 | Searching for documented variables... 27 | Building interface member list... 28 | Building member list... 29 | Searching for friends... 30 | Searching for documented defines... 31 | Computing class inheritance relations... 32 | Computing class usage relations... 33 | Flushing cached template relations that have become invalid... 34 | Computing class relations... 35 | Add enum values to enums... 36 | Searching for member function documentation... 37 | Creating members for template instances... 38 | Building page list... 39 | Search for main page... 40 | Computing page relations... 41 | Determining the scope of groups... 42 | Sorting lists... 43 | Freeing entry tree 44 | Determining which enums are documented 45 | Computing member relations... 46 | Building full member lists recursively... 47 | Adding members to member groups. 48 | Computing member references... 49 | Inheriting documentation... 50 | Generating disk names... 51 | Adding source references... 52 | Adding xrefitems... 53 | Sorting member lists... 54 | Computing dependencies between directories... 55 | Generating citations page... 56 | Counting data structures... 57 | Resolving user defined references... 58 | Finding anchors and sections in the documentation... 59 | Transferring function references... 60 | Combining using relations... 61 | Adding members to index pages... 62 | Generating style sheet... 63 | Generating search indices... 64 | Generating example documentation... 65 | Generating file sources... 66 | Generating code for file trimap_module.py... 67 | Generating file documentation... 68 | Generating docs for file trimap_module.py... 69 | Generating page documentation... 70 | Generating group documentation... 71 | Generating class documentation... 72 | Generating namespace index... 73 | Generating docs for namespace trimap_module 74 | Generating graph info page... 75 | Generating directory documentation... 76 | Generating index page... 77 | Generating page index... 78 | Generating module index... 79 | Generating namespace index... 80 | Generating namespace member index... 81 | Generating annotated compound index... 82 | Generating alphabetical compound index... 83 | Generating hierarchical class index... 84 | Generating member index... 85 | Generating file index... 86 | Generating file member index... 87 | Generating example index... 88 | finalizing index lists... 89 | writing tag file... 90 | lookup cache used 0/65536 hits=0 misses=0 91 | finished... 92 | *** Doxygen has finished -------------------------------------------------------------------------------- /doc/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/bc_s.png -------------------------------------------------------------------------------- /doc/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/bdwn.png -------------------------------------------------------------------------------- /doc/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/closed.png -------------------------------------------------------------------------------- /doc/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/doc.png -------------------------------------------------------------------------------- /doc/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/doxygen.png -------------------------------------------------------------------------------- /doc/html/dynsections.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function toggleVisibility(linkObj) 25 | { 26 | var base = $(linkObj).attr('id'); 27 | var summary = $('#'+base+'-summary'); 28 | var content = $('#'+base+'-content'); 29 | var trigger = $('#'+base+'-trigger'); 30 | var src=$(trigger).attr('src'); 31 | if (content.is(':visible')===true) { 32 | content.hide(); 33 | summary.show(); 34 | $(linkObj).addClass('closed').removeClass('opened'); 35 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 36 | } else { 37 | content.show(); 38 | summary.hide(); 39 | $(linkObj).removeClass('closed').addClass('opened'); 40 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 41 | } 42 | return false; 43 | } 44 | 45 | function updateStripes() 46 | { 47 | $('table.directory tr'). 48 | removeClass('even').filter(':visible:even').addClass('even'); 49 | } 50 | 51 | function toggleLevel(level) 52 | { 53 | $('table.directory tr').each(function() { 54 | var l = this.id.split('_').length-1; 55 | var i = $('#img'+this.id.substring(3)); 56 | var a = $('#arr'+this.id.substring(3)); 57 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
Automatic Trimap Generator 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
File List
66 |
67 |
68 |
Here is a list of all files with brief descriptions:
69 | 70 | 71 |
 trimap_module.py
72 |
73 |
74 | 75 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /doc/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/folderclosed.png -------------------------------------------------------------------------------- /doc/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/folderopen.png -------------------------------------------------------------------------------- /doc/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: Main Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
Automatic Trimap Generator 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Automatic Trimap Generator Documentation
66 |
67 |
68 |
69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /doc/html/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 25 | function makeTree(data,relPath) { 26 | var result=''; 27 | if ('children' in data) { 28 | result+=''; 35 | } 36 | return result; 37 | } 38 | 39 | $('#main-nav').append(makeTree(menudata,relPath)); 40 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 41 | if (searchEnabled) { 42 | if (serverSide) { 43 | $('#main-menu').append('
  • '); 44 | } else { 45 | $('#main-menu').append('
  • '); 46 | } 47 | } 48 | $('#main-menu').smartmenus(); 49 | } 50 | /* @license-end */ 51 | -------------------------------------------------------------------------------- /doc/html/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @ @licstart The following is the entire license notice for the 3 | JavaScript code in this file. 4 | 5 | Copyright (C) 1997-2017 by Dimitri van Heesch 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | 21 | @licend The above is the entire license notice 22 | for the JavaScript code in this file 23 | */ 24 | var menudata={children:[ 25 | {text:"Main Page",url:"index.html"}, 26 | {text:"Namespaces",url:"namespaces.html",children:[ 27 | {text:"Namespace List",url:"namespaces.html"}]}, 28 | {text:"Files",url:"files.html",children:[ 29 | {text:"File List",url:"files.html"}]}]} 30 | -------------------------------------------------------------------------------- /doc/html/namespaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: Namespace List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    Automatic Trimap Generator 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
    49 | 50 |
    54 |
    55 | 56 | 57 |
    58 | 61 |
    62 | 63 |
    64 |
    65 |
    Namespace List
    66 |
    67 |
    68 |
    Here is a list of all namespaces with brief descriptions:
    69 | 70 | 71 |
     Ntrimap_module
    72 |
    73 |
    74 | 75 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /doc/html/namespacetrimap__module.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: trimap_module Namespace Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    Automatic Trimap Generator 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
    53 |
    54 | 55 | 56 |
    57 | 60 |
    61 | 62 |
    63 |
    64 |
    65 |
    trimap_module Namespace Reference
    66 |
    67 |
    68 |
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /doc/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/nav_f.png -------------------------------------------------------------------------------- /doc/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/nav_g.png -------------------------------------------------------------------------------- /doc/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/nav_h.png -------------------------------------------------------------------------------- /doc/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/open.png -------------------------------------------------------------------------------- /doc/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['trimap_5fmodule',['trimap_module',['../namespacetrimap__module.html',1,'']]], 4 | ['trimap_5fmodule_2epy',['trimap_module.py',['../trimap__module_8py.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/search/close.png -------------------------------------------------------------------------------- /doc/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['trimap_5fmodule_2epy',['trimap_module.py',['../trimap__module_8py.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/search/mag_sel.png -------------------------------------------------------------------------------- /doc/html/search/namespaces_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 18 |
    Searching...
    19 |
    No Matches
    20 | 28 |
    29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/html/search/namespaces_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['trimap_5fmodule',['trimap_module',['../namespacetrimap__module.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/html/search/search.css: -------------------------------------------------------------------------------- 1 | /*---------------- Search Box */ 2 | 3 | #FSearchBox { 4 | float: left; 5 | } 6 | 7 | #MSearchBox { 8 | white-space : nowrap; 9 | float: none; 10 | margin-top: 8px; 11 | right: 0px; 12 | width: 170px; 13 | height: 24px; 14 | z-index: 102; 15 | } 16 | 17 | #MSearchBox .left 18 | { 19 | display:block; 20 | position:absolute; 21 | left:10px; 22 | width:20px; 23 | height:19px; 24 | background:url('search_l.png') no-repeat; 25 | background-position:right; 26 | } 27 | 28 | #MSearchSelect { 29 | display:block; 30 | position:absolute; 31 | width:20px; 32 | height:19px; 33 | } 34 | 35 | .left #MSearchSelect { 36 | left:4px; 37 | } 38 | 39 | .right #MSearchSelect { 40 | right:5px; 41 | } 42 | 43 | #MSearchField { 44 | display:block; 45 | position:absolute; 46 | height:19px; 47 | background:url('search_m.png') repeat-x; 48 | border:none; 49 | width:115px; 50 | margin-left:20px; 51 | padding-left:4px; 52 | color: #909090; 53 | outline: none; 54 | font: 9pt Arial, Verdana, sans-serif; 55 | -webkit-border-radius: 0px; 56 | } 57 | 58 | #FSearchBox #MSearchField { 59 | margin-left:15px; 60 | } 61 | 62 | #MSearchBox .right { 63 | display:block; 64 | position:absolute; 65 | right:10px; 66 | top:8px; 67 | width:20px; 68 | height:19px; 69 | background:url('search_r.png') no-repeat; 70 | background-position:left; 71 | } 72 | 73 | #MSearchClose { 74 | display: none; 75 | position: absolute; 76 | top: 4px; 77 | background : none; 78 | border: none; 79 | margin: 0px 4px 0px 0px; 80 | padding: 0px 0px; 81 | outline: none; 82 | } 83 | 84 | .left #MSearchClose { 85 | left: 6px; 86 | } 87 | 88 | .right #MSearchClose { 89 | right: 2px; 90 | } 91 | 92 | .MSearchBoxActive #MSearchField { 93 | color: #000000; 94 | } 95 | 96 | /*---------------- Search filter selection */ 97 | 98 | #MSearchSelectWindow { 99 | display: none; 100 | position: absolute; 101 | left: 0; top: 0; 102 | border: 1px solid #90A5CE; 103 | background-color: #F9FAFC; 104 | z-index: 10001; 105 | padding-top: 4px; 106 | padding-bottom: 4px; 107 | -moz-border-radius: 4px; 108 | -webkit-border-top-left-radius: 4px; 109 | -webkit-border-top-right-radius: 4px; 110 | -webkit-border-bottom-left-radius: 4px; 111 | -webkit-border-bottom-right-radius: 4px; 112 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 113 | } 114 | 115 | .SelectItem { 116 | font: 8pt Arial, Verdana, sans-serif; 117 | padding-left: 2px; 118 | padding-right: 12px; 119 | border: 0px; 120 | } 121 | 122 | span.SelectionMark { 123 | margin-right: 4px; 124 | font-family: monospace; 125 | outline-style: none; 126 | text-decoration: none; 127 | } 128 | 129 | a.SelectItem { 130 | display: block; 131 | outline-style: none; 132 | color: #000000; 133 | text-decoration: none; 134 | padding-left: 6px; 135 | padding-right: 12px; 136 | } 137 | 138 | a.SelectItem:focus, 139 | a.SelectItem:active { 140 | color: #000000; 141 | outline-style: none; 142 | text-decoration: none; 143 | } 144 | 145 | a.SelectItem:hover { 146 | color: #FFFFFF; 147 | background-color: #3D578C; 148 | outline-style: none; 149 | text-decoration: none; 150 | cursor: pointer; 151 | display: block; 152 | } 153 | 154 | /*---------------- Search results window */ 155 | 156 | iframe#MSearchResults { 157 | width: 60ex; 158 | height: 15em; 159 | } 160 | 161 | #MSearchResultsWindow { 162 | display: none; 163 | position: absolute; 164 | left: 0; top: 0; 165 | border: 1px solid #000; 166 | background-color: #EEF1F7; 167 | z-index:10000; 168 | } 169 | 170 | /* ----------------------------------- */ 171 | 172 | 173 | #SRIndex { 174 | clear:both; 175 | padding-bottom: 15px; 176 | } 177 | 178 | .SREntry { 179 | font-size: 10pt; 180 | padding-left: 1ex; 181 | } 182 | 183 | .SRPage .SREntry { 184 | font-size: 8pt; 185 | padding: 1px 5px; 186 | } 187 | 188 | body.SRPage { 189 | margin: 5px 2px; 190 | } 191 | 192 | .SRChildren { 193 | padding-left: 3ex; padding-bottom: .5em 194 | } 195 | 196 | .SRPage .SRChildren { 197 | display: none; 198 | } 199 | 200 | .SRSymbol { 201 | font-weight: bold; 202 | color: #425E97; 203 | font-family: Arial, Verdana, sans-serif; 204 | text-decoration: none; 205 | outline: none; 206 | } 207 | 208 | a.SRScope { 209 | display: block; 210 | color: #425E97; 211 | font-family: Arial, Verdana, sans-serif; 212 | text-decoration: none; 213 | outline: none; 214 | } 215 | 216 | a.SRSymbol:focus, a.SRSymbol:active, 217 | a.SRScope:focus, a.SRScope:active { 218 | text-decoration: underline; 219 | } 220 | 221 | span.SRScope { 222 | padding-left: 4px; 223 | } 224 | 225 | .SRPage .SRStatus { 226 | padding: 2px 5px; 227 | font-size: 8pt; 228 | font-style: italic; 229 | } 230 | 231 | .SRResult { 232 | display: none; 233 | } 234 | 235 | DIV.searchresults { 236 | margin-left: 10px; 237 | margin-right: 10px; 238 | } 239 | 240 | /*---------------- External search page results */ 241 | 242 | .searchresult { 243 | background-color: #F0F3F8; 244 | } 245 | 246 | .pages b { 247 | color: white; 248 | padding: 5px 5px 3px 5px; 249 | background-image: url("../tab_a.png"); 250 | background-repeat: repeat-x; 251 | text-shadow: 0 1px 1px #000000; 252 | } 253 | 254 | .pages { 255 | line-height: 17px; 256 | margin-left: 4px; 257 | text-decoration: none; 258 | } 259 | 260 | .hl { 261 | font-weight: bold; 262 | } 263 | 264 | #searchresults { 265 | margin-bottom: 20px; 266 | } 267 | 268 | .searchpages { 269 | margin-top: 10px; 270 | } 271 | 272 | -------------------------------------------------------------------------------- /doc/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/search/search_l.png -------------------------------------------------------------------------------- /doc/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/search/search_m.png -------------------------------------------------------------------------------- /doc/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/search/search_r.png -------------------------------------------------------------------------------- /doc/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "t", 4 | 1: "t", 5 | 2: "t" 6 | }; 7 | 8 | var indexSectionNames = 9 | { 10 | 0: "all", 11 | 1: "namespaces", 12 | 2: "files" 13 | }; 14 | 15 | var indexSectionLabels = 16 | { 17 | 0: "All", 18 | 1: "Namespaces", 19 | 2: "Files" 20 | }; 21 | 22 | -------------------------------------------------------------------------------- /doc/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/splitbar.png -------------------------------------------------------------------------------- /doc/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/sync_off.png -------------------------------------------------------------------------------- /doc/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/sync_on.png -------------------------------------------------------------------------------- /doc/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/tab_a.png -------------------------------------------------------------------------------- /doc/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/tab_b.png -------------------------------------------------------------------------------- /doc/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/tab_h.png -------------------------------------------------------------------------------- /doc/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/doc/html/tab_s.png -------------------------------------------------------------------------------- /doc/html/tabs.css: -------------------------------------------------------------------------------- 1 | .sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} -------------------------------------------------------------------------------- /doc/html/trimap__module_8py.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: trimap_module.py File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    Automatic Trimap Generator 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
    53 |
    54 | 55 | 56 |
    57 | 60 |
    61 | 62 |
    63 |
    64 |
    65 | Namespaces
    66 |
    67 |
    trimap_module.py File Reference
    68 |
    69 |
    70 | 71 |

    Go to the source code of this file.

    72 | 73 | 75 | 76 | 77 |

    74 | Namespaces

     trimap_module
     
    78 |
    79 | 80 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /doc/html/trimap__module_8py_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Automatic Trimap Generator: trimap_module.py Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    Automatic Trimap Generator 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
    49 | 50 |
    54 |
    55 | 56 | 57 |
    58 | 61 |
    62 | 63 |
    64 |
    65 |
    trimap_module.py
    66 |
    67 |
    68 | Go to the documentation of this file.
    69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /doc/py_filter.bat.txt: -------------------------------------------------------------------------------- 1 | doxypypy -a -c %1 -------------------------------------------------------------------------------- /doc/trimap_module.py: -------------------------------------------------------------------------------- 1 | import cv2, os, sys 2 | import numpy as np 3 | 4 | def check_image(image): 5 | """ 6 | Checks whether the input image is binary. 7 | To be completed: optimization in nested for-loop using Cython 8 | 9 | Args: 10 | arg1: image 11 | 12 | Returns: 13 | binary image 14 | 15 | Raises: 16 | RGB image, grayscale image, all-black, and all-white image 17 | 18 | """ 19 | width = image.shape[0]; height = image.shape[1]; 20 | 21 | # So far, input image is converted to grayscale; 22 | # thus this is not an issue at the moment 23 | if len(image.shape) > 2: 24 | print("ERROR: non-binary image (RGB)"); 25 | sys.exit(); 26 | 27 | if cv2.countNonZero(image) == 0: 28 | print("ERROR: non-binary image (all black)"); 29 | sys.exit(); 30 | else: 31 | for i in range(0,width): 32 | for j in range (0,height): 33 | if (image[i,j] == 255 ): 34 | print("ERROR: non-binary (all white)"); 35 | sys.exit(); 36 | elif (image[i,j] != 0 and image[i,j] != 255 ): 37 | print("ERROR: non-binary (grayscale)") 38 | sys.exit(); 39 | else: 40 | return True 41 | 42 | def trimap(image, name, size, number, erosion=False): 43 | """ 44 | This function creates a trimap based on simple dilation algorithm 45 | 46 | Args: 47 | arg1: binary image 48 | arg2: name in string 49 | arg3: unknown region pixel 50 | arg4: number in string (for naming purpose) 51 | arg5: erosion value in pixel (default is False) 52 | 53 | Returns: 54 | trimap 55 | 56 | Raises: 57 | non-binary image, complete foreground erosion 58 | """ 59 | check_image(image); 60 | 61 | pixels = 2*size + 1; ## Double and plus 1 to have an odd-sized kernel 62 | kernel = np.ones((pixels,pixels),np.uint8) ## How many pixel of extension do I get 63 | 64 | if erosion is not False: 65 | erosion = int(erosion) 66 | erosion_kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 67 | image = cv2.erode(image, erosion_kernel, iterations=erosion) ## How many erosion do you expect 68 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 69 | # Error-handler to prevent entire foreground annihilation 70 | if cv2.countNonZero(image) == 0: 71 | print("ERROR: foreground has been entirely eroded"); 72 | sys.exit(); 73 | 74 | dilation = cv2.dilate(image, kernel, iterations = 1) 75 | 76 | dilation = np.where(dilation == 255, 127, dilation) ## WHITE to GRAY 77 | remake = np.where(dilation != 127, 0, dilation) ## Smoothing 78 | remake = np.where(image > 127, 200, dilation) ## mark the tumor inside GRAY 79 | 80 | remake = np.where(remake < 127, 0, remake) ## Embelishment 81 | remake = np.where(remake > 200, 0, remake) ## Embelishment 82 | remake = np.where(remake == 200, 255, remake) ## GRAY to WHITE 83 | 84 | path = "./images/results/" ## Change the directory 85 | new_name = '{}px_'.format(size) + name + '_{}.png'.format(number); 86 | cv2.imwrite(os.path.join(path , new_name) , remake) 87 | 88 | """ Uncomment to test the Python code 89 | if __name__ == '__main__': 90 | name = "./images/test_images/test_image_0.png"; # ONLY test_image_0.png shall succeed 91 | image = cv2.imread(name, cv2.IMREAD_GRAYSCALE) 92 | size = 10; 93 | number = name[-5]; 94 | title = "test_image" 95 | 96 | trimap(image, title, size, number, erosion=10); 97 | print("Here") 98 | """ 99 | -------------------------------------------------------------------------------- /images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/.DS_Store -------------------------------------------------------------------------------- /images/examples/bg_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/bg_img.png -------------------------------------------------------------------------------- /images/examples/closing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/closing.png -------------------------------------------------------------------------------- /images/examples/closing_trimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/closing_trimap.png -------------------------------------------------------------------------------- /images/examples/closing_trimap_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/closing_trimap_new.png -------------------------------------------------------------------------------- /images/examples/dilation_effect.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/dilation_effect.gif -------------------------------------------------------------------------------- /images/examples/eroded_image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/eroded_image.gif -------------------------------------------------------------------------------- /images/examples/erosion_effect.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/erosion_effect.gif -------------------------------------------------------------------------------- /images/examples/fg_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/fg_img.png -------------------------------------------------------------------------------- /images/examples/full_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/full_img.png -------------------------------------------------------------------------------- /images/examples/opening.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/opening.png -------------------------------------------------------------------------------- /images/examples/opening_trimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/opening_trimap.png -------------------------------------------------------------------------------- /images/examples/opening_trimap_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/opening_trimap_new.png -------------------------------------------------------------------------------- /images/examples/seg_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/seg_img.png -------------------------------------------------------------------------------- /images/examples/trimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/trimap.png -------------------------------------------------------------------------------- /images/examples/trimap_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/trimap_20.png -------------------------------------------------------------------------------- /images/examples/trimap_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/examples/trimap_30.png -------------------------------------------------------------------------------- /images/practices/binary_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/practices/binary_0.png -------------------------------------------------------------------------------- /images/practices/binary_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/practices/binary_1.png -------------------------------------------------------------------------------- /images/practices/binary_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/practices/binary_2.png -------------------------------------------------------------------------------- /images/practices/binary_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/practices/binary_3.png -------------------------------------------------------------------------------- /images/results/10px_test_image_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_00.png -------------------------------------------------------------------------------- /images/results/10px_test_image_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_01.png -------------------------------------------------------------------------------- /images/results/10px_test_image_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_03.png -------------------------------------------------------------------------------- /images/results/10px_test_image_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_05.png -------------------------------------------------------------------------------- /images/results/10px_test_image_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_07.png -------------------------------------------------------------------------------- /images/results/10px_test_image_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_09.png -------------------------------------------------------------------------------- /images/results/10px_test_image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_1.png -------------------------------------------------------------------------------- /images/results/10px_test_image_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_11.png -------------------------------------------------------------------------------- /images/results/10px_test_image_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_2.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_01.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_03.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_05.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_07.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_09.png -------------------------------------------------------------------------------- /images/results/10px_test_image_Erosion_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/10px_test_image_Erosion_11.png -------------------------------------------------------------------------------- /images/results/20px_test_image_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/results/20px_test_image_9.png -------------------------------------------------------------------------------- /images/test_images/test_image_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_0.png -------------------------------------------------------------------------------- /images/test_images/test_image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_1.png -------------------------------------------------------------------------------- /images/test_images/test_image_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_10.png -------------------------------------------------------------------------------- /images/test_images/test_image_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_11.png -------------------------------------------------------------------------------- /images/test_images/test_image_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_12.png -------------------------------------------------------------------------------- /images/test_images/test_image_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_2.png -------------------------------------------------------------------------------- /images/test_images/test_image_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_3.png -------------------------------------------------------------------------------- /images/test_images/test_image_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_4.png -------------------------------------------------------------------------------- /images/test_images/test_image_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_5.png -------------------------------------------------------------------------------- /images/test_images/test_image_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_6.png -------------------------------------------------------------------------------- /images/test_images/test_image_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_7.png -------------------------------------------------------------------------------- /images/test_images/test_image_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_8.png -------------------------------------------------------------------------------- /images/test_images/test_image_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/images/test_images/test_image_9.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/requirements.txt -------------------------------------------------------------------------------- /src/binarymask.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | import math 4 | import sys, os 5 | import matplotlib.pyplot as plt 6 | from matplotlib.path import Path 7 | 8 | def pnpoly(Polygon, vertex): 9 | """ 10 | Description: decide whether a point is inside or outside a closed polygon 11 | Input: a 2-D polygon with at least three distinct points 12 | a 2-D vertex using (x, y) format 13 | Output: 0 (if outside) or 1 (if inside or attached to the polygon) 14 | """ 15 | c = 0 16 | if (len(Polygon) < 3): 17 | print("ERROR: polygon requires at least three vertices") 18 | sys.exit 19 | elif (len(vertex) != 2): 20 | print("ERROR: vertex is not in 2D format") 21 | sys.exit 22 | 23 | for i in range(len(Polygon)): 24 | if (len(Polygon[i]) != 2): 25 | print("ERROR: vertex of the polygon is not in 2D format") 26 | sys.exit 27 | 28 | check = Path( Polygon ).contains_point( vertex ) 29 | c = (check is True and 1) or (check is False and 0) 30 | return c 31 | 32 | def binary_mask(Polygon, AllPixels, savePNG=False, saveTXT=False): 33 | """ 34 | TODO: Fix this part 35 | Description: Generate a binary mask based on a given 2-D contour polygon 36 | Polygon: The polygon containing contour points 37 | AllPixels: The generated binary mask 38 | savePNG: save the generated mask as a .png file 39 | saveTXT: save the generated mask as a .txt file 40 | """ 41 | rows = int( math.sqrt(len(AllPixels)) ) 42 | cols = int( math.sqrt(len(AllPixels)) ) 43 | final = np.zeros(rows*cols); 44 | 45 | for i in range(rows): 46 | for j in range(cols): 47 | final[i*cols+j] = pnpoly(Polygon, AllPixels[i*cols+j]) 48 | 49 | return final 50 | 51 | if __name__ == "__main__": 52 | Polygon = [[0.0, 0.0], [5.0, 0.0], [5.0, 5.0], [0.0, 5.0]] 53 | # point_00 = pnpoly(Polygon, [2.0, 2.0]) 54 | # point_01 = pnpoly(Polygon, [12.0, 15.0]) 55 | TestPixels = []; 56 | for i in range(10): 57 | for j in range(10): 58 | TestPixels.append( [i,j] ) 59 | 60 | results = binary_mask(Polygon, TestPixels) 61 | # cv2.imshow('img', results) 62 | # cv2.waitKey(0) 63 | # cv2.destroyAllWindows() 64 | 65 | test_poly = "./assets/polygons/raw_mask_30.txt" 66 | test = np.loadtxt(test_poly); 67 | 68 | ROI_x = []; ROI_y = []; ROI_z = []; ROI_xy = []; 69 | for i in range( int( test.size/3 ) ): 70 | ROI_x.append( test[i][0] ) 71 | ROI_y.append( test[i][1] ) 72 | ROI_z.append( test[i][2] ) 73 | ROI_xy.append([test[i][0], test[i][1]]) 74 | 75 | # FIXME 76 | # RawVoxels= []; 77 | # for i in range(512): 78 | # for j in range (512): 79 | # RawVoxels.append( [-275+i*1.074219 , -275+j*1.074219 ] ) 80 | # check_results = binary_mask(ROI_xy, RawVoxels); 81 | # plt.scatter(ROI_x, ROI_y, s=2, color='black') 82 | # plt.show() 83 | -------------------------------------------------------------------------------- /src/feature_extraction.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import numpy as np 4 | import cv2, os, sys 5 | # Input image is a numpy array with pixel value is BGR 6 | # (opencv default) 7 | 8 | #1. grayscale rgb mean and variance 9 | def get_pixel_summary(image): 10 | img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 11 | luminance = img_gray.mean() 12 | red = image[:,:,2].mean() 13 | green = image[:,:,1].mean() 14 | blue = image[:,:,0].mean() 15 | 16 | gray_var = img_gray.var() 17 | red_var = image[:,:,2].var() 18 | green_var = image[:,:,1].var() 19 | blue_var = image[:,:,0].var() 20 | 21 | return luminance, red, green, blue, gray_var, red_var, green_var, blue_var 22 | 23 | #2. distinct pixel rate 24 | def get_dist_pixel_rate(image): 25 | height, width,_ = image.shape 26 | dist_pixel = len(np.unique( [str(x) 27 | for x in image[:,:,:].reshape(-1, 3).tolist()])) 28 | dist_pixel_rate = dist_pixel / float(height * width) 29 | return dist_pixel_rate 30 | 31 | #3. colorfulness 32 | def image_colorfulness(image): 33 | (B, G, R) = cv2.split(image.astype("float")) 34 | rg = np.absolute(R - G) 35 | yb = np.absolute(0.5 * (R + G) - B) 36 | (rbMean, rbStd) = (np.mean(rg), np.std(rg)) 37 | (ybMean, ybStd) = (np.mean(yb), np.std(yb)) 38 | stdRoot = np.sqrt((rbStd ** 2) + (ybStd ** 2)) 39 | meanRoot = np.sqrt((rbMean ** 2) + (ybMean ** 2)) 40 | colorfulness = stdRoot + (0.3 * meanRoot) 41 | return colorfulness 42 | 43 | #4. saturation 44 | def get_saturation(image): 45 | img_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 46 | saturation = img_hsv[:,:,1].mean() 47 | return saturation 48 | 49 | #5 blur 50 | def get_blur(image): 51 | blur = cv2.Laplacian(image, cv2.CV_64F).var() 52 | return blur 53 | 54 | #6 sharpness 55 | def get_sharpness(image): 56 | gy, gx = np.gradient(img_gray) 57 | gnorm = np.sqrt(gx**2 + gy**2) 58 | sharpness = np.average(gnorm) 59 | return sharpness 60 | 61 | if __name__ == '__main__': 62 | path = '../images/test_images/test_image_12.png' 63 | image = cv2.imread(path, cv2.IMREAD_ANYCOLOR) 64 | cv2.imshow('Displayed Image', image) 65 | cv2.waitKey(0) 66 | cv2.destroyAllWindows() 67 | -------------------------------------------------------------------------------- /src/foreground_scaling.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import cv2, os, sys 4 | import numpy as np 5 | from abc import ABC, abstractmethod 6 | 7 | def extractImage(path): 8 | # error handller if the intended path is not found 9 | image = cv2.imread(path, cv2.IMREAD_GRAYSCALE); 10 | return image 11 | 12 | def checkImage(image): 13 | """ 14 | Args: 15 | image: input image to be checked 16 | Returns: 17 | binary image 18 | Raises: 19 | RGB image, grayscale image, all-black, and all-white image 20 | 21 | """ 22 | if len(image.shape) > 2: 23 | print("ERROR: non-binary image (RGB)"); 24 | sys.exit(); 25 | 26 | smallest = image.min(axis=0).min(axis=0); # lowest pixel value; should be 0 (black) 27 | largest = image.max(axis=0).max(axis=0); # highest pixel value; should be 1 (white) 28 | 29 | if (smallest == 0 and largest == 0): 30 | print("ERROR: non-binary image (all black)"); 31 | sys.exit(); 32 | elif (smallest == 255 and largest == 255): 33 | print("ERROR: non-binary image (all white)"); 34 | sys.exit(); 35 | elif (smallest > 0 or largest < 255 ): 36 | print("ERROR: non-binary image (grayscale)"); 37 | sys.exit(); 38 | else: 39 | return True 40 | 41 | 42 | class FGScale(ABC): 43 | """ 44 | An abstract base class that enables image erosion or dilation PRE trimap 45 | Attribute: binary image 46 | Method: scaling with two inputs: image and iterations 47 | """ 48 | def __init__(self, image): 49 | self.image = image; 50 | 51 | @abstractmethod 52 | def scaling(self, image, iteration): 53 | pass 54 | 55 | class Erosion(FGScale): 56 | def __init__(self, image): 57 | self.image = image 58 | 59 | def scaling(self, image, erosion): 60 | erosion = int(erosion) 61 | kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 62 | image = cv2.erode(image, kernel, iterations=erosion) ## The number of erosions 63 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 64 | # Error-handler to prevent entire foreground annihilation 65 | if cv2.countNonZero(image) == 0: 66 | print("ERROR: foreground has been entirely eroded"); 67 | sys.exit(); 68 | return image; 69 | 70 | class Dilation(FGScale): 71 | def __init__(self, image): 72 | self.image = image 73 | 74 | def scaling(self, image, dilation): 75 | dilation = int(dilation) 76 | kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 77 | image = cv2.dilate(image, kernel, iterations=dilation) ## The number of dilations 78 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 79 | # Error-handler to prevent entire foreground domination 80 | height = image.shape[0]; 81 | width = image.shape[1]; 82 | totalpixels = height*width; 83 | n_white_pix = np.sum(image == 255) 84 | 85 | if n_white_pix == totalpixels: 86 | print("ERROR: foreground has been entirely expanded"); 87 | sys.exit(); 88 | return image; 89 | 90 | 91 | ############################################# 92 | ### TESTING SECTION ### 93 | ############################################# 94 | if __name__ == '__main__': 95 | 96 | path = "./images/test_images/test_image_12.png" 97 | image = extractImage(path) 98 | 99 | unit01 = Erosion(image) 100 | new_image = unit01.scaling(image, 2) 101 | 102 | cv2.imshow('Displayed Image', new_image) 103 | cv2.waitKey(0) 104 | cv2.destroyAllWindows() 105 | -------------------------------------------------------------------------------- /test/README.md: -------------------------------------------------------------------------------- 1 | ## Designated for Unit Testing ## 2 | 3 | Issues to be addressed: 4 | 5 | - [ ] Prevent image erosion from eroding the entire image 6 | - [ ] Adaptive method to decide maximum erosion kernel 7 | - [ ] Reject all non-binary images (monochrome, grayscale, and RGB) 8 | - [ ] Unsupervised Learning Method to diminish all non-dominating foreground regions 9 | -------------------------------------------------------------------------------- /test/__pycache__/trimap_module.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lnugraha/trimap_generator/a279562b0d0f387896330cf88549e67618d1eb7f/test/__pycache__/trimap_module.cpython-36.pyc -------------------------------------------------------------------------------- /test/test_trimap_module.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from trimap_module import trimap 3 | 4 | class CheckImages(unittest.TestCase): 5 | pass 6 | 7 | 8 | 9 | 10 | if __name__ == '__main__': 11 | unittest.main() 12 | -------------------------------------------------------------------------------- /trimap_class.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import cv2, os, sys 4 | import numpy as np 5 | from abc import ABC, abstractmethod 6 | 7 | def extractImage(path): 8 | # error handller if the intended path is not found 9 | image = cv2.imread(path, cv2.IMREAD_GRAYSCALE) 10 | return image 11 | 12 | def checkImage(image): 13 | """ 14 | Args: 15 | image: input image to be checked 16 | Returns: 17 | binary image 18 | Raises: 19 | RGB image, grayscale image, all-black, and all-white image 20 | 21 | """ 22 | if len(image.shape) > 2: 23 | print("ERROR: non-binary image (RGB)") 24 | sys.exit() 25 | 26 | # lowest pixel value; should be 0 (black) 27 | smallest = image.min(axis=0).min(axis=0) 28 | # highest pixel value; should be 1 (white) 29 | largest = image.max(axis=0).max(axis=0) 30 | 31 | if (smallest == 0 and largest == 0): 32 | print("ERROR: non-binary image (all black)") 33 | sys.exit() 34 | elif (smallest == 255 and largest == 255): 35 | print("ERROR: non-binary image (all white)") 36 | sys.exit() 37 | elif (smallest > 0 or largest < 255 ): 38 | print("ERROR: non-binary image (grayscale)") 39 | sys.exit() 40 | else: 41 | return True 42 | 43 | class Toolbox: 44 | def __init__(self, image): 45 | self.image = image 46 | 47 | @property 48 | def printImage(self): 49 | """ 50 | Print image into a file for checking purpose 51 | unitTest = Toolbox(image); 52 | unitTest.printImage(image); 53 | """ 54 | f = open("image_results.dat", "w+") 55 | for i in range(0, self.image.shape[0]): 56 | for j in range(0, self.image.shape[1]): 57 | f.write("%d " %self.image[i,j]) 58 | f.write("\n") 59 | f.close() 60 | 61 | @property 62 | def displayImage(self): 63 | """ 64 | Display the image on a window 65 | Press any key to exit 66 | """ 67 | cv2.imshow('Displayed Image', self.image) 68 | cv2.waitKey(0) 69 | cv2.destroyAllWindows() 70 | 71 | def saveImage(self, title, extension): 72 | """ 73 | Save as a specific image format (bmp, png, or jpeg) 74 | """ 75 | cv2.imwrite("{}.{}".format(title,extension), self.image) 76 | 77 | def morph_open(self, image, kernel): 78 | """ 79 | Remove all white noises or speckles outside images 80 | Need to tune the kernel size 81 | Instruction: 82 | unit01 = Toolbox(image); 83 | kernel = np.ones( (9,9), np.uint8 ); 84 | morph = unit01.morph_open(input_image, kernel); 85 | """ 86 | bin_open = cv2.morphologyEx(self.image, cv2.MORPH_OPEN, kernel) 87 | return bin_open 88 | 89 | def morph_close(self, image, kernel): 90 | """ 91 | Remove all black noises or speckles inside images 92 | Need to tune the kernel size 93 | Instruction: 94 | unit01 = Toolbox(image); 95 | kernel = np.ones( (11,11)_, np.uint8 ); 96 | morph = unit01.morph_close(input_image, kernel); 97 | """ 98 | bin_close = cv2.morphologyEx(self.image, cv2.MORPH_CLOSE, kernel) 99 | return bin_close 100 | 101 | class DEFG(ABC): 102 | """ 103 | DEFG: Dilation or Erosion of Fore Ground 104 | An abstract base class that enables image erosion or dilation PRE trimap 105 | Attribute: binary image 106 | Method: scaling with two inputs: image and iterations 107 | """ 108 | def __init__(self, image): 109 | self.image = image; 110 | 111 | @abstractmethod 112 | def scaling(self, image, iteration): 113 | pass 114 | 115 | class Erosion(DEFG): 116 | def __init__(self, image): 117 | self.image = image 118 | 119 | def scaling(self, image, erosion): 120 | erosion = int(erosion) 121 | kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 122 | image = cv2.erode(image, kernel, iterations=erosion) ## The number of erosions 123 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 124 | # Error-handler to prevent entire foreground annihilation 125 | if cv2.countNonZero(image) == 0: 126 | print("ERROR: foreground has been entirely eroded") 127 | sys.exit() 128 | return image 129 | 130 | class Dilation(DEFG): 131 | def __init__(self, image): 132 | self.image = image 133 | 134 | def scaling(self, image, dilation): 135 | dilation = int(dilation) 136 | kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 137 | 138 | ## The number of dilations 139 | image = cv2.dilate(image, kernel, iterations=dilation) 140 | 141 | ## Any gray-clored pixel becomes white (smoothing) 142 | image = np.where(image > 0, 255, image) 143 | # Error-handler to prevent entire foreground domination 144 | height = image.shape[0] 145 | width = image.shape[1] 146 | totalpixels = height*width 147 | n_white_pix = np.sum(image == 255) 148 | 149 | if n_white_pix == totalpixels: 150 | print("ERROR: foreground has been entirely expanded") 151 | sys.exit() 152 | return image 153 | 154 | def trimap(image, name, size, number, DEFG=None, num_iter=0): 155 | """ 156 | This function creates a trimap based on simple dilation algorithm 157 | Inputs [4]: a binary image (black & white only), name of the image, dilation pixels 158 | the last argument is optional; i.e., how many iterations will the image get eroded 159 | Output : a trimap 160 | """ 161 | checkImage(image) 162 | 163 | row = image.shape[0] 164 | col = image.shape[1] 165 | pixels = 2*size + 1 ## Double and plus 1 to have an odd-sized kernel 166 | kernel = np.ones((pixels,pixels),np.uint8) ## How many pixel extension do I get 167 | if DEFG==None: 168 | pass 169 | elif (DEFG == Dilation): 170 | expand = Dilation(image) 171 | image = expand.scaling(image, num_iter) 172 | elif (DEFG == Erosion): 173 | shrink = Erosion(image) 174 | image = shrink.scaling(image, num_iter) 175 | else: 176 | printf("ERROR: Unspecified foreground dilation or erosion method") 177 | sys.exit() 178 | 179 | dilation = cv2.dilate(image, kernel, iterations = 1) 180 | 181 | dilation = np.where(dilation == 255, 127, dilation)## WHITE to GRAY 182 | remake = np.where(dilation != 127, 0, dilation) ## Smoothing 183 | remake = np.where(image > 127, 200, dilation) ## mark the tumor inside GRAY 184 | 185 | remake = np.where(remake < 127, 0, remake) ## Embelishment 186 | remake = np.where(remake > 200, 0, remake) ## Embelishment 187 | remake = np.where(remake == 200, 255, remake) ## GRAY to WHITE 188 | 189 | ############################################# 190 | # Ensures only three pixel values available # 191 | # TODO: Optimization with Cython # 192 | ############################################# 193 | for i in range(0,row): 194 | for j in range (0,col): 195 | if (remake[i,j] != 0 and remake[i,j] != 255): 196 | remake[i,j] = 127 197 | 198 | path = "./images/results/" ## Change the directory 199 | new_name = '{}px_'.format(size) + name + '_{}.png'.format(number) 200 | cv2.imwrite(os.path.join(path , new_name) , remake) 201 | 202 | ############################################# 203 | ### TESTING SECTION ### 204 | ############################################# 205 | if __name__ == '__main__': 206 | path = "./images/test_images/test_image_9.png" 207 | image = extractImage(path) 208 | size = 20 209 | number = path[-5] 210 | title = "test_image" 211 | # trimap(image, title, size, number, DEFG=None) 212 | trimap(image, title, size, number, DEFG=None) 213 | -------------------------------------------------------------------------------- /trimap_module.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import cv2, os, sys 3 | import numpy as np 4 | 5 | def extractImage(path): 6 | # error handller if the intended path is not found 7 | image = cv2.imread(path, cv2.IMREAD_GRAYSCALE) 8 | return image 9 | 10 | def checkImage(image): 11 | """ 12 | Args: 13 | image: input image to be checked 14 | Returns: 15 | binary image 16 | Raises: 17 | RGB image, grayscale image, all-black, and all-white image 18 | 19 | """ 20 | if len(image.shape) > 2: 21 | print("ERROR: non-binary image (RGB)"); sys.exit(); 22 | 23 | smallest = image.min(axis=0).min(axis=0) # lowest pixel value: 0 (black) 24 | largest = image.max(axis=0).max(axis=0) # highest pixel value: 1 (white) 25 | 26 | if (smallest == 0 and largest == 0): 27 | print("ERROR: non-binary image (all black)"); sys.exit() 28 | elif (smallest == 255 and largest == 255): 29 | print("ERROR: non-binary image (all white)"); sys.exit() 30 | elif (smallest > 0 or largest < 255 ): 31 | print("ERROR: non-binary image (grayscale)"); sys.exit() 32 | else: 33 | return True 34 | 35 | class Toolbox: 36 | def __init__(self, image): 37 | self.image = image 38 | 39 | @property 40 | def printImage(self): 41 | """ 42 | Print image into a file for checking purpose 43 | unitTest = Toolbox(image); 44 | unitTest.printImage(image); 45 | """ 46 | f = open("image_results.dat", "w+") 47 | for i in range(0, self.image.shape[0]): 48 | for j in range(0, self.image.shape[1]): 49 | f.write("%d " %self.image[i,j]) 50 | f.write("\n") 51 | f.close() 52 | 53 | @property 54 | def displayImage(self): 55 | """ 56 | Display the image on a window 57 | Press any key to exit 58 | """ 59 | cv2.imshow('Displayed Image', self.image) 60 | cv2.waitKey(0) 61 | cv2.destroyAllWindows() 62 | 63 | def saveImage(self, title, extension): 64 | """ 65 | Save as a specific image format (bmp, png, or jpeg) 66 | """ 67 | cv2.imwrite("{}.{}".format(title,extension), self.image) 68 | 69 | def morph_open(self, image, kernel): 70 | """ 71 | Remove all white noises or speckles outside images 72 | Need to tune the kernel size 73 | Instruction: 74 | unit01 = Toolbox(image); 75 | kernel = np.ones( (9,9), np.uint8 ); 76 | morph = unit01.morph_open(input_image, kernel); 77 | """ 78 | bin_open = cv2.morphologyEx(self.image, cv2.MORPH_OPEN, kernel) 79 | return bin_open 80 | 81 | def morph_close(self, image, kernel): 82 | """ 83 | Remove all black noises or speckles inside images 84 | Need to tune the kernel size 85 | Instruction: 86 | unit01 = Toolbox(image); 87 | kernel = np.ones( (11,11)_, np.uint8 ); 88 | morph = unit01.morph_close(input_image, kernel); 89 | """ 90 | bin_close = cv2.morphologyEx(self.image, cv2.MORPH_CLOSE, kernel) 91 | return bin_close 92 | 93 | 94 | def trimap(image, name, size, number, erosion=False): 95 | """ 96 | This function creates a trimap based on simple dilation algorithm 97 | Inputs [4]: a binary image (black & white only), name of the image, dilation pixels 98 | the last argument is optional; i.e., how many iterations will the image get eroded 99 | Output : a trimap 100 | """ 101 | checkImage(image) 102 | row = image.shape[0] 103 | col = image.shape[1] 104 | pixels = 2*size + 1 ## Double and plus 1 to have an odd-sized kernel 105 | kernel = np.ones((pixels,pixels),np.uint8) ## Pixel of extension I get 106 | 107 | if erosion is not False: 108 | erosion = int(erosion) 109 | erosion_kernel = np.ones((3,3), np.uint8) ## Design an odd-sized erosion kernel 110 | image = cv2.erode(image, erosion_kernel, iterations=erosion) ## How many erosion do you expect 111 | image = np.where(image > 0, 255, image) ## Any gray-clored pixel becomes white (smoothing) 112 | # Error-handler to prevent entire foreground annihilation 113 | if cv2.countNonZero(image) == 0: 114 | print("ERROR: foreground has been entirely eroded") 115 | sys.exit() 116 | 117 | dilation = cv2.dilate(image, kernel, iterations = 1) 118 | 119 | dilation = np.where(dilation == 255, 127, dilation) ## WHITE to GRAY 120 | remake = np.where(dilation != 127, 0, dilation) ## Smoothing 121 | remake = np.where(image > 127, 200, dilation) ## mark the tumor inside GRAY 122 | 123 | remake = np.where(remake < 127, 0, remake) ## Embelishment 124 | remake = np.where(remake > 200, 0, remake) ## Embelishment 125 | remake = np.where(remake == 200, 255, remake) ## GRAY to WHITE 126 | 127 | ############################################# 128 | # Ensures only three pixel values available # 129 | # TODO: Optimization with Cython # 130 | ############################################# 131 | for i in range(0,row): 132 | for j in range (0,col): 133 | if (remake[i,j] != 0 and remake[i,j] != 255): 134 | remake[i,j] = 127 135 | 136 | path = "./images/results/" ## Change the directory 137 | new_name = '{}px_'.format(size) + name + '_{}.png'.format(number) 138 | cv2.imwrite(os.path.join(path, new_name) , remake) 139 | 140 | 141 | ############################################# 142 | ### TESTING SECTION ### 143 | ############################################# 144 | if __name__ == '__main__': 145 | path = "./images/test_images/test_image_11.png" 146 | image = extractImage(path) 147 | 148 | size = 10 149 | number = path[-5] 150 | title = "test_image" 151 | 152 | unit01 = Toolbox(image); 153 | kernel1 = np.ones( (11,11), np.uint8 ) 154 | unit01.displayImage 155 | 156 | opening = unit01.morph_close(image,kernel1) 157 | trimap(opening, title, size, number, erosion=False) 158 | unit02 = Toolbox(opening) 159 | unit02.displayImage 160 | 161 | ######################################################## 162 | ## Default instruction (no binary opening or closing ## 163 | ## trimap(image, title, size, number, erosion=False); ## 164 | ######################################################## 165 | --------------------------------------------------------------------------------