├── .devcontainer └── devcontainer.json ├── .github ├── gradio_gui.png ├── hawps.jpg ├── line_1.webm ├── line_2.webm ├── lsdnets.jpg ├── lsds.jpg ├── origs.jpg ├── table1.png ├── tinys.jpg └── visual_comp_2.png ├── .gitignore ├── LICENSE ├── README.md ├── devops ├── Dockerfile ├── build_cpp.sh ├── build_image.sh ├── detect_lines.sh ├── launch_web_vis.sh └── requirements.txt ├── line_extracter ├── CMakeLists.txt ├── build_project.sh ├── cmake-build-release │ └── Line_extracter ├── compute_eigen_coords.cpp ├── compute_eigen_coords.h ├── img_processor.cpp ├── img_processor.h ├── kde.cpp ├── kde.h ├── lsd_methods.cpp ├── lsd_methods.h ├── main.cpp ├── neural_network.cpp ├── neural_network.h ├── region_growing.cpp ├── region_growing.h ├── region_splitter.cpp ├── region_splitter.h ├── roi_extraction.cpp ├── roi_extraction.h ├── segment_extractor.cpp ├── segment_extractor.h ├── speed_test_results ├── to_original_scale.cpp └── to_original_scale.h ├── lsd ├── __init__.py ├── detect_lines.py └── models_onnx │ └── model.onnx ├── visualization ├── context.py ├── display_gradio.py ├── draw_pred.py └── test_images │ ├── 00031810.jpg │ ├── 00037254.jpg │ └── 00055631.jpg └── wireframe_tiny ├── images ├── 112.jpg ├── 114.jpg ├── 129.jpg ├── 35.jpg ├── 40.jpg ├── 48.jpg ├── 49.jpg ├── 51.jpg ├── 54.jpg ├── 55.jpg ├── 63.jpg ├── 67.jpg ├── 71.jpg ├── 75.jpg ├── 77.jpg ├── 84.jpg ├── 89.jpg ├── 93.jpg ├── 95.jpg └── 97.jpg └── markup ├── 112.jpg.json ├── 114.jpg.json ├── 129.jpg.json ├── 35.jpg.json ├── 40.jpg.json ├── 48.jpg.json ├── 49.jpg.json ├── 51.jpg.json ├── 54.jpg.json ├── 55.jpg.json ├── 63.jpg.json ├── 67.jpg.json ├── 71.jpg.json ├── 75.jpg.json ├── 77.jpg.json ├── 84.jpg.json ├── 89.jpg.json ├── 93.jpg.json ├── 95.jpg.json └── 97.jpg.json /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.231.3/containers/python-3 3 | { 4 | "image": "lsdnet", 5 | 6 | // Set *default* container specific settings.json values on container create. 7 | "settings": { 8 | "python.defaultInterpreterPath": "/usr/local/bin/python", 9 | "python.linting.enabled": true, 10 | "python.linting.pylintEnabled": true, 11 | "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", 12 | "python.formatting.blackPath": "/usr/local/py-utils/bin/black", 13 | "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", 14 | "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", 15 | "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", 16 | "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", 17 | "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", 18 | "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", 19 | "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" 20 | }, 21 | 22 | // Add the IDs of extensions you want installed when the container is created. 23 | "extensions": [ 24 | "ms-python.python", 25 | "ms-python.vscode-pylance" 26 | ], 27 | } 28 | -------------------------------------------------------------------------------- /.github/gradio_gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/gradio_gui.png -------------------------------------------------------------------------------- /.github/hawps.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/hawps.jpg -------------------------------------------------------------------------------- /.github/line_1.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/line_1.webm -------------------------------------------------------------------------------- /.github/line_2.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/line_2.webm -------------------------------------------------------------------------------- /.github/lsdnets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/lsdnets.jpg -------------------------------------------------------------------------------- /.github/lsds.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/lsds.jpg -------------------------------------------------------------------------------- /.github/origs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/origs.jpg -------------------------------------------------------------------------------- /.github/table1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/table1.png -------------------------------------------------------------------------------- /.github/tinys.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/tinys.jpg -------------------------------------------------------------------------------- /.github/visual_comp_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/.github/visual_comp_2.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Project exclude paths 2 | 3 | predictions 4 | videos 5 | line_videos 6 | .vscode 7 | 8 | # Byte-compiled / optimized / DLL files 9 | __pycache__/ 10 | *.py[cod] 11 | *$py.class 12 | 13 | # Distribution / packaging 14 | .Python 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | parts/ 22 | sdist/ 23 | var/ 24 | wheels/ 25 | share/python-wheels/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | MANIFEST 30 | 31 | # PyInstaller 32 | # Usually these files are written by a python script from a template 33 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 34 | *.manifest 35 | *.spec 36 | 37 | # Installer logs 38 | pip-log.txt 39 | pip-delete-this-directory.txt 40 | 41 | # Unit test / coverage reports 42 | htmlcov/ 43 | .tox/ 44 | .nox/ 45 | .coverage 46 | .coverage.* 47 | .cache 48 | nosetests.xml 49 | coverage.xml 50 | *.cover 51 | *.py,cover 52 | .hypothesis/ 53 | .pytest_cache/ 54 | cover/ 55 | 56 | # Translations 57 | *.mo 58 | *.pot 59 | 60 | # Django stuff: 61 | *.log 62 | local_settings.py 63 | db.sqlite3 64 | db.sqlite3-journal 65 | 66 | # Flask stuff: 67 | instance/ 68 | .webassets-cache 69 | 70 | # Scrapy stuff: 71 | .scrapy 72 | 73 | # Sphinx documentation 74 | docs/_build/ 75 | 76 | # PyBuilder 77 | .pybuilder/ 78 | target/ 79 | 80 | # Jupyter Notebook 81 | .ipynb_checkpoints 82 | 83 | # IPython 84 | profile_default/ 85 | ipython_config.py 86 | 87 | # pyenv 88 | # For a library or package, you might want to ignore these files since the code is 89 | # intended to run in multiple environments; otherwise, check them in: 90 | # .python-version 91 | 92 | # pipenv 93 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 94 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 95 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 96 | # install all needed dependencies. 97 | #Pipfile.lock 98 | 99 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 100 | __pypackages__/ 101 | 102 | # Celery stuff 103 | celerybeat-schedule 104 | celerybeat.pid 105 | 106 | # SageMath parsed files 107 | *.sage.py 108 | 109 | # Environments 110 | .env 111 | .venv 112 | env/ 113 | venv/ 114 | ENV/ 115 | env.bak/ 116 | venv.bak/ 117 | 118 | # Spyder project settings 119 | .spyderproject 120 | .spyproject 121 | 122 | # Rope project settings 123 | .ropeproject 124 | 125 | # mkdocs documentation 126 | /site 127 | 128 | # mypy 129 | .mypy_cache/ 130 | .dmypy.json 131 | dmypy.json 132 | 133 | # Pyre type checker 134 | .pyre/ 135 | 136 | # pytype static type analyzer 137 | .pytype/ 138 | 139 | # Cython debug symbols 140 | cython_debug/ 141 | .vscode/settings.json 142 | 143 | 144 | line_extracter/cmake-build-release/CMakeFiles 145 | line_extracter/cmake-build-release/cmake_install.cmake 146 | line_extracter/cmake-build-release/CMakeCache.txt 147 | line_extracter/cmake-build-release/Makefile 148 | images_to_test 149 | sandbox/intermediate_predictions 150 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, iitpvisionlab 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LSDNet: Trainable Modification of LSD Algorithm for Real-Time Line Segment Detection 2 | Official implementation of "LSDNet: Trainable Modification of LSD Algorithm for Real-Time Line Segment Detection." by Teplyakov, Lev, Leonid Erlygin, and Evgeny Shvets. IEEE Access 10 (2022): 45256-45265. 3 | 4 | links to the paper: [IEEE Access](https://ieeexplore.ieee.org/abstract/document/9761231), [arXiv.org](https://arxiv.org/abs/2209.04642) 5 | 6 | ## Quantitative Results 7 | 8 | 9 | 10 | 11 | ## Qualitative Results 12 | Video demo 13 | ![](.github/line_1.webm) 14 | 15 | Images from Wireframe dataset of varying number of salient line segments 16 | 17 | 18 | 19 | LSD detector 20 | 21 | 22 | 23 | HAWP detector 24 | 25 | 26 | 27 | M-LSD-tidy detector 28 | 29 | 30 | 31 | LSDNet, the proposed detector 32 | 33 | 34 | 35 | 36 | ## Setting up LSDNet Project 37 | WARNING: all the scripts run in docker container without GPU support. 38 | We preferred plug-and-play demo with low FPS to top performance with hardcore NVIDIA-docker installation. 39 | 40 | ### Installation 41 | ```bash 42 | cd devops 43 | sh build_image.sh 44 | ``` 45 | it takes about 10 min, it will download all the requirements and compile OpenCV the way we need it. 46 | 47 | ### Launch Interactive Demo 48 | 49 | The Interactive Demo allows you to play with LSDNet on single images. 50 | 51 | To launch the demo server (based on [Gradio](https://gradio.app/)) run 52 | ```bash 53 | cd devops 54 | sh launch_web_vis.sh 55 | ``` 56 | This commad will launch a web server and print its address. The interface should look like this. 57 | 58 | 59 | 60 | ### Running on Your Images 61 | To make predictions on your images, specify in `devops/detect_lines.sh` the following variables: 62 | - `input_path` - path to an images folder or a single image (images must be `png` or `jpg`) 63 | - `out_path` - path where predicted segments will be saved in `.txt` format (`x1`,`y1`, `x2`,`y2`,`conf`) - the coordinates of segments' endpoints and segment confidence 64 | 65 | As a container mounts to the repo's root directory, paths above must be: 66 | - relative to `lsd/detect_lines.py` file 67 | - inside the repo's directory 68 | 69 | Then make predictions on your images with 70 | ```bash 71 | cd devops 72 | sh detect_lines.sh 73 | ``` 74 | -------------------------------------------------------------------------------- /devops/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nvidia/cuda:11.3.0-cudnn8-devel-ubuntu20.04 2 | 3 | # install system 4 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --fix-missing -y \ 5 | build-essential \ 6 | libatlas-base-dev \ 7 | libavcodec-dev \ 8 | libavformat-dev \ 9 | libavdevice-dev \ 10 | libfontconfig1 \ 11 | libgtk-3-dev \ 12 | libjpeg-dev \ 13 | libpng-dev \ 14 | libsm6 \ 15 | libswscale-dev \ 16 | libtiff-dev \ 17 | libv4l-dev \ 18 | libx264-dev \ 19 | libxext6 \ 20 | libxrender1 \ 21 | libxvidcore-dev \ 22 | yasm \ 23 | python3-dev \ 24 | locales \ 25 | sudo \ 26 | ninja-build \ 27 | ffmpeg \ 28 | wget \ 29 | unzip \ 30 | python3-pip \ 31 | && \ 32 | rm -rf /var/lib/apt/lists/* \ 33 | && \ 34 | locale-gen "en_US.UTF-8" 35 | 36 | # cmake 37 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.19.7/cmake-3.19.7-Linux-x86_64.sh && \ 38 | sh cmake-3.19.7-Linux-x86_64.sh --skip-license --prefix=/usr/local 39 | 40 | # install opencv 41 | ARG opencv_ver=4.5.2 42 | RUN wget -O opencv-${opencv_ver}.zip https://github.com/opencv/opencv/archive/${opencv_ver}.zip && \ 43 | wget -O opencv_contrib-${opencv_ver}.zip https://github.com/opencv/opencv_contrib/archive/${opencv_ver}.zip && \ 44 | unzip opencv-${opencv_ver}.zip && \ 45 | unzip opencv_contrib-${opencv_ver}.zip && \ 46 | mkdir opencv-${opencv_ver}/build && cd opencv-${opencv_ver}/build && \ 47 | cmake -D CMAKE_BUILD_TYPE=RELEASE \ 48 | -D CMAKE_INSTALL_PREFIX=/usr/local \ 49 | -D INSTALL_PYTHON_EXAMPLES=ON \ 50 | -D INSTALL_C_EXAMPLES=OFF \ 51 | -D OPENCV_ENABLE_NONFREE=ON \ 52 | -D WITH_OPENCL=OFF \ 53 | -D WITH_OPENJPEG=OFF \ 54 | -D WITH_JASPER=OFF \ 55 | -D WITH_OPENEXR=OFF \ 56 | -D WITH_V4L=OFF \ 57 | -D WITH_FFMPEG=OFF \ 58 | -D WITH_GSTREAMER=OFF \ 59 | -D BUILD_JAVA=OFF \ 60 | -D WITH_CUDA=OFF \ 61 | -D BUILD_TESTS=OFF \ 62 | -D WITH_CUDNN=OFF \ 63 | -D OPENCV_DNN_CUDA=OFF \ 64 | -D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib-${opencv_ver}/modules \ 65 | -D HAVE_opencv_python3=ON \ 66 | -D BUILD_EXAMPLES=OFF .. && \ 67 | make install -j12 && \ 68 | ldconfig && \ 69 | rm -rf opencv-${opencv_ver}.zip opencv_contrib-${opencv_ver}.zip \ 70 | opencv-${opencv_ver} opencv_contrib-${opencv_ver} 71 | 72 | # python 73 | RUN ln -s /usr/bin/python3 /usr/local/bin/python 74 | # RUN python -m pip --upgrade pip --no-cache-dir 75 | COPY requirements.txt . 76 | RUN pip3 install -r requirements.txt --no-cache-dir 77 | -------------------------------------------------------------------------------- /devops/build_cpp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker run\ 4 | --rm \ 5 | -v "$(realpath ..)":/home/devel/lsdnet\ 6 | --runtime nvidia\ 7 | --workdir /home/devel/lsdnet/line_extracter/\ 8 | -t lsdnet\ 9 | bash build_project.sh 10 | -------------------------------------------------------------------------------- /devops/build_image.sh: -------------------------------------------------------------------------------- 1 | docker build -f Dockerfile -t lsdnet . 2 | -------------------------------------------------------------------------------- /devops/detect_lines.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set these variables 4 | input_path="../visualization/test_images/" 5 | out_path="../predictions" 6 | 7 | model_path="models_onnx/model.onnx" 8 | docker run\ 9 | --rm \ 10 | -v "$(realpath ..)":/home/devel/lsdnet\ 11 | --workdir /home/devel/lsdnet/lsd/\ 12 | -t lsdnet\ 13 | python detect_lines.py $input_path $out_path $model_path 14 | -------------------------------------------------------------------------------- /devops/launch_web_vis.sh: -------------------------------------------------------------------------------- 1 | docker run\ 2 | --rm \ 3 | -v "$(realpath ..)":/home/devel/lsdnet\ 4 | --name lsdnet_web_vis\ 5 | --runtime nvidia\ 6 | --workdir /home/devel/lsdnet/visualization/\ 7 | -p 7860:7860\ 8 | -t lsdnet\ 9 | python display_gradio.py 10 | -------------------------------------------------------------------------------- /devops/requirements.txt: -------------------------------------------------------------------------------- 1 | opencv-python==3.4.8.29 2 | opencv-contrib-python==3.4.8.29 3 | Pillow==8.3.2 4 | scipy==1.4.1 5 | matplotlib==3.2.1 6 | tqdm==4.46.1 7 | cffi==1.14.0 8 | tensorboard==2.3.0 9 | pandas==1.0.4 10 | plotly==4.8.1 11 | scikit-image==0.17.2 12 | ftpretty==0.3.2 13 | scikit-learn==0.23.1 14 | mlflow==1.8.0 15 | tf2onnx==1.8.5 16 | onnxruntime==1.8.0 17 | gradio==1.7.0 18 | -------------------------------------------------------------------------------- /line_extracter/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.17) 2 | project(Line_extracter) 3 | 4 | set(CMAKE_CXX_STANDARD 14) 5 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") 6 | 7 | add_executable(Line_extracter main.cpp compute_eigen_coords.cpp compute_eigen_coords.h 8 | img_processor.cpp img_processor.h neural_network.cpp neural_network.h region_growing.cpp 9 | region_growing.h region_splitter.cpp region_splitter.h roi_extraction.cpp roi_extraction.h 10 | segment_extractor.cpp segment_extractor.h to_original_scale.cpp to_original_scale.h kde.h kde.cpp 11 | lsd_methods.cpp lsd_methods.h) 12 | find_package(OpenCV REQUIRED) 13 | include_directories(${OpenCV_INCLUDE_DIRS}) 14 | set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs) 15 | target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) -------------------------------------------------------------------------------- /line_extracter/build_project.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cmake -Bcmake-build-release -H. -DCMAKE_BUILD_TYPE=Release 4 | cd cmake-build-release 5 | make -------------------------------------------------------------------------------- /line_extracter/cmake-build-release/Line_extracter: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/line_extracter/cmake-build-release/Line_extracter -------------------------------------------------------------------------------- /line_extracter/compute_eigen_coords.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "compute_eigen_coords.h" 6 | 7 | compute_eigen_coords::compute_eigen_coords() = default; 8 | 9 | std::vector> compute_eigen_coords::apply_trans(const std::vector> &transformation, 10 | const std::vector> ®ion, 11 | const cv::Mat &cls_map) { 12 | std::vector> new_coords(2, std::vector(region[0].size())); 13 | float cos_alpha = transformation[0][0]; 14 | float sin_alpha = transformation[1][0]; 15 | for (int i = 0; i < region[0].size(); ++i) { 16 | float x = (region[0][i] - x_mean); 17 | float y = (region[1][i] - y_mean); 18 | new_coords[0][i] = cos_alpha * x + sin_alpha * y; 19 | new_coords[1][i] = -sin_alpha * x + cos_alpha * y; 20 | // float weight; 21 | // if (cls_map.data!=NULL) { 22 | // weight = cls_map.at(region[0][i], region[1][i]); 23 | // } 24 | } 25 | return new_coords; 26 | } 27 | 28 | std::vector> compute_eigen_coords::apply_inverse_trans( 29 | const std::vector> &transformation, 30 | const std::vector> &points_new) const { 31 | std::vector> points(2, std::vector(points_new[0].size())); 32 | float cos_alpha = transformation[0][0]; 33 | float sin_alpha = transformation[1][0]; 34 | for (int i = 0; i < points_new[0].size(); ++i) { 35 | float x = points_new[0][i]; 36 | float y = points_new[1][i]; 37 | points[0][i] = cos_alpha * x - sin_alpha * y + x_mean; 38 | points[1][i] = sin_alpha * x + cos_alpha * y + y_mean; 39 | 40 | points[0][i] = ( 0 < points[0][i]) ? points[0][i] : 0; 41 | points[1][i] = ( 0 < points[1][i]) ? points[1][i] : 0; 42 | } 43 | return points; 44 | } 45 | 46 | std::vector> compute_eigen_coords::compute_transformation_matrix( 47 | const std::vector> ®ion, const cv::Mat &cls_map) { 48 | 49 | std::vector x = region[0]; 50 | std::vector y = region[1]; 51 | 52 | float mxx = 0; 53 | float myy = 0; 54 | float mxy = 0; 55 | 56 | int n = x.size(); 57 | 58 | bool x_all_eq = true; 59 | bool y_all_eq = true; 60 | if (cls_map.data == NULL) { 61 | exit(1); 62 | // x_mean = std::accumulate(x.begin(), x.end(), 0.0) / n; 63 | // y_mean = std::accumulate(y.begin(), y.end(), 0.0) / n; 64 | // 65 | // 66 | // for (int i = 0; i < n; ++i) { 67 | // float x_i = x[i] - x_mean; 68 | // float y_i = y[i] - y_mean; 69 | // mxx += (x_i * x_i); 70 | // myy += (y_i * y_i); 71 | // mxy += (x_i * y_i); 72 | // mxx += (y_i * y_i); 73 | // myy += (x_i * x_i); 74 | // mxy += -(x_i * y_i); 75 | // } 76 | // mxx = mxx / n; 77 | // myy = myy / n; 78 | // mxy = mxy / n; 79 | 80 | } else { 81 | float S = 0; 82 | float curr_x_sum = 0; 83 | float curr_y_sum = 0; 84 | int x_first = x[0]; 85 | int y_first = y[0]; 86 | 87 | for (int i = 0; i < n; ++i) { 88 | if (x[i] != x_first) x_all_eq = false; 89 | if (y[i] != y_first) y_all_eq = false; 90 | 91 | float weight = cls_map.at(x[i], y[i]); 92 | curr_x_sum += (x[i] * weight); 93 | curr_y_sum += (y[i] * weight); 94 | S += weight; 95 | } 96 | x_mean = curr_x_sum / S; 97 | y_mean = curr_y_sum / S; 98 | 99 | for (int i = 0; i < n; ++i) { 100 | float weight = cls_map.at(x[i], y[i]); 101 | float x_i = x[i] - x_mean; 102 | float y_i = y[i] - y_mean; 103 | mxx += (x_i * x_i * weight); 104 | myy += (y_i * y_i * weight); 105 | mxy += (x_i * y_i * weight); 106 | // mxx += (y_i * y_i * weight); 107 | // myy += (x_i * x_i * weight); 108 | // mxy += -(x_i * y_i * weight); 109 | } 110 | mxx = mxx / S; 111 | myy = myy / S; 112 | mxy = mxy / S; 113 | } 114 | std::vector> A = { 115 | {0, 0}, 116 | {0, 0} 117 | }; 118 | if (not x_all_eq and not y_all_eq) { 119 | float M[2][2] = { 120 | {mxx, mxy}, 121 | {mxy, myy} 122 | }; 123 | float lamb = (M[1][1] + M[0][0] + sqrt(4 * M[0][1] * M[0][1] + (M[0][0] - M[1][1]) * (M[0][0] - M[1][1]))) / 2; 124 | float direction[2] = {M[0][1], (lamb - M[0][0])}; 125 | 126 | float f = (direction[0] >= 0) ? 1 : -1; 127 | float theta = acos(f * (direction[1]) / pow(pow(direction[1], 2) + pow(direction[0], 2), 0.5)); 128 | float alpha = M_PI / 2 - theta; 129 | 130 | float sin_alpha = std::sin(alpha); 131 | float cos_alpha = std::cos(alpha); 132 | 133 | A = { 134 | {cos_alpha, -sin_alpha}, 135 | {sin_alpha, cos_alpha} 136 | }; 137 | } else { 138 | float direction[2] = {0, 0}; 139 | if (x_all_eq){ 140 | A = { 141 | {1, 0}, 142 | {0, 1} 143 | }; 144 | }else { 145 | A = { 146 | {0, -1}, 147 | {1, 0} 148 | }; 149 | } 150 | 151 | 152 | 153 | 154 | 155 | } 156 | return A; 157 | } -------------------------------------------------------------------------------- /line_extracter/compute_eigen_coords.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_COMPUTE_EIGEN_COORDS_H 6 | #define LINE_EXTRACTER_COMPUTE_EIGEN_COORDS_H 7 | 8 | #include "opencv2/core/core.hpp" 9 | #include 10 | #include 11 | 12 | class compute_eigen_coords { 13 | public: 14 | compute_eigen_coords(); 15 | 16 | std::vector> 17 | compute_transformation_matrix(const std::vector> ®ion, const cv::Mat &cls_map = cv::Mat()); 18 | 19 | std::vector> 20 | apply_trans(const std::vector> &transformation, const std::vector> ®ion, 21 | const cv::Mat &cls_map = cv::Mat()); 22 | 23 | std::vector> 24 | apply_inverse_trans(const std::vector> &transformation, 25 | const std::vector> &points_new) const; 26 | private: 27 | 28 | float x_mean = 0; 29 | float y_mean = 0; 30 | }; 31 | 32 | 33 | #endif //LINE_EXTRACTER_COMPUTE_EIGEN_COORDS_H 34 | -------------------------------------------------------------------------------- /line_extracter/img_processor.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "img_processor.h" 6 | -------------------------------------------------------------------------------- /line_extracter/img_processor.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_IMG_PROCESSOR_H 6 | #define LINE_EXTRACTER_IMG_PROCESSOR_H 7 | 8 | 9 | class img_processor { 10 | 11 | }; 12 | 13 | 14 | #endif //LINE_EXTRACTER_IMG_PROCESSOR_H 15 | -------------------------------------------------------------------------------- /line_extracter/kde.cpp: -------------------------------------------------------------------------------- 1 | // Kernel density estimation by Tim Nugent (c) 2014 2 | // Based on Philipp K. Janert's Perl module: 3 | // http://search.cpan.org/~janert/Statistics-KernelEstimation-0.05 4 | // Multivariate stuff from here: 5 | // http://sfb649.wiwi.hu-berlin.de/fedc_homepage/xplore/ebooks/html/spm/spmhtmlnode18.html 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include "kde.h" 14 | 15 | void KDE::calc_bandwidth(){ 16 | 17 | for(curr_var = 0; curr_var < data_matrix.size(); curr_var++){ 18 | if(bandwidth_map[curr_var] == -1.0){ 19 | switch(bandwidth_opt_type){ 20 | case 2: 21 | optimal_bandwidth(); 22 | break; 23 | case 3: 24 | optimal_bandwidth_safe(); 25 | break; 26 | default: 27 | default_bandwidth(); 28 | break; 29 | } 30 | } 31 | } 32 | } 33 | 34 | void KDE::set_bandwidth_opt_type(int x){ 35 | 36 | if(kernel == 1){ 37 | bandwidth_opt_type = x; 38 | } 39 | } 40 | 41 | void KDE::set_kernel_type(int x){ 42 | 43 | kernel = x; 44 | if(kernel != 1){ 45 | extension = 0; 46 | bandwidth_opt_type = 1; 47 | } 48 | } 49 | 50 | double KDE::pdf(double x){ 51 | double d = 0.0; 52 | for(unsigned int i = 0; i < data_matrix[0].size(); i++){ 53 | double a = 1.0; 54 | double z = (x - data_matrix[0][i])/bandwidth; 55 | a *= exp(-0.5*z*z)/(bandwidth*sqrt( 2.0*M_PI)); 56 | d += a; 57 | } 58 | return(d/data_matrix[0].size()); 59 | } 60 | 61 | 62 | //double KDE::pdf(vector& data){ 63 | // 64 | // calc_bandwidth(); 65 | // double d = 0.0; 66 | // for(unsigned int i = 0; i < data_matrix[0].size(); i++){ 67 | // double a = 1.0; 68 | // for(curr_var = 0; curr_var < data_matrix.size(); curr_var++){ 69 | // switch(kernel){ 70 | // case 2: a *= box_pdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 71 | // case 3: a *= epanechnikov_pdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 72 | // default: a *= gauss_pdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 73 | // } 74 | // } 75 | // d += a; 76 | // } 77 | // return(d/count_map[0]); 78 | // 79 | //} 80 | 81 | double KDE::cdf(double x){ 82 | vector tmp; 83 | tmp.push_back(x); 84 | return(cdf(tmp)); 85 | } 86 | 87 | double KDE::cdf(double x, double y){ 88 | vector tmp; 89 | tmp.push_back(x); 90 | tmp.push_back(y); 91 | return(cdf(tmp)); 92 | } 93 | 94 | double KDE::cdf(vector& data){ 95 | 96 | calc_bandwidth(); 97 | double d = 0.0; 98 | for(unsigned int i = 0; i < data_matrix[0].size(); i++){ 99 | double a = 1.0; 100 | for(curr_var = 0; curr_var < data_matrix.size(); curr_var++){ 101 | switch(kernel){ 102 | case 2: a *= box_cdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 103 | case 3: a *= epanechnikov_cdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 104 | default: a *= gauss_cdf(data[curr_var],data_matrix[curr_var][i],bandwidth_map[curr_var]);break; 105 | } 106 | } 107 | d += a; 108 | } 109 | return(d/count_map[0]); 110 | 111 | } 112 | 113 | void KDE::default_bandwidth(){ 114 | 115 | // if(!count_map[curr_var]){ 116 | // std::cout << "No data!" << std::endl; 117 | // exit(1); 118 | // } 119 | // double x = sum_x_map[curr_var]/count_map[curr_var]; 120 | // double x2 = sum_x2_map[curr_var]/count_map[curr_var]; 121 | // double sigma = sqrt(x2 - (x*x)); 122 | // double b = sigma*(pow((3.0*count_map[curr_var]/4.0),(-1.0/5.0))); 123 | // 124 | // if(bandwidth_opt_type == 1) bandwidth_map[curr_var] = b; 125 | // default_bandwidth_map[curr_var] = b; 126 | 127 | if(bandwidth_opt_type == 1) bandwidth_map[curr_var] = 1; 128 | default_bandwidth_map[curr_var] = 1; 129 | } 130 | 131 | // Secant method 132 | void KDE::optimal_bandwidth(int maxiters, double eps){ 133 | 134 | if(!count_map[curr_var]){ 135 | std::cout << "No data!" << std::endl; 136 | exit(1); 137 | } 138 | default_bandwidth(); 139 | double x0 = default_bandwidth_map[curr_var]; 140 | double y0 = optimal_bandwidth_equation(x0,get_min(curr_var),get_max(curr_var),data_matrix[curr_var]); 141 | double x = 0.8*x0; 142 | double y = optimal_bandwidth_equation(x,get_min(curr_var),get_max(curr_var),data_matrix[curr_var]); 143 | int i = 0; 144 | 145 | while(i < maxiters){ 146 | x -= y*(x0-x)/(y0-y); 147 | y = optimal_bandwidth_equation(x,get_min(curr_var),get_max(curr_var),data_matrix[curr_var]); 148 | if(abs(y) < eps*y0){ 149 | break; 150 | } 151 | i++; 152 | } 153 | bandwidth_map[curr_var] = x; 154 | } 155 | 156 | double KDE::optimal_bandwidth_equation(double w, double min, double max, vector& data){ 157 | 158 | double alpha = 1.0/(2.0*sqrt(M_PI)); 159 | double sigma = 1.0; 160 | double n = count_map[curr_var]; 161 | double q = stiffness_integral(w,min,max,data); 162 | return w - pow(((n*q*pow(sigma,4))/alpha ),(-1.0/5.0)); 163 | } 164 | 165 | // Calculates the integral over the square of the curvature using 166 | // the trapezoidal rule. decreases step size by half until the relative 167 | // error in the last step is less eps. 168 | 169 | double KDE::stiffness_integral(double w, double mn, double mx, vector& data){ 170 | 171 | double eps = 1e-4; 172 | double n = 1; 173 | double dx = (mx-mn)/n; 174 | double curv_mx = curvature(mx,w,data); 175 | double curv_mn = curvature(mn,w,data); 176 | double yy = 0.5*((curv_mx*curv_mx)+(curv_mn*curv_mn))*dx; 177 | double maxn = (mx-mn)/sqrt(eps); 178 | 179 | maxn = maxn > 2048 ? 2048 : maxn; 180 | 181 | for(int n = 2; n <= maxn; n *= 2){ 182 | dx /= 2.0; 183 | double y = 0.0; 184 | for(int i = 1; i <= n-1; i +=2){ 185 | curv_mn = pow(curvature(mn + i*dx, w, data),2); 186 | y += curv_mn; 187 | } 188 | yy = 0.5*yy + y*dx; 189 | if(n > 8 && abs(y*dx-0.5*yy) < eps*yy){ 190 | break; 191 | } 192 | } 193 | return(yy); 194 | } 195 | 196 | // Bisection method 197 | void KDE::optimal_bandwidth_safe(double eps){ 198 | 199 | if(!count_map[curr_var]){ 200 | std::cout << "No data!" << std::endl; 201 | exit(1); 202 | } 203 | default_bandwidth(); 204 | double x0 = default_bandwidth_map[curr_var]/count_map[curr_var]; 205 | double x1 = 2*default_bandwidth_map[curr_var]; 206 | double y0 = optimal_bandwidth_equation(x0,min_map[curr_var],max_map[curr_var],data_matrix[curr_var]); 207 | double y1 = optimal_bandwidth_equation(x1,min_map[curr_var],max_map[curr_var],data_matrix[curr_var]); 208 | 209 | if(y0 * y1 >= 0){ 210 | // std::cerr << "Interval [ f(x0=$x0)=$y0 : f(x1=$x1)=$y1 ] does not bracket root." << std::endl; 211 | } 212 | 213 | double x = 0.0, y = 0.0; 214 | int i = 0; 215 | 216 | while(abs(x0 - x1) > eps*x1){ 217 | i += 1; 218 | x = (x0 + x1 )/2; 219 | y = optimal_bandwidth_equation(x,min_map[curr_var],max_map[curr_var],data_matrix[curr_var]); 220 | 221 | if(abs(y) < eps*y0){ 222 | break; 223 | } 224 | if(y * y0 < 0){ 225 | x1 = x; 226 | y1 = y; 227 | }else{ 228 | x0 = x; 229 | y0 = y; 230 | } 231 | } 232 | bandwidth_map[curr_var] = x; 233 | } 234 | 235 | double KDE::curvature(double x, double w, vector& data){ 236 | 237 | double y = 0.0; 238 | for(auto it = data.begin(); it != data.end(); it++){ 239 | y += gauss_curvature(x,*it,w); 240 | } 241 | return(y/count_map[curr_var]); 242 | 243 | } 244 | 245 | 246 | 247 | void KDE::add_data(vector& x){ 248 | data_matrix.push_back(x); 249 | 250 | // double sum_x0 = 0; 251 | // double sum_x20 = 0; 252 | // for (int i = 0; i tmp; 265 | // tmp.push_back(x[i]); 266 | // data_matrix.push_back(tmp); 267 | // sum_x_map[i] = x[i]; 268 | // sum_x2_map[i] = x[i]*x[i]; 269 | // count_map[i] = 1; 270 | // min_map[i] = x[i]; 271 | // max_map[i] = x[i]; 272 | // bandwidth_map[i] = -1.0; 273 | // } 274 | // }else{ 275 | // if(x.size() != data_matrix.size()){ 276 | // std::cout << "Number of variables doesn't match!" << std::endl; 277 | // }else{ 278 | // for(size_t i = 0; i < x.size(); i++){ 279 | // data_matrix[i].push_back(x[i]); 280 | // sum_x_map[i] += x[i]; 281 | // sum_x2_map[i] += x[i]*x[i]; 282 | // count_map[i]++; 283 | // min_map[i] = x[i] < min_map[i] ? x[i] : min_map[i]; 284 | // max_map[i] = x[i] > max_map[i] ? x[i] : max_map[i]; 285 | // bandwidth_map[i] = -1.0; 286 | // } 287 | // } 288 | // } 289 | } 290 | 291 | double KDE::gauss_cdf(double x, double m, double s){ 292 | 293 | // Abramowitz Stegun Normal Cumulative Distribution Function 294 | double z = abs(x - m)/s; 295 | double t = 1.0/(1.0 + 0.2316419*z); 296 | double y = t*( 0.319381530 + t*(-0.356563782 + t*(1.781477937 + t*(-1.821255978 + t*1.330274429 )))); 297 | if(x >= m){ 298 | return 1.0 - gauss_pdf(x,m,s)*y*s; 299 | }else{ 300 | return gauss_pdf(x,m,s)*y*s; 301 | } 302 | 303 | } 304 | 305 | inline double KDE::gauss_pdf(double x, double m, double s){ 306 | 307 | double z = (x - m)/s; 308 | return exp(-0.5*z*z)/(s*sqrt( 2.0*M_PI)); 309 | 310 | } 311 | 312 | double KDE::gauss_curvature(double x, double m, double s){ 313 | 314 | double z = (x - m)/s; 315 | return ((z*z) - 1.0)*gauss_pdf(x,m,s)/(s*s); 316 | 317 | } 318 | 319 | double KDE::box_pdf(double x, double m, double s){ 320 | 321 | if(x < m-0.5*s || x > m+0.5*s){ 322 | return (0.0); 323 | }else{ 324 | return (1.0/s); 325 | } 326 | } 327 | double KDE::box_cdf(double x, double m, double s){ 328 | 329 | if(x < m-0.5*s){ 330 | return (0.0); 331 | } 332 | if( x > m+0.5*s){ 333 | return 1.0; 334 | } 335 | return (x-m)/s + 0.5; 336 | 337 | } 338 | 339 | double KDE::epanechnikov_pdf(double x, double m, double s){ 340 | 341 | double z = (x-m)/s; 342 | if(fabs(z) > 1.0){ 343 | return (0.0); 344 | } 345 | return 0.75*(1.0-(z*z))/s; 346 | 347 | } 348 | 349 | double KDE::epanechnikov_cdf(double x, double m, double s){ 350 | 351 | double z = (x-m)/s; 352 | if(z < -1.0){ 353 | return (0.0); 354 | } 355 | if(z > 1.0){ 356 | return (1.0); 357 | } 358 | return 0.25*(2.0 + 3.0*z - (z*z*z)); 359 | } 360 | -------------------------------------------------------------------------------- /line_extracter/kde.h: -------------------------------------------------------------------------------- 1 | // Kernel density estimation by Tim Nugent (c) 2014 2 | 3 | #ifndef KDE_HPP 4 | #define KDE_HPP 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace std; 14 | 15 | class KDE{ 16 | 17 | public: 18 | KDE() : extension(3), bandwidth_opt_type(1), kernel(1) {}; 19 | ~KDE(){}; 20 | void add_data(double x); 21 | void add_data(double x, double y); 22 | void add_data(vector& x); 23 | void set_bandwidth_opt_type(int x); 24 | void set_kernel_type(int x); 25 | double get_min(int x){curr_var = x;default_bandwidth();return(min_map[x]-(extension*default_bandwidth_map[x]));}; 26 | double get_max(int x){curr_var = x;default_bandwidth();return(max_map[x]+(extension*default_bandwidth_map[x]));}; 27 | double pdf(double x); 28 | double pdf(double x, double y); 29 | double pdf(vector& data); 30 | double cdf(double x); 31 | double cdf(double x, double y); 32 | double cdf(vector& data); 33 | double get_bandwidth(int x){return(bandwidth_map[x]);}; 34 | int get_vars_count(){return(data_matrix.size());}; 35 | double bandwidth = 1; 36 | private: 37 | void calc_bandwidth(); 38 | void default_bandwidth(); 39 | void optimal_bandwidth(int maxiters = 25, double eps = 1e-03); 40 | void optimal_bandwidth_safe(double eps = 1e-03); 41 | double gauss_cdf(double x, double m, double s); 42 | static inline double gauss_pdf(double x, double m, double s); 43 | double gauss_curvature(double x, double m, double s); 44 | double box_pdf(double x, double m, double s); 45 | double box_cdf(double x, double m, double s); 46 | double epanechnikov_pdf(double x, double m, double s); 47 | double epanechnikov_cdf(double x, double m, double s); 48 | double optimal_bandwidth_equation(double w, double min, double max, vector& data); 49 | double stiffness_integral(double w, double min, double max, vector& data); 50 | double curvature(double x, double w, vector& data); 51 | 52 | map sum_x_map, sum_x2_map, count_map, min_map, max_map, default_bandwidth_map, bandwidth_map; 53 | vector> data_matrix; 54 | unsigned int extension; 55 | int bandwidth_opt_type, kernel; 56 | unsigned int curr_var; 57 | double sum_x = 0; 58 | double sum_x2 = 0; 59 | double min_x = INT32_MAX; 60 | double max_x = INT32_MIN; 61 | 62 | 63 | }; 64 | 65 | #endif -------------------------------------------------------------------------------- /line_extracter/lsd_methods.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 16.03.2021. 3 | // 4 | #include 5 | #include 6 | #include 7 | #ifndef LINE_EXTRACTER_LSD_METHODS_H 8 | #define LINE_EXTRACTER_LSD_METHODS_H 9 | 10 | void evaluation(std::vector &threshes, int data_set_size, const std::string &dataset_name, std::map &algorithm_params); 11 | double speed_test(int img_index, const std::string &dataset_name, int N, std::map &algorithm_params); 12 | void compute_and_draw_image(int img_index, float thresh, const std::string &dataset_name, std::map &algorithm_params); 13 | void draw_all_regions_of_img(int img_index); 14 | void predict_one_img_and_save(const std::string &cls_map_path, const std::string &angle_map_path, 15 | const std::string &out_path, std::map &algorithm_params, int img_original_height, int img_original_width); 16 | std::string type2str(int type); 17 | 18 | #endif // LINE_EXTRACTER_LSD_METHODS_H 19 | -------------------------------------------------------------------------------- /line_extracter/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "lsd_methods.h" 3 | #include "map" 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | std::map algorithm_params{{"global thresh", 0.4}, 11 | {"C", 2}, 12 | {"block size", 11}, 13 | {"tau", 0.05}, 14 | {"deviation thresh", 0.3}, 15 | {"min region size", 10}, 16 | {"use spliter", 1}, 17 | {"bandwidth", 1}, 18 | {"bins size", 15}, 19 | {"discrete size", 15}, 20 | {"order", 1}}; 21 | 22 | int main(int argc, char **argv) 23 | { 24 | 25 | if (argc != 6) 26 | { 27 | std::cout << "invalid arguments"; 28 | exit(1); 29 | } 30 | 31 | std::string cls_map_path = argv[1]; 32 | std::string angle_map_path = argv[2]; 33 | std::string out_path = argv[3]; 34 | int img_original_height = (int)atoi(argv[4]); 35 | int img_original_width = (int)atoi(argv[5]); 36 | 37 | predict_one_img_and_save(cls_map_path, angle_map_path, out_path, algorithm_params, img_original_height, img_original_width); 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /line_extracter/neural_network.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "neural_network.h" 6 | -------------------------------------------------------------------------------- /line_extracter/neural_network.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_NEURAL_NETWORK_H 6 | #define LINE_EXTRACTER_NEURAL_NETWORK_H 7 | 8 | 9 | class neural_network { 10 | 11 | }; 12 | 13 | 14 | #endif //LINE_EXTRACTER_NEURAL_NETWORK_H 15 | -------------------------------------------------------------------------------- /line_extracter/region_growing.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_REGION_GROWING_H 6 | #define LINE_EXTRACTER_REGION_GROWING_H 7 | 8 | #include "opencv2/core/core.hpp" 9 | #include 10 | #include "map" 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | class region_growing { 17 | public: 18 | region_growing(int r, float tau, float deviation_thresh, int min_region_size); 19 | 20 | std::vector>> 21 | get_regions(const cv::Mat &cls_map, const cv::Mat &angle_map, const cv::Mat &cls_bin); 22 | 23 | void 24 | get_regions_one_thread(const cv::Mat &cls_map, const cv::Mat &angle_map, const cv::Mat &cls_bin, 25 | std::vector>> ®ions, 26 | std::vector> ®ions_mean_angle, std::vector> &U, 27 | int shift, int top_corner_x, int top_corner_y, int bot_corner_x, int bot_corner_y); 28 | 29 | private: 30 | // static void 31 | // compute_merge_map(const std::map &mapping, std::map> &merge_map_target, 32 | // std::map> &merge_map_origin); 33 | // 34 | // static void 35 | // compute_merge_map_for_second(std::map &third_to_first, std::map> &merge_map_2, 36 | // const std::map &first_to_second); 37 | // 38 | // void find_mappings(int i, std::map &mapping, int length, const std::vector> &line, 39 | // const std::vector> ®ions_first_mean_angle, 40 | // const std::vector> ®ions_second_mean_angle, 41 | // bool first_index) const; 42 | void merge_connectivity_components( 43 | std::map>> &final_merge, 44 | const std::map>> &comp_with_prev, 45 | const std::map>> &comp_with_post, 46 | const std::map &map_to_prev_prev, const std::map &map_to_post_post, 47 | std::set &used_componets_prev, std::set &used_componets_post); 48 | 49 | void find_connectivity_components(std::map>> &components, 50 | const std::map> &first_to_second_map, 51 | const std::map> &second_to_first_map, 52 | std::map &first_to_Comp, 53 | std::map &second_to_Comp); 54 | 55 | void 56 | find_graph(int i, std::map> &mapping, int length, const std::vector> &line, 57 | const std::vector> ®ions_first_mean_angle, 58 | const std::vector> ®ions_second_mean_angle, 59 | bool first_index) const; 60 | 61 | void merge_regions(std::vector>> ®ions, 62 | std::vector>> ®ions_curr, 63 | const std::vector>> ®ions_prev, 64 | const std::vector>> ®ions_post, 65 | std::vector &used_prev, 66 | std::vector &used_curr, 67 | std::vector &used_post, 68 | const std::map>> &final_merge); 69 | 70 | static void 71 | fill_horiz_and_vert(std::vector>> const ®ions, std::vector> &vert, 72 | std::vector> &horiz, int length_row, 73 | int length_col, int x_shift, int y_shift, int horiz_idx, 74 | int vert_idx); 75 | 76 | std::pair>, std::pair> 77 | region_grouping(int root[2], const cv::Mat &cls_map, const cv::Mat &angle_map, const cv::Mat &cls_bin, 78 | std::vector> &U, int top_corner_x, int top_corner_y, int bot_corner_x, 79 | int bot_corner_y) const; 80 | 81 | int get_r_neighborhood(int x, int y, int **neighborhood, const cv::Mat &cls_bin, 82 | std::vector> &U, int top_corner_x, int top_corner_y, int bot_corner_x, 83 | int bot_corner_y) const; 84 | 85 | int r; 86 | float tau; 87 | float deviation_thresh; 88 | int min_region_size; 89 | }; 90 | 91 | #endif //LINE_EXTRACTER_REGION_GROWING_H -------------------------------------------------------------------------------- /line_extracter/region_splitter.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | 6 | #include 7 | #include "region_splitter.h" 8 | 9 | region_splitter::region_splitter(float bandwidth, 10 | int bins_size, 11 | int discrete_size, 12 | int order) : bandwidth(bandwidth), bins_size(bins_size), discrete_size(discrete_size), 13 | order(order) { 14 | 15 | } 16 | 17 | std::pair>, std::vector>>> 18 | region_splitter::get_splitted_regions_with_conf_and_weighted_mean(const std::vector> ®ion, 19 | const std::vector> &new_coords, 20 | const cv::Mat &cls_map) const { 21 | /* Here we return list of splitted regions (std::vector> 2 x region_len). 22 | * first in pair contains confidence and region_mean for each region in the list 23 | * it has shape : 2 x number_of_regions 24 | */ 25 | 26 | std::vector y(new_coords[1].size()); 27 | std::vector idx(y.size()); 28 | iota(idx.begin(), idx.end(), 0); 29 | 30 | stable_sort(idx.begin(), idx.end(), 31 | [&new_coords](size_t i1, size_t i2) { return new_coords[1][i1] < new_coords[1][i2]; }); 32 | for (int i = 0; i < y.size(); ++i) { 33 | y[i] = static_cast(new_coords[1][idx[i]]); 34 | } 35 | 36 | 37 | double min_y = y[0]; 38 | double max_y = y[y.size() - 1]; 39 | std::vector minimums; 40 | 41 | if (max_y - min_y > 0.000001) { 42 | double y_increment = (max_y - min_y) / bins_size; 43 | 44 | std::vector discret_count(discrete_size + 1); 45 | double y_increment_discret = (max_y - min_y) / discrete_size + 0.000000000001; 46 | double r = min_y + y_increment_discret; 47 | 48 | int j = 0; 49 | for (int i = 0; i < y.size(); ++i) { 50 | if (y[i] > r) { 51 | r += y_increment_discret; 52 | j++; 53 | } 54 | discret_count[j]++; 55 | } 56 | 57 | 58 | std::vector hist_y; 59 | if (y_increment == 0) { 60 | exit(2); 61 | } 62 | 63 | double sum = 0; 64 | for (double point = min_y; point <= max_y; point += y_increment) { 65 | double d = 0.0; 66 | 67 | for (int i = 0; i < discret_count.size(); ++i) { 68 | 69 | double z = (point - (min_y + i * y_increment_discret + y_increment_discret / 2)) / bandwidth; 70 | 71 | d += (exp(-0.5 * z * z) / (sqrt(2.0 * M_PI))) * discret_count[i]; 72 | } 73 | d = d / (y.size() * bandwidth); 74 | sum += d; 75 | hist_y.push_back(d); 76 | } 77 | for (int i = 0; i < hist_y.size(); ++i) { 78 | hist_y[i] /= sum; 79 | } 80 | 81 | 82 | 83 | //std::vector minimums_i; 84 | 85 | double tol = 0; 86 | for (int i = order; i < hist_y.size() - order; ++i) { 87 | bool is_i_min = true; 88 | double i_value = hist_y[i]; 89 | for (j = -order; j <= order; ++j) { 90 | if (j == 0)continue; 91 | if (i_value > hist_y[i + j] - tol) { 92 | is_i_min = false; 93 | } 94 | } 95 | if (is_i_min) { 96 | minimums.push_back(min_y + y_increment * i + y_increment / 2); 97 | //minimums_i.push_back(i); 98 | } 99 | } 100 | } 101 | 102 | 103 | // int scale = 10000; 104 | // double y_hist_max = -1; 105 | // for (int i = 0; i y_hist_max)y_hist_max = hist_y[i]; 107 | // } 108 | // cv::Mat plot(400, hist_y.size() * 20, CV_8UC1, cv::Scalar(0)); 109 | // for (int i = 0; i < hist_y.size(); ++i) { 110 | // std::cout<(int((1-hist_y[i])*scale) - 9200, i * 20) = 255; 112 | // } 113 | // for (int i = 0; i < minimums_i.size(); ++i) { 114 | // plot.at(3 * scale / 4, minimums_i[i] * 20) = 255; 115 | // } 116 | // namedWindow("F", cv::WINDOW_AUTOSIZE); 117 | // imshow("F", plot); 118 | // cv::waitKey(0); 119 | // 120 | // exit(0); 121 | 122 | // if (!minimums.empty()) { 123 | // int x = 1; 124 | // } 125 | 126 | std::vector>> splitted_regions(minimums.size() + 1, 127 | std::vector>(2)); 128 | 129 | std::vector> y_means_and_conf(2, std::vector(minimums.size() + 1)); 130 | 131 | minimums.push_back(INFINITY); 132 | 133 | 134 | float rm = minimums[0]; 135 | int j = 0; 136 | for (int i = 0; i < y.size(); ++i) { 137 | if (y[i] > rm) { 138 | j++; 139 | rm = minimums[j]; 140 | } 141 | int index = idx[i]; 142 | splitted_regions[j][0].push_back(new_coords[0][index]); 143 | splitted_regions[j][1].push_back(new_coords[1][index]); 144 | float conf = cls_map.at(region[0][index], region[1][index]); 145 | y_means_and_conf[0][j] += (y[i] * conf); 146 | y_means_and_conf[1][j] += conf; 147 | } 148 | 149 | for (int i = 0; i < y_means_and_conf[0].size(); ++i) { 150 | y_means_and_conf[0][i] /= y_means_and_conf[1][i]; 151 | y_means_and_conf[1][i] /= splitted_regions[i][0].size(); 152 | } 153 | 154 | std::pair>, std::vector>>> ret(y_means_and_conf, 155 | splitted_regions); 156 | return ret; 157 | } -------------------------------------------------------------------------------- /line_extracter/region_splitter.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_REGION_SPLITTER_H 6 | #define LINE_EXTRACTER_REGION_SPLITTER_H 7 | 8 | 9 | #include 10 | #include 11 | #include 12 | #include "opencv2/core/core.hpp" 13 | #include 14 | #include 15 | 16 | 17 | class region_splitter { 18 | public: 19 | region_splitter(float bandwidth, 20 | int bins_size, 21 | int discrete_size, 22 | int order); 23 | 24 | std::pair>, std::vector>>> 25 | get_splitted_regions_with_conf_and_weighted_mean(const std::vector> ®ion, 26 | const std::vector> &new_coords, 27 | const cv::Mat &cls_map) const; 28 | 29 | private: 30 | float bandwidth = 1; 31 | int bins_size = 15; 32 | int discrete_size = 15; 33 | int order = 1; 34 | }; 35 | 36 | 37 | #endif //LINE_EXTRACTER_REGION_SPLITTER_H 38 | -------------------------------------------------------------------------------- /line_extracter/roi_extraction.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "roi_extraction.h" 6 | 7 | roi_extraction::roi_extraction(const std::string &highlight_type1, float global_thresh, float C, int block_size) : 8 | global_thresh(global_thresh), 9 | C(C), 10 | block_size(block_size) { 11 | std::vector highlight_types{"thresh", "local thresh"}; 12 | if (std::find(highlight_types.begin(), highlight_types.end(), highlight_type1) != highlight_types.end()) { 13 | highlight_type = highlight_type1; 14 | } else { 15 | fprintf(stderr, "Incorrect input"); 16 | } 17 | 18 | } 19 | 20 | cv::Mat roi_extraction::get_roi(const cv::Mat &cls_map) { 21 | if (highlight_type == "thresh") { 22 | return cls_map > global_thresh; 23 | } 24 | if (highlight_type == "local thresh") { 25 | cv::Mat src; 26 | cv::Mat dst; 27 | cls_map.convertTo(src, CV_8UC1, 255); 28 | 29 | cv::adaptiveThreshold( 30 | src, 31 | dst, 32 | 255, 33 | cv::ADAPTIVE_THRESH_GAUSSIAN_C, 34 | cv::THRESH_BINARY, 35 | block_size, 36 | C 37 | ); 38 | 39 | return (cls_map > global_thresh).mul(dst > 0); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /line_extracter/roi_extraction.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_ROI_EXTRACTION_H 6 | #define LINE_EXTRACTER_ROI_EXTRACTION_H 7 | 8 | #include "opencv2/core/core.hpp" 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | #include "string" 18 | class roi_extraction { 19 | public: 20 | roi_extraction(const std::string&, float, float, int ); 21 | cv:: Mat get_roi(const cv::Mat&); 22 | private: 23 | std::string highlight_type; 24 | float global_thresh; 25 | float C; 26 | int block_size; 27 | }; 28 | 29 | 30 | #endif //LINE_EXTRACTER_ROI_EXTRACTION_H 31 | -------------------------------------------------------------------------------- /line_extracter/segment_extractor.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "segment_extractor.h" 6 | 7 | segment_extractor::segment_extractor() = default; 8 | 9 | std::vector> segment_extractor::extract(const std::vector> &new_region, 10 | float region_mean) { 11 | float min = INT32_MAX; 12 | float max = INT32_MIN; 13 | for (int i = 0; i < new_region[0].size(); ++i) { 14 | float x = new_region[0][i]; 15 | if (x < min) { 16 | min = x; 17 | } 18 | if (x > max) { 19 | max = x; 20 | } 21 | } 22 | 23 | std::vector> points_new = { 24 | {min, max}, 25 | {region_mean, region_mean} 26 | }; 27 | return points_new; 28 | } -------------------------------------------------------------------------------- /line_extracter/segment_extractor.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_SEGMENT_EXTRACTOR_H 6 | #define LINE_EXTRACTER_SEGMENT_EXTRACTOR_H 7 | 8 | 9 | #include 10 | #include 11 | #include "algorithm" 12 | class segment_extractor { 13 | public: 14 | segment_extractor(); 15 | std::vector> 16 | static extract(const std::vector> &new_region, float region_mean); 17 | }; 18 | 19 | 20 | #endif //LINE_EXTRACTER_SEGMENT_EXTRACTOR_H 21 | -------------------------------------------------------------------------------- /line_extracter/speed_test_results: -------------------------------------------------------------------------------- 1 | // current avg_time on test_image(4) = 116070 (N = 100) (default) 2 | // current avg_time on test_image(4) = 108466 (N = 100) (4 neighbors check) 3 | // current avg_time on test_image(4) = 31702 (N = 100) (default, 256 x 256) 4 | // current avg_time on test_image(4) = 30031 (N = 500) (default, 256 x 256, 4 neighbors check ) 5 | // current avg_time on test_image(4) = 12347 (N = 1000) (default, 256 x 256, parallel) 6 | // current avg_time on test_image(4) = 46919 (N = 500) (default, 512 x 512, parallel) 7 | // current avg_time on test_image(4) = 11454 (N = 1000) (default, 256 x 256, parallel, with region splitter) 8 | // current avg_time on test_image(4) = 11454 (N = 1000) (default, 256 x 256, parallel, with region splitter) 9 | // current avg_time on test_image(4) = 28528 (N = 500) (default, 256 x 256, parallel, with proper region splitter ) 10 | // current avg_time on test_image(4) = 26075 (N = 500) (default, 256 x 256, parallel, with proper region splitter, with stitching) 11 | // current avg_time on test_image(4) = 26203 (N = 500) (default, 256 x 256, parallel, with proper region splitter, with epic stitching) 12 | // current avg_time on selected_test(5) = 16501 (N = 500) (default, 256 x 256, parallel, with proper region splitter, with epic stitching, with region parallel) 13 | // current avg_time on selected_test(avg) = 10456(N = 500)(default, 256 x 256, parallel, with proper region splitter, with epic stitching, with region parallel) 14 | // current avg_time on wireframe(1) = 25264(N = 500)(default, almost orig size, parallel, with proper region splitter, with epic stitching, with region parallel) 15 | // current avg_time on wireframe(avg first 50) = 9911.8(101 FPS)(N = 100)(default, almost orig size, parallel, without region splitter, with epic stitching, with region parallel) 16 | // current avg_time on wireframe(avg first 50) = 12981.7(77 FPS)(N = 100)(default, almost orig size, parallel, with region splitter, with epic stitching, with region parallel) -------------------------------------------------------------------------------- /line_extracter/to_original_scale.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #include "to_original_scale.h" 6 | -------------------------------------------------------------------------------- /line_extracter/to_original_scale.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by leonid on 14.02.2021. 3 | // 4 | 5 | #ifndef LINE_EXTRACTER_TO_ORIGINAL_SCALE_H 6 | #define LINE_EXTRACTER_TO_ORIGINAL_SCALE_H 7 | 8 | 9 | class to_original_scale { 10 | 11 | }; 12 | 13 | 14 | #endif //LINE_EXTRACTER_TO_ORIGINAL_SCALE_H 15 | -------------------------------------------------------------------------------- /lsd/__init__.py: -------------------------------------------------------------------------------- 1 | from .detect_lines import detect_and_save 2 | -------------------------------------------------------------------------------- /lsd/detect_lines.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import onnxruntime 3 | import os 4 | import cv2 5 | import subprocess 6 | import numpy as np 7 | from PIL import Image 8 | import shutil 9 | from pathlib import Path 10 | 11 | import os 12 | 13 | os.environ["CUDA_VISIBLE_DEVICES"] = "1" 14 | 15 | 16 | PROJECTROOT = Path("/home/devel/lsdnet/") 17 | 18 | 19 | class SegmentDector: 20 | """ 21 | detects segments in one image 22 | """ 23 | 24 | def __init__(self, model_path: str) -> None: 25 | # create onnx runner to run model 26 | 27 | self.session = onnxruntime.InferenceSession(model_path, None) 28 | self.input_name = self.session.get_inputs()[0].name 29 | self.output_name = self.session.get_outputs()[0].name 30 | self.image_size = self.session.get_inputs()[0].shape[1] 31 | 32 | # create intermediate dir 33 | self.path_to_intermediate_predictions = Path("intermediate_predictions") 34 | self.path_to_intermediate_predictions.mkdir(exist_ok=True) 35 | 36 | self.post_process_path = ( 37 | PROJECTROOT / "line_extracter/cmake-build-release/Line_extracter" 38 | ) 39 | 40 | def __call__(self, image: "np.ndarray") -> "np.ndarray": 41 | """ 42 | returns segments detected on image 43 | """ 44 | img_original_height, img_original_width, _ = image.shape 45 | 46 | img = image.astype("float32") / 255 47 | img = np.expand_dims( 48 | cv2.resize(img, (self.image_size, self.image_size)), axis=0 49 | ) 50 | result = self.session.run([self.output_name], {self.input_name: img}) 51 | cls_map = result[0][0][:, :, 0] 52 | angle_map = result[0][0][:, :, 1] 53 | 54 | a1 = Image.fromarray(cls_map) 55 | a2 = Image.fromarray(angle_map) 56 | 57 | cls_map_path = self.path_to_intermediate_predictions / "0_cls_map.tiff" 58 | angle_map_path = self.path_to_intermediate_predictions / "0_angle_map.tiff" 59 | a1.save(cls_map_path) 60 | a2.save(angle_map_path) 61 | 62 | # here we invoke c++ subprogramm 63 | subprocess.run( 64 | [ 65 | self.post_process_path, 66 | cls_map_path, 67 | angle_map_path, 68 | str(self.path_to_intermediate_predictions) + "/", 69 | str(img_original_height), 70 | str(img_original_width), 71 | ] 72 | ) 73 | 74 | segments = np.array( 75 | np.genfromtxt( 76 | self.path_to_intermediate_predictions / "0.csv", delimiter=" " 77 | ), 78 | dtype="float", 79 | ) 80 | if len(segments.shape) == 1: 81 | segments = np.expand_dims(segments, 0) 82 | return segments 83 | 84 | 85 | def detect_and_save(input_path: str, out_path: str, model_path: str): 86 | """ 87 | detects lines on image or images specified in input_path and saves predictions to out_path 88 | 89 | Keyword arguments: 90 | input_path -- path to image or to foulder with images 91 | out_path -- output foulder 92 | model_path -- onnx neural network name to use in detection 93 | """ 94 | 95 | sd = SegmentDector(model_path) 96 | 97 | if os.path.isdir(input_path): 98 | directory_content_paths = [ 99 | os.path.join(input_path, ent) for ent in os.listdir(input_path) 100 | ] 101 | else: 102 | directory_content_paths = [input_path] 103 | 104 | # detect lines and save 105 | for entity_path in directory_content_paths: 106 | entity_name_split = entity_path.split(".") 107 | if entity_name_split[-1] != "jpg" and entity_name_split[-1] != "png": 108 | continue 109 | 110 | image = np.flip(cv2.imread(str(entity_path)), axis=2) 111 | segments = sd(image) 112 | dst_path = Path(out_path) / (Path(entity_path).name + ".txt") 113 | dst_path.parent.mkdir(exist_ok=True,parents=True) 114 | np.savetxt( 115 | dst_path, segments, fmt="%.6f" 116 | ) 117 | 118 | shutil.rmtree("intermediate_predictions", ignore_errors=True) 119 | 120 | 121 | if __name__ == "__main__": 122 | parser = argparse.ArgumentParser() 123 | parser.add_argument("input_path", help="path to image or to foulder with images") 124 | parser.add_argument("out_path", help="output foulder") 125 | parser.add_argument("model_path", help="Neural network name to use in detection") 126 | 127 | args = parser.parse_args() 128 | 129 | detect_and_save(args.input_path, args.out_path, args.model_path) 130 | -------------------------------------------------------------------------------- /lsd/models_onnx/model.onnx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/lsd/models_onnx/model.onnx -------------------------------------------------------------------------------- /visualization/context.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | 4 | sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) 5 | 6 | import lsd 7 | -------------------------------------------------------------------------------- /visualization/display_gradio.py: -------------------------------------------------------------------------------- 1 | import gradio as gr 2 | from context import lsd 3 | from draw_pred import draw_prediction 4 | import cv2 5 | import os 6 | import numpy as np 7 | import shutil 8 | 9 | image_name = "demo" 10 | out_path = "./predictions/" 11 | model_path = "../lsd/models_onnx/model.onnx" 12 | 13 | 14 | def display_prediction(image, score_thr): 15 | # firstly we save image to disk, to match "detect_and_save"s interface 16 | os.makedirs("intermediate_images", exist_ok=True) 17 | os.makedirs("predictions", exist_ok=True) 18 | path_to_image = os.path.join("./intermediate_images", image_name + ".jpg") 19 | cv2.imwrite(path_to_image, image) 20 | 21 | lsd.detect_and_save(path_to_image, out_path, model_path) 22 | segments = np.array( 23 | np.genfromtxt("./predictions/" + image_name + ".jpg.txt", delimiter=" "), 24 | dtype="float", 25 | ) 26 | if segments.shape == (0,): 27 | return image 28 | line_image = draw_prediction(image, segments, score_thr) 29 | 30 | shutil.rmtree("intermediate_images") 31 | shutil.rmtree("predictions") 32 | return line_image 33 | 34 | 35 | sample_images = [ 36 | ["test_images/00031810.jpg", 0.7], 37 | ["test_images/00037254.jpg", 0.7], 38 | ["test_images/00055631.jpg", 0.7], 39 | ] 40 | 41 | 42 | iface = gr.Interface( 43 | display_prediction, 44 | inputs=[ 45 | "image", 46 | gr.inputs.Number(default=0.7, label="score threshold (0.0 ~ 1.0)"), 47 | ], 48 | outputs="image", 49 | server_name="0.0.0.0", 50 | server_port=7860, 51 | title="LSDNet", 52 | description='Official implementation of "LSDNet: Trainable Modification of LSD Algorithm for Real-Time Line Segment Detection." by Teplyakov, Lev, Leonid Erlygin, and Evgeny Shvets. IEEE Access 10 (2022): 45256-45265.', 53 | allow_flagging=False, 54 | examples=sample_images, 55 | allow_screenshot=False, 56 | ) 57 | iface.launch() 58 | -------------------------------------------------------------------------------- /visualization/draw_pred.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 3 | 4 | 5 | def draw_lines_on_image(image, lines, thresh, thickness=2, color=(255, 0, 0)): 6 | try: 7 | for line in lines: 8 | x1, y1, x2, y2, conf = line 9 | if conf < thresh: 10 | continue 11 | cv2.line( 12 | image, 13 | (int(x1), int(y1)), 14 | (int(x2), int(y2)), 15 | color=color, 16 | thickness=thickness, 17 | ) 18 | except: 19 | print(lines.shape) 20 | raise 21 | return image 22 | 23 | 24 | def draw_prediction( 25 | image: "numpy.ndarray", lines: "numpy.ndarray", thresh 26 | ) -> "numpy.ndarray": 27 | if np.squeeze(lines).shape == (0,): 28 | return image 29 | if len(lines.shape) == 1: 30 | lines = np.expand_dims(lines, 0) 31 | lines_our = lines.astype("float64") 32 | line_image = draw_lines_on_image(np.copy(image), lines_our, thresh) 33 | return line_image 34 | -------------------------------------------------------------------------------- /visualization/test_images/00031810.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/visualization/test_images/00031810.jpg -------------------------------------------------------------------------------- /visualization/test_images/00037254.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/visualization/test_images/00037254.jpg -------------------------------------------------------------------------------- /visualization/test_images/00055631.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/visualization/test_images/00055631.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/112.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/114.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/114.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/129.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/129.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/35.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/40.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/48.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/49.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/51.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/54.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/55.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/63.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/63.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/67.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/67.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/71.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/71.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/75.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/75.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/77.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/77.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/84.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/84.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/89.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/89.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/93.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/93.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/95.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/95.jpg -------------------------------------------------------------------------------- /wireframe_tiny/images/97.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iitpvisionlab/LSDNet/aea2bf7c5853aa1c3cfe04d42e032034188a600f/wireframe_tiny/images/97.jpg -------------------------------------------------------------------------------- /wireframe_tiny/markup/112.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 439], "objects": [{"data": [[372.66973876953125, 237.84068298339844], [372.4, 248.4]], "type": "seg"}, {"data": [[44.93243243243242, 120.85135135135137], [44.25675675675677, 187.06756756756758]], "type": "seg"}, {"data": [[364.31646763042113, 137.74324324324326], [363.0, 217.0]], "type": "seg"}, {"data": [[303.48837209302326, 255.0813953488372], [421.0, 256.4]], "type": "seg"}, {"data": [[208.51331203407878, 136.51544195953142], [207.11075612353565, 213.6560170394036]], "type": "seg"}, {"data": [[0.4675186368477103, 184.20234291799784], [43.94675186368477, 185.13738019169327]], "type": "seg"}, {"data": [[395.0532481363152, 100.98402555910542], [395.98828541001063, 116.87965921192757]], "type": "seg"}, {"data": [[395.4, 117.2], [364.31646763042113, 137.74324324324326]], "type": "seg"}, {"data": [[44.93243243243242, 120.85135135135137], [78.04054054054055, 131.6621621621622]], "type": "seg"}, {"data": [[375.8029541169076, 142.472972972973], [375.8029541169076, 133.6891891891892]], "type": "seg"}, {"data": [[211.9241192411924, 190.2317073170732], [294.0379403794038, 191.8577235772358]], "type": "seg"}, {"data": [[123.48837209302327, 304.84883720930236], [211.14864864864867, 306.6621621621622]], "type": "seg"}, {"data": [[471.9594594594595, 237.06756756756758], [471.9594594594595, 248.55405405405406]], "type": "seg"}, {"data": [[122.63513513513513, 235.71621621621622], [123.48837209302327, 304.84883720930236]], "type": "seg"}, {"data": [[428.60465116279073, 97.40697674418604], [429.85700817096165, 114.09459459459461]], "type": "seg"}, {"data": [[123.48837209302327, 304.84883720930236], [0.0, 394.7528404200379]], "type": "seg"}, {"data": [[454.3918918918919, 148.55405405405406], [471.0732243871779, 141.79729729729732]], "type": "seg"}, {"data": [[210.06944444444446, 356.48148148148147], [177.66203703703704, 436.9212962962963]], "type": "seg"}, {"data": [[440.39351851851853, 417.2453703703704], [455.43981481481484, 437.5]], "type": "seg"}, {"data": [[78.04054054054055, 188.41891891891893], [78.04054054054055, 131.6621621621622]], "type": "seg"}, {"data": [[471.0732243871779, 133.01351351351352], [471.0732243871779, 141.79729729729732]], "type": "seg"}, {"data": [[218.58108108108107, 416.7972972972973], [500.0, 416.1428346951603]], "type": "seg"}, {"data": [[123.26388888888889, 437.5], [197.91666666666669, 317.7083333333333]], "type": "seg"}, {"data": [[454.3918918918919, 217.472972972973], [500.0, 216.8648648648649]], "type": "seg"}, {"data": [[217.01388888888889, 336.22685185185185], [382.52314814814815, 336.22685185185185]], "type": "seg"}, {"data": [[138.38551650692224, 215.52609158679445], [362.3269435569755, 216.46112886048985]], "type": "seg"}, {"data": [[136.14864864864865, 101.93243243243245], [396.0732243871779, 100.5810810810811]], "type": "seg"}, {"data": [[63.65740740740741, 364.58333333333337], [90.27777777777779, 363.4259259259259]], "type": "seg"}, {"data": [[471.0732243871779, 141.79729729729732], [375.8029541169076, 142.472972972973]], "type": "seg"}, {"data": [[210.84010840108402, 276.9525745257453], [210.8703215410533, 397.2027027027027]], "type": "seg"}, {"data": [[206.42962646484375, 238.4719696044922], [206.2, 306.6]], "type": "seg"}, {"data": [[383.19783197831975, 347.68428184281845], [499.45799457994576, 348.2262872628727]], "type": "seg"}, {"data": [[121.95945945945945, 278.9594594594595], [206.2, 280.0]], "type": "seg"}, {"data": [[372.66973876953125, 237.84068298339844], [363.17567567567573, 230.9864864864865]], "type": "seg"}, {"data": [[218.4281842818428, 398.09078590785913], [218.58108108108107, 416.7972972972973]], "type": "seg"}, {"data": [[209.79729729729732, 317.47297297297297], [118.83720930232558, 317.87209302325584]], "type": "seg"}, {"data": [[401.16279069767444, 97.40697674418604], [396.0732243871779, 100.5810810810811]], "type": "seg"}, {"data": [[0.5420054200541955, 9.2018970189702], [136.14864864864865, 101.93243243243245]], "type": "seg"}, {"data": [[401.6279069767442, 114.61627906976743], [375.8029541169076, 133.6891891891892]], "type": "seg"}, {"data": [[429.8, 100.4], [499.6, 101.6]], "type": "seg"}, {"data": [[471.0732243871779, 133.01351351351352], [375.8029541169076, 133.6891891891892]], "type": "seg"}, {"data": [[401.6279069767442, 114.61627906976743], [429.85700817096165, 114.09459459459461]], "type": "seg"}, {"data": [[122.6730728149414, 238.7900390625], [500.0, 237.35714285714286]], "type": "seg"}, {"data": [[429.85700817096165, 114.09459459459461], [471.0732243871779, 133.01351351351352]], "type": "seg"}, {"data": [[402.0660276890308, 98.64643237486686], [401.59850905218315, 113.13951011714589]], "type": "seg"}, {"data": [[385.63685636856366, 299.4457994579946], [499.18699186991864, 299.9878048780488]], "type": "seg"}, {"data": [[288.19444444444446, 418.40277777777777], [288.77314814814815, 439.23611111111114]], "type": "seg"}, {"data": [[102.710027100271, 184.81165311653118], [103.99088112502747, 80.44814326521643]], "type": "seg"}, {"data": [[209.4483493077742, 137.45047923322682], [298.27689030883914, 137.45047923322682]], "type": "seg"}, {"data": [[401.16279069767444, 97.40697674418604], [428.60465116279073, 97.40697674418604]], "type": "seg"}, {"data": [[389.4675925925926, 417.2453703703704], [399.8842592592593, 436.9212962962963]], "type": "seg"}, {"data": [[375.8029541169076, 142.472972972973], [364.14996337890625, 147.76669311523438]], "type": "seg"}, {"data": [[136.82432432432432, 230.31081081081084], [122.63513513513513, 235.71621621621622]], "type": "seg"}, {"data": [[210.8703215410533, 397.2027027027027], [500.0, 396.5418513201423]], "type": "seg"}, {"data": [[140.0462962962963, 319.44444444444446], [11.574074074074074, 437.5]], "type": "seg"}, {"data": [[454.3918918918919, 148.55405405405406], [454.3918918918919, 217.472972972973]], "type": "seg"}, {"data": [[364.14996337890625, 147.76669311523438], [454.3918918918919, 148.55405405405406]], "type": "seg"}, {"data": [[338.5416666666667, 417.8240740740741], [344.3287037037037, 439.81481481481484]], "type": "seg"}, {"data": [[122.84347534179688, 252.5968017578125], [221.95945945945945, 253.2837837837838]], "type": "seg"}, {"data": [[381.57181571815715, 276.9525745257453], [382.0945945945946, 397.2027027027027]], "type": "seg"}, {"data": [[215.4779510498047, 276.00604248046875], [215.2349853515625, 397.1927185058594]], "type": "seg"}, {"data": [[136.14864864864865, 101.93243243243245], [136.82432432432432, 230.31081081081084]], "type": "seg"}, {"data": [[224.95135135135138, 250.42972972972976], [206.3175811767578, 271.716552734375]], "type": "seg"}, {"data": [[118.83720930232558, 317.87209302325584], [0.0, 412.0675675675676]], "type": "seg"}, {"data": [[297.80937167199147, 137.45047923322682], [297.80937167199147, 215.05857294994672]], "type": "seg"}, {"data": [[169.5601851851852, 320.02314814814815], [66.55092592592592, 438.65740740740745]], "type": "seg"}, {"data": [[44.93243243243242, 139.7702702702703], [78.04054054054055, 147.2027027027027]], "type": "seg"}, {"data": [[498.6, 249.0783783783784], [224.95135135135138, 250.42972972972976]], "type": "seg"}, {"data": [[137.45047923322682, 189.81256656017038], [78.54313099041532, 187.47497337593182]], "type": "seg"}, {"data": [[135.96857853223597, 232.41919581618657], [363.36430469821676, 231.7493998628258]], "type": "seg"}, {"data": [[207.11075612353565, 273.03088391906283], [499.3099041533546, 273.03088391906283]], "type": "seg"}, {"data": [[363.7294994675186, 228.61661341853033], [455.3631522896698, 228.1490947816826]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/114.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 332], "objects": [{"data": [[141.2280701754386, 166.17543859649123], [282.40131578947364, 162.05263157894737]], "type": "seg"}, {"data": [[450.17123287671234, 214.45890410958904], [421.7465753424658, 222.33561643835617]], "type": "seg"}, {"data": [[325.0877192982456, 167.22807017543857], [375.2631578947368, 163.71929824561403]], "type": "seg"}, {"data": [[326.19863013698625, 216.513698630137], [349.486301369863, 220.62328767123287]], "type": "seg"}, {"data": [[351.19863013698625, 227.13013698630138], [368.32191780821915, 231.92465753424656]], "type": "seg"}, {"data": [[158.42105263157896, 168.28070175438594], [159.12280701754386, 206.87719298245614]], "type": "seg"}, {"data": [[375.513698630137, 237.4041095890411], [369.69178082191786, 236.37671232876713]], "type": "seg"}, {"data": [[421.7465753424658, 222.33561643835617], [415.582191780822, 221.3082191780822]], "type": "seg"}, {"data": [[231.41447368421052, 232.77631578947367], [326.19863013698625, 216.513698630137]], "type": "seg"}, {"data": [[420.8881578947368, 94.94736842105262], [421.7465753424658, 222.33561643835617]], "type": "seg"}, {"data": [[450.51282051282055, 173.17948717948715], [475.513698630137, 172.67808219178082]], "type": "seg"}, {"data": [[40.256410256410255, 222.9230769230769], [1.151315789473684, 238.69736842105263]], "type": "seg"}, {"data": [[18.717948717948723, 210.6153846153846], [19.743589743589745, 252.15384615384613]], "type": "seg"}, {"data": [[410.3618421052631, 165.0131578947368], [400.2564102564103, 164.46153846153845]], "type": "seg"}, {"data": [[479.2307692307693, 199.33333333333331], [499.2307692307692, 200.87179487179486]], "type": "seg"}, {"data": [[258.71710526315786, 155.4736842105263], [257.40131578947364, 70.93421052631578]], "type": "seg"}, {"data": [[220.5592105263158, 85.73684210526315], [221.2171052631579, 157.11842105263156]], "type": "seg"}, {"data": [[400.1644736842105, 228.82894736842104], [400.1644736842105, 88.03947368421052]], "type": "seg"}, {"data": [[171.53846153846155, 208.05128205128204], [92.56410256410257, 215.23076923076923]], "type": "seg"}, {"data": [[129.05092592592592, 254.62962962962965], [194.44444444444446, 241.89814814814815]], "type": "seg"}, {"data": [[404.8717948717949, 97.28205128205128], [420.8881578947368, 94.94736842105262]], "type": "seg"}, {"data": [[172.40547839506172, 168.38670267489712], [172.40547839506172, 208.17258230452674]], "type": "seg"}, {"data": [[215.625, 226.8552631578947], [231.41447368421052, 232.77631578947367]], "type": "seg"}, {"data": [[225.16447368421052, 131.46052631578945], [224.83552631578948, 153.5]], "type": "seg"}, {"data": [[171.53846153846155, 208.05128205128204], [215.62411499023438, 222.00230407714844]], "type": "seg"}, {"data": [[41.09902159244263, 241.32894736842104], [0.0, 263.94871794871796]], "type": "seg"}, {"data": [[125.89743589743588, 246.0], [222.82051282051282, 230.1025641025641]], "type": "seg"}, {"data": [[226.54109589041096, 87.74657534246575], [226.88356164383563, 126.44520547945206]], "type": "seg"}, {"data": [[282.40131578947364, 162.05263157894737], [375.2631578947368, 163.71929824561403]], "type": "seg"}, {"data": [[400.1644736842105, 228.82894736842104], [375.513698630137, 237.4041095890411]], "type": "seg"}, {"data": [[247.94871794871793, 261.38461538461536], [368.32191780821915, 231.92465753424656]], "type": "seg"}, {"data": [[1.2963900134952713, 215.3421052631579], [39.78323211875843, 204.8157894736842]], "type": "seg"}, {"data": [[282.3076923076923, 48.05128205128205], [141.61184210526318, 119.94736842105262]], "type": "seg"}, {"data": [[224.8569092395748, 154.53802125919867], [258.38103025347505, 152.08503679476695]], "type": "seg"}, {"data": [[40.769230769230774, 228.05128205128204], [92.56410256410257, 223.43589743589743]], "type": "seg"}, {"data": [[231.7543859649123, 165.82456140350877], [325.0877192982456, 167.22807017543857]], "type": "seg"}, {"data": [[215.61403508771932, 166.52631578947367], [215.625, 226.8552631578947]], "type": "seg"}, {"data": [[475.513698630137, 172.67808219178082], [475.17123287671234, 166.17123287671234]], "type": "seg"}, {"data": [[479.9657534246576, 165.14383561643837], [478.7828947368421, 203.82894736842104]], "type": "seg"}, {"data": [[282.3076923076923, 48.05128205128205], [282.40131578947364, 162.05263157894737]], "type": "seg"}, {"data": [[249.96784979423867, 266.44483024691357], [368.52173353909467, 236.7058899176955]], "type": "seg"}, {"data": [[375.2631578947368, 163.71929824561403], [375.513698630137, 237.4041095890411]], "type": "seg"}, {"data": [[410.00000000000006, 137.28205128205127], [400.2564102564103, 136.25641025641025]], "type": "seg"}, {"data": [[410.78767123287673, 217.8835616438356], [399.8245614035087, 220.21052631578945]], "type": "seg"}, {"data": [[450.1644736842105, 166.32894736842104], [450.17123287671234, 214.45890410958904]], "type": "seg"}, {"data": [[39.78323211875843, 204.8157894736842], [41.09902159244263, 241.32894736842104]], "type": "seg"}, {"data": [[479.2307692307693, 187.53846153846152], [499.7435897435898, 188.05128205128204]], "type": "seg"}, {"data": [[156.41447368421055, 193.6315789473684], [116.2828947368421, 193.96052631578945]], "type": "seg"}, {"data": [[400.2564102564103, 98.3076923076923], [410.3618421052631, 101.8552631578947]], "type": "seg"}, {"data": [[410.51282051282055, 174.20512820512818], [400.2564102564103, 174.20512820512818]], "type": "seg"}, {"data": [[225.6745707277187, 131.64349959116925], [257.9721995094031, 125.10220768601798]], "type": "seg"}, {"data": [[478.7828947368421, 203.82894736842104], [450.8561643835617, 209.66438356164383]], "type": "seg"}, {"data": [[486.1301369863014, 166.513698630137], [450.1644736842105, 166.32894736842104]], "type": "seg"}, {"data": [[410.3618421052631, 101.8552631578947], [410.78767123287673, 217.8835616438356]], "type": "seg"}, {"data": [[420.8881578947368, 94.94736842105262], [485.8974358974359, 117.7948717948718]], "type": "seg"}, {"data": [[410.3618421052631, 115.6710526315789], [400.2564102564103, 113.6923076923077]], "type": "seg"}, {"data": [[141.61184210526318, 119.94736842105262], [141.2280701754386, 166.17543859649123]], "type": "seg"}, {"data": [[226.90106295993456, 126.7375306623058], [257.5633687653311, 120.19623875715453]], "type": "seg"}, {"data": [[326.19863013698625, 216.513698630137], [325.0877192982456, 167.22807017543857]], "type": "seg"}, {"data": [[93.23559670781893, 215.8082561728395], [93.63747427983539, 223.84580761316872]], "type": "seg"}, {"data": [[243.32191780821918, 122.33561643835615], [242.6369863013699, 81.23972602739725]], "type": "seg"}, {"data": [[51.038451646090536, 168.38670267489712], [143.06841563786008, 167.5829475308642]], "type": "seg"}, {"data": [[400.1644736842105, 88.03947368421052], [282.3076923076923, 48.05128205128205]], "type": "seg"}, {"data": [[231.41447368421052, 232.77631578947367], [231.7543859649123, 165.82456140350877]], "type": "seg"}, {"data": [[223.63041700735894, 87.08094848732624], [256.74570727718725, 72.77187244480784]], "type": "seg"}, {"data": [[194.91062242798353, 241.528420781893], [247.55658436213992, 266.0429526748971]], "type": "seg"}, {"data": [[192.80701754385964, 235.29824561403507], [247.94871794871793, 261.38461538461536]], "type": "seg"}, {"data": [[485.8974358974359, 117.7948717948718], [486.1301369863014, 166.513698630137]], "type": "seg"}, {"data": [[349.80584716796875, 165.49952697753906], [351.19863013698625, 227.13013698630138]], "type": "seg"}, {"data": [[486.4726027397261, 162.4041095890411], [500.0, 162.74657534246575]], "type": "seg"}, {"data": [[0.8176614881439084, 273.50776778413734], [121.01390024529844, 253.88389206868356]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/129.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 332], "objects": [{"data": [[392.21122994652404, 125.85828877005346], [391.1417112299465, 194.30748663101602]], "type": "seg"}, {"data": [[443.69369369369366, 62.846846846846844], [144.59459459459458, 43.027027027027046]], "type": "seg"}, {"data": [[127.47747747747746, 43.027027027027046], [138.73873873873873, 51.585585585585605]], "type": "seg"}, {"data": [[43.35060461531047, 33.68983957219251], [67.1171171171171, 45.9060317001494]], "type": "seg"}, {"data": [[206.33561643835617, 207.6095890410959], [337.1575342465753, 208.63698630136986]], "type": "seg"}, {"data": [[192.63698630136986, 96.9931506849315], [193.32191780821918, 105.21232876712328]], "type": "seg"}, {"data": [[67.1171171171171, 45.9060317001494], [455.9931506849315, 12.746575342465743]], "type": "seg"}, {"data": [[374.5641711229946, 131.74064171122993], [373.49465240641706, 189.4946524064171]], "type": "seg"}, {"data": [[206.33561643835617, 207.6095890410959], [203.75820922851562, 107.5684814453125]], "type": "seg"}, {"data": [[388.8888888888889, 231.4814814814815], [398.72685185185185, 236.11111111111111]], "type": "seg"}, {"data": [[163.52739726027397, 73.70547945205479], [154.5045045045045, 68.25225225225226]], "type": "seg"}, {"data": [[336.7531433105469, 118.94850158691406], [337.1575342465753, 208.63698630136986]], "type": "seg"}, {"data": [[44.56018518518518, 34.72222222222222], [356.48148148148147, 1.1574074074074074]], "type": "seg"}, {"data": [[359.07534246575347, 104.18493150684931], [358.3904109589041, 113.77397260273972]], "type": "seg"}, {"data": [[388.3101851851852, 240.16203703703704], [398.72685185185185, 246.52777777777777]], "type": "seg"}, {"data": [[362.8424657534247, 135.00684931506848], [362.8424657534247, 186.03424657534245]], "type": "seg"}, {"data": [[442.79279279279274, 43.92792792792794], [443.69369369369366, 62.846846846846844]], "type": "seg"}, {"data": [[348.1164383561644, 138.0890410958904], [456.67808219178085, 102.13013698630137]], "type": "seg"}, {"data": [[347.22222222222223, 134.62898662551441], [455.7291666666667, 92.02996399176955]], "type": "seg"}, {"data": [[39.63963963963963, 329.06306306306305], [30.180180180180177, 21.405405405405418]], "type": "seg"}, {"data": [[178.93835616438358, 95.62328767123287], [179.28082191780823, 85.6917808219178]], "type": "seg"}, {"data": [[401.8018018018018, 75.45945945945947], [403.15315315315314, 88.07207207207209]], "type": "seg"}, {"data": [[193.32191780821918, 105.21232876712328], [347.08904109589037, 119.93835616438356]], "type": "seg"}, {"data": [[162.15753424657535, 84.32191780821917], [163.52739726027397, 73.70547945205479]], "type": "seg"}, {"data": [[348.1164383561644, 182.95205479452054], [457.70547945205476, 212.4041095890411]], "type": "seg"}, {"data": [[138.73873873873873, 51.585585585585605], [401.8018018018018, 75.45945945945947]], "type": "seg"}, {"data": [[374.82876712328766, 92.1986301369863], [374.82876712328766, 103.84246575342465]], "type": "seg"}, {"data": [[449.82876712328766, 106.23972602739725], [448.45890410958907, 208.9794520547945]], "type": "seg"}, {"data": [[162.15753424657535, 84.32191780821917], [374.82876712328766, 103.84246575342465]], "type": "seg"}, {"data": [[401.8018018018018, 75.45945945945947], [416.2162162162162, 62.846846846846844]], "type": "seg"}, {"data": [[456.6936728395062, 13.98533950617284], [454.7646604938272, 328.89660493827165]], "type": "seg"}, {"data": [[374.82876712328766, 92.1986301369863], [384.68468468468467, 86.72072072072073]], "type": "seg"}, {"data": [[52.70270270270269, 330.1402659343836], [43.35060461531047, 33.68983957219251]], "type": "seg"}, {"data": [[163.52739726027397, 73.70547945205479], [374.82876712328766, 92.1986301369863]], "type": "seg"}, {"data": [[337.1575342465753, 208.63698630136986], [453.93835616438355, 300.0753424657534]], "type": "seg"}, {"data": [[254.95495495495493, 32.66666666666667], [442.79279279279274, 43.92792792792794]], "type": "seg"}, {"data": [[30.180180180180177, 21.405405405405418], [195.71917808219177, 1.102739726027387]], "type": "seg"}, {"data": [[67.1171171171171, 45.9060317001494], [74.77477477477476, 330.1402659343836]], "type": "seg"}, {"data": [[403.15315315315314, 88.07207207207209], [137.38738738738738, 66.45045045045045]], "type": "seg"}, {"data": [[138.73873873873873, 51.585585585585605], [137.38738738738738, 66.45045045045045]], "type": "seg"}, {"data": [[347.08904109589037, 119.93835616438356], [347.7739726027397, 112.74657534246575]], "type": "seg"}, {"data": [[358.3904109589041, 113.77397260273972], [178.93835616438358, 95.62328767123287]], "type": "seg"}, {"data": [[442.79279279279274, 43.92792792792794], [452.70270270270265, 36.270270270270274]], "type": "seg"}, {"data": [[206.33561643835617, 207.6095890410959], [73.87387387387386, 292.57657657657654]], "type": "seg"}, {"data": [[455.9931506849315, 12.746575342465743], [466.88001638001634, 0.0]], "type": "seg"}, {"data": [[203.88037109375, 112.31036376953125], [336.48648648648646, 125.009009009009]], "type": "seg"}, {"data": [[348.1164383561644, 182.95205479452054], [348.1164383561644, 138.0890410958904]], "type": "seg"}, {"data": [[413.77314814814815, 119.21296296296296], [412.03703703703707, 193.28703703703704]], "type": "seg"}, {"data": [[353.03828375057157, 137.58725208619114], [353.03828375057157, 183.07756058527664]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/35.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 334], "objects": [{"data": [[437.8873618970627, 165.7235246564268], [467.5289679331716, 165.7235246564268]], "type": "seg"}, {"data": [[371.5547703180212, 216.46996466431096], [365.547703180212, 213.28975265017667]], "type": "seg"}, {"data": [[332.7661029862382, 140.12224371523018], [364.93801509789546, 140.316050414698]], "type": "seg"}, {"data": [[410.96256684491976, 195.6096256684492], [427.859778597786, 198.18081180811808]], "type": "seg"}, {"data": [[174.02826855123675, 181.84098939929328], [305.8303886925795, 183.6077738515901]], "type": "seg"}, {"data": [[6.1000000000000085, 94.5], [5.300000000000011, 199.5]], "type": "seg"}, {"data": [[332.29999999999995, 139.89999999999998], [332.3321554770318, 194.91519434628975]], "type": "seg"}, {"data": [[74.59893048128342, 196.67914438502675], [1.236749116607772, 208.69611307420496]], "type": "seg"}, {"data": [[50.099999999999994, 99.89999999999999], [74.59893048128342, 104.16577540106952]], "type": "seg"}, {"data": [[204.01069518716577, 163.524064171123], [204.50000000000003, 109.7]], "type": "seg"}, {"data": [[6.300000000000011, 128.5], [41.30000000000001, 133.5]], "type": "seg"}, {"data": [[125.30000000000001, 127.10000000000001], [140.70000000000002, 133.5]], "type": "seg"}, {"data": [[140.70000000000002, 133.5], [141.51943462897526, 211.87632508833923]], "type": "seg"}, {"data": [[141.51943462897526, 211.87632508833923], [125.61837455830388, 218.59010600706713]], "type": "seg"}, {"data": [[169.42872541094042, 260.03772568040955], [313.5947184047426, 261.7219078415521]], "type": "seg"}, {"data": [[377.27272727272725, 103.63101604278076], [500.0, 48.01604278074867]], "type": "seg"}, {"data": [[351.5, 140.5], [351.29999999999995, 197.89999999999998]], "type": "seg"}, {"data": [[314.8040980795612, 235.09837962962973], [314.4692001028808, 269.9277692043897]], "type": "seg"}, {"data": [[167.7838863168725, 231.7493998628259], [167.44898834019213, 268.92307527434855]], "type": "seg"}, {"data": [[125.30000000000001, 127.10000000000001], [125.61837455830388, 218.59010600706713]], "type": "seg"}, {"data": [[5.300000000000011, 199.5], [41.30000000000001, 194.7]], "type": "seg"}, {"data": [[179.50000000000003, 218.5], [179.70000000000002, 188.89999999999998]], "type": "seg"}, {"data": [[179.70000000000002, 188.89999999999998], [300.1, 190.3]], "type": "seg"}, {"data": [[300.1, 190.3], [300.5, 219.10000000000002]], "type": "seg"}, {"data": [[309.9000268384327, 104.2086017176597], [377.41545893719814, 103.9989264626946]], "type": "seg"}, {"data": [[309.48067632850245, 110.70853462157812], [308.85165056360717, 174.6594873859367]], "type": "seg"}, {"data": [[304.2387949543747, 110.2891841116479], [302.9807434245841, 179.48201825013422]], "type": "seg"}, {"data": [[309.9000268384327, 110.70853462157812], [376.7864331723028, 110.07950885668279]], "type": "seg"}, {"data": [[74.59893048128342, 196.67914438502675], [74.59893048128342, 104.16577540106952]], "type": "seg"}, {"data": [[469.69999999999993, 92.10000000000001], [470.855614973262, 208.97860962566844]], "type": "seg"}, {"data": [[205.43510143588378, 63.7624041249111], [204.85368133748034, 100.1980636248603]], "type": "seg"}, {"data": [[0.0, 214.6603003305518], [50.00212846269624, 205.1250107167353]], "type": "seg"}, {"data": [[377.3115997314453, 110.2268180847168], [500.0, 60.821256038647334]], "type": "seg"}, {"data": [[280.4382941299282, 63.37479072597547], [280.24448743046037, 99.03522342805341]], "type": "seg"}, {"data": [[102.09736927964491, 227.684110534789], [152.09949774234116, 227.91667857415038]], "type": "seg"}, {"data": [[326.5255272633746, 228.06552211934167], [363.36430469821687, 228.06552211934167]], "type": "seg"}, {"data": [[164.43490655006866, 270.26266718107007], [315.1389960562416, 271.26736111111126]], "type": "seg"}, {"data": [[0.10000000000000853, 61.900000000000006], [115.95611190795898, 109.91485595703125]], "type": "seg"}, {"data": [[5.900000000000006, 165.5], [40.900000000000006, 164.89999999999998]], "type": "seg"}, {"data": [[438.29999999999995, 137.10000000000002], [469.78609625668446, 131.97326203208556]], "type": "seg"}, {"data": [[0.0, 48.01604278074867], [116.03448275862068, 103.0344827586207]], "type": "seg"}, {"data": [[363.387561502153, 228.2073886233521], [440.5872301234993, 266.8072229340252]], "type": "seg"}, {"data": [[377.9362818590704, 216.2256371814093], [499.7326203208556, 265.66310160427804]], "type": "seg"}, {"data": [[113.81172839506176, 110.43595679012348], [113.81172839506176, 216.5316358024692]], "type": "seg"}, {"data": [[439.29999999999995, 193.5], [465.69999999999993, 197.7]], "type": "seg"}, {"data": [[364.84111174816167, 139.70232919971662], [365.16412291394136, 213.0258638317066]], "type": "seg"}, {"data": [[6.1000000000000085, 94.5], [41.099999999999994, 104.7]], "type": "seg"}, {"data": [[118.5, 283.9], [379.94652406417106, 284.91443850267376]], "type": "seg"}, {"data": [[114.42347536579791, 220.93963739330897], [0.23256803936137788, 276.2908307613169]], "type": "seg"}, {"data": [[379.94652406417106, 284.91443850267376], [438.235294117647, 334.0]], "type": "seg"}, {"data": [[120.05347593582889, 219.1390374331551], [119.51871657754012, 125.55614973262033]], "type": "seg"}, {"data": [[119.51871657754012, 125.55614973262033], [156.41711229946523, 126.0909090909091]], "type": "seg"}, {"data": [[456.5329218106996, 139.8533950617284], [456.1310442386831, 162.76041666666666]], "type": "seg"}, {"data": [[316.48634023094183, 55.816329446730705], [279.8568740315248, 109.88839859825107]], "type": "seg"}, {"data": [[41.30000000000001, 194.7], [41.099999999999994, 104.7]], "type": "seg"}, {"data": [[181.9844908002782, 63.18098402650766], [204.65987463801252, 100.39187032432811]], "type": "seg"}, {"data": [[445.2803497942387, 139.8533950617284], [445.2803497942387, 162.76041666666666]], "type": "seg"}, {"data": [[58.60714591906722, 300.94304293362296], [151.86692970297975, 228.84695073159583]], "type": "seg"}, {"data": [[469.69999999999993, 92.10000000000001], [410.42780748663097, 111.11764705882354]], "type": "seg"}, {"data": [[182.178297499746, 62.987177327039845], [205.04748803694815, 63.18098402650766]], "type": "seg"}, {"data": [[204.50000000000003, 109.7], [164.4385026737968, 53.36363636363637]], "type": "seg"}, {"data": [[164.4385026737968, 53.36363636363637], [315.7754010695187, 53.89839572192514]], "type": "seg"}, {"data": [[323.65718811125095, 240.15880175720068], [376.6310192991204, 284.2498258861286]], "type": "seg"}, {"data": [[50.099999999999994, 99.89999999999999], [0.8021390374331538, 83.3101604278075]], "type": "seg"}, {"data": [[-0.23256803936137788, 261.4064762421887], [113.26063516899103, 216.28827660608144]], "type": "seg"}, {"data": [[208.70000000000002, 190.10000000000002], [208.70000000000002, 217.7]], "type": "seg"}, {"data": [[239.70000000000002, 189.89999999999998], [239.29999999999998, 217.10000000000002]], "type": "seg"}, {"data": [[270.9, 189.89999999999998], [270.70000000000005, 218.5]], "type": "seg"}, {"data": [[430.44280442804427, 201.13284132841326], [470.855614973262, 208.97860962566844]], "type": "seg"}, {"data": [[389.6604938271606, 273.43750000000006], [463.44521604938285, 323.59182098765444]], "type": "seg"}, {"data": [[428.0232849121094, 107.22467041015625], [427.859778597786, 198.18081180811808]], "type": "seg"}, {"data": [[34.87903225806452, 102.28225806451614], [35.682193756103516, 195.44903564453125]], "type": "seg"}, {"data": [[0.9645061728395062, 285.0115740740741], [65.58641975308642, 250.28935185185188]], "type": "seg"}, {"data": [[64.30041152263374, 112.1238425925926], [63.496656378600825, 191.69560185185185]], "type": "seg"}, {"data": [[442.4002271947876, 109.84653635116602], [441.3955332647464, 193.2361325445817]], "type": "seg"}, {"data": [[410.42780748663097, 111.11764705882354], [410.96256684491976, 195.6096256684492]], "type": "seg"}, {"data": [[171.93370907139027, 109.24080783682236], [171.51435856146006, 174.8691626409018]], "type": "seg"}, {"data": [[63.90374331550802, 333.57754010695186], [118.5, 283.9]], "type": "seg"}, {"data": [[50.099999999999994, 99.89999999999999], [49.99999999999999, 199.88770053475938]], "type": "seg"}, {"data": [[300.78799757404875, 63.956210824378914], [280.632100829396, 99.42283682698904]], "type": "seg"}, {"data": [[466.5, 100.50000000000001], [438.9, 109.10000000000001]], "type": "seg"}, {"data": [[336.0931179937691, 227.39986070890288], [413.6157977808951, 276.1745467416363]], "type": "seg"}, {"data": [[156.41711229946523, 126.0909090909091], [156.7968515742129, 186.24062968515742]], "type": "seg"}, {"data": [[377.9362818590704, 216.2256371814093], [371.5547703180212, 216.46996466431096]], "type": "seg"}, {"data": [[279.4117647058823, 110.048128342246], [279.4117647058823, 165.66310160427807]], "type": "seg"}, {"data": [[371.5547703180212, 216.46996466431096], [371.70000000000005, 130.7]], "type": "seg"}, {"data": [[326.7241379310345, 129.24137931034483], [326.32508833922265, 195.62190812720848]], "type": "seg"}, {"data": [[281.0197142283316, 63.37479072597547], [300.4003841751131, 63.37479072597547]], "type": "seg"}, {"data": [[305.49684648416536, 73.17666398282341], [304.86782071927007, 103.9989264626946]], "type": "seg"}, {"data": [[172.35305958132048, 63.950952764358576], [171.93370907139027, 102.95055018786906]], "type": "seg"}, {"data": [[285.3680220075148, 104.62795222758993], [304.65814546430494, 104.2086017176597]], "type": "seg"}, {"data": [[284.9486714975846, 110.2891841116479], [304.2387949543747, 110.49885936661302]], "type": "seg"}, {"data": [[309.2710010735374, 67.09608158883523], [309.6903515834676, 103.78925120772949]], "type": "seg"}, {"data": [[176.12721417069247, 68.98315888352121], [176.7562399355878, 103.78925120772949]], "type": "seg"}, {"data": [[112.80528717122922, 109.03113258185724], [172.14338432635537, 109.24080783682236]], "type": "seg"}, {"data": [[176.96591519055292, 109.24080783682236], [199.8205179817499, 109.03113258185724]], "type": "seg"}, {"data": [[116.3697665056361, 102.74087493290394], [172.14338432635537, 103.57957595276439]], "type": "seg"}, {"data": [[176.7562399355878, 103.9989264626946], [200.2398684916801, 103.78925120772949]], "type": "seg"}, {"data": [[176.32850241545896, 109.29951690821257], [177.2342995169082, 171.19565217391306]], "type": "seg"}, {"data": [[379.599576176418, 110.22511667263078], [378.58032146478206, 216.08199886682178]], "type": "seg"}, {"data": [[445.4143089849109, 139.92911112602138], [466.2362266654739, 140.22032675791735]], "type": "seg"}, {"data": [[168.08137968202638, 223.996227431959], [312.24737267582856, 223.996227431959]], "type": "seg"}, {"data": [[203.23362974939366, 96.0388035569927], [281.32578819725137, 96.0388035569927]], "type": "seg"}, {"data": [[168.4182161142549, 231.74346537321475], [311.57369981137157, 232.75397466990026]], "type": "seg"}, {"data": [[126.11156022635406, 228.45594179466448], [84.88278092158447, 253.19320937752622]], "type": "seg"}, {"data": [[193.53274050121257, 80.51738075990298], [290.5416329830234, 81.00242522231203]], "type": "seg"}, {"data": [[389.00565885206134, 197.89814066289406], [389.00565885206134, 213.4195634599838]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/40.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 333], "objects": [{"data": [[292.33576642335765, 203.36131386861314], [229.55326460481098, 211.68900343642613]], "type": "seg"}, {"data": [[1.2056327160493827, 79.57175925925925], [57.06661522633745, 87.60931069958848]], "type": "seg"}, {"data": [[188.88245884773664, 129.27061899862827], [212.99511316872432, 124.91694530178327]], "type": "seg"}, {"data": [[460.13745704467357, 155.33161512027493], [496.21993127147766, 154.30068728522338]], "type": "seg"}, {"data": [[230.74470593278465, 212.32531721536353], [268.58817729766804, 220.36286865569275]], "type": "seg"}, {"data": [[284.5374450683594, 201.2847900390625], [283.9622641509434, 97.25471698113206]], "type": "seg"}, {"data": [[496.90721649484533, 173.5446735395189], [496.21993127147766, 154.30068728522338]], "type": "seg"}, {"data": [[460.13745704467357, 155.33161512027493], [460.4810996563574, 172.8573883161512]], "type": "seg"}, {"data": [[82.4742268041237, 143.99140893470792], [96.21993127147765, 140.55498281786942]], "type": "seg"}, {"data": [[82.81786941580755, 227.15292096219932], [82.4742268041237, 143.99140893470792]], "type": "seg"}, {"data": [[148.10996563573883, 31.96391752577321], [150.09222412109375, 124.36697387695312]], "type": "seg"}, {"data": [[1.0046939300411524, 47.89041066529493], [61.286329732510296, 59.94673782578876]], "type": "seg"}, {"data": [[180.41237113402062, 203.44158075601376], [243.98625429553263, 196.56872852233678]], "type": "seg"}, {"data": [[58.45070422535221, 233.0985915492957], [0.3436426116838476, 240.89862542955328]], "type": "seg"}, {"data": [[21.649484536082472, 113.75085910652922], [39.86254295532646, 114.78178694158076]], "type": "seg"}, {"data": [[245.14531893004116, 52.645961934156375], [246.35095164609052, 97.65625]], "type": "seg"}, {"data": [[105.492862654321, 194.2408264746228], [106.49755658436216, 273.9465449245542]], "type": "seg"}, {"data": [[162.40875912408757, 185.84306569343067], [104.12371134020617, 189.35223367697594]], "type": "seg"}, {"data": [[268.3848797250859, 219.9364261168385], [335.3951890034364, 209.2835051546392]], "type": "seg"}, {"data": [[261.89021776406037, 1.6744898834019206], [230.74470593278465, 21.433470507544584]], "type": "seg"}, {"data": [[104.82306670096023, 189.5522548010974], [501.00737311385467, 271.60225908779154]], "type": "seg"}, {"data": [[105.84192439862542, 209.2835051546392], [126.1168384879725, 216.5]], "type": "seg"}, {"data": [[97.44525547445255, 271.2445255474453], [98.90510948905109, 4.8211678832117]], "type": "seg"}, {"data": [[499.33288323045275, 56.262860082304535], [162.09062071330592, 130.27531292866942]], "type": "seg"}, {"data": [[217.68795472918345, 305.57801131770407], [257.84963621665315, 331.77041228779296]], "type": "seg"}, {"data": [[217.0138888888889, 123.57735339506173], [297.3894032921811, 108.84184242112484]], "type": "seg"}, {"data": [[2.0618556701030926, 157.39347079037802], [40.549828178694156, 157.73711340206185]], "type": "seg"}, {"data": [[49.140893470790374, 210.31443298969072], [56.013745704467354, 216.84364261168386]], "type": "seg"}, {"data": [[285.5670103092784, 223.71649484536084], [351.54639175257734, 210.31443298969072]], "type": "seg"}, {"data": [[287.67736196845, 223.7118484224966], [348.2938957475995, 236.1030735596708]], "type": "seg"}, {"data": [[2.40549828178694, 83.51030927835053], [55.67010309278349, 90.03951890034365]], "type": "seg"}, {"data": [[107.5022505144033, 265.908993484225], [186.87307098765433, 331.88389489026065]], "type": "seg"}, {"data": [[133.67697594501718, 192.78865979381445], [183.50515463917526, 189.6958762886598]], "type": "seg"}, {"data": [[436.7697594501718, 69.76460481099657], [409.4481201171875, 54.68598556518555]], "type": "seg"}, {"data": [[150.09222412109375, 124.36697387695312], [161.51202749140893, 125.43470790378008]], "type": "seg"}, {"data": [[245.36082474226802, 97.59965635738833], [283.9971923828125, 103.57462310791016]], "type": "seg"}, {"data": [[201.71821305841922, 1.3797250859106676], [201.71821305841922, 108.93986254295534]], "type": "seg"}, {"data": [[0.8037551440329218, 88.81494341563786], [56.66473765432099, 95.6468621399177]], "type": "seg"}, {"data": [[244.74344135802468, 1.6075102880658436], [245.14531893004116, 11.654449588477366]], "type": "seg"}, {"data": [[0.3436426116838476, 213.75085910652922], [39.51890034364261, 210.65807560137458]], "type": "seg"}, {"data": [[131.6151202749141, 45.02233676975946], [184.19243986254295, 0.6924398625429701]], "type": "seg"}, {"data": [[60.824742268041234, 60.82989690721651], [58.45070422535221, 233.0985915492957]], "type": "seg"}, {"data": [[0.3436426116838476, 223.37285223367698], [29.553264604810995, 220.96735395189003]], "type": "seg"}, {"data": [[72.5085910652921, 112.03264604810998], [71.13402061855669, 243.99140893470792]], "type": "seg"}, {"data": [[126.1168384879725, 216.5], [125.4295532646048, 199.66151202749143]], "type": "seg"}, {"data": [[267.56954612005853, 99.56076134699852], [420.57101024890187, 61.859443631039525]], "type": "seg"}, {"data": [[21.649484536082472, 157.73711340206185], [21.649484536082472, 113.75085910652922]], "type": "seg"}, {"data": [[347.81021897810217, 236.2080291970803], [410.65292096219935, 218.56185567010309]], "type": "seg"}, {"data": [[177.83082561728398, 158.4067429698217], [196.2502143347051, 162.09062071330592]], "type": "seg"}, {"data": [[82.81786941580755, 227.15292096219932], [97.59450171821305, 236.77491408934708]], "type": "seg"}, {"data": [[104.82306670096023, 191.56164266117972], [500.6724751371743, 280.3096064814815]], "type": "seg"}, {"data": [[162.40875912408757, 185.84306569343067], [500.0, 228.5274914089347]], "type": "seg"}, {"data": [[76.35673868312757, 243.53780864197532], [96.85249485596708, 263.63168724279836]], "type": "seg"}, {"data": [[357.0446735395189, 257.393470790378], [357.7319587628866, 330.5893470790378]], "type": "seg"}, {"data": [[66.98389458272327, 119.3265007320644], [65.88579795021961, 236.4568081991215]], "type": "seg"}, {"data": [[58.45070422535221, 233.0985915492957], [97.44525547445255, 271.2445255474453]], "type": "seg"}, {"data": [[402.45283018867923, 56.877358490566024], [402.4647887323946, 0.3521126760563362]], "type": "seg"}, {"data": [[216.61201131687244, 265.6410751028807], [357.6710390946502, 326.72646604938274]], "type": "seg"}, {"data": [[130.9278350515464, 14.781786941580771], [142.9553264604811, 0.6924398625429701]], "type": "seg"}, {"data": [[82.81786941580755, 160.1426116838488], [96.21993127147765, 160.1426116838488]], "type": "seg"}, {"data": [[130.9278350515464, 14.781786941580771], [131.6151202749141, 129.55841924398626]], "type": "seg"}, {"data": [[98.90510948905109, 4.8211678832117], [130.9278350515464, 14.781786941580771]], "type": "seg"}, {"data": [[106.83245456104254, 274.2814429012346], [176.49123371056243, 333.55838477366257]], "type": "seg"}, {"data": [[0.0, 92.83371913580247], [57.06661522633745, 99.6656378600823]], "type": "seg"}, {"data": [[161.51202749140893, 125.43470790378008], [162.40875912408757, 185.84306569343067]], "type": "seg"}, {"data": [[60.824742268041234, 60.82989690721651], [98.90510948905109, 4.8211678832117]], "type": "seg"}, {"data": [[247.82450274348426, 168.11878429355284], [247.15470679012347, 195.9153163580247]], "type": "seg"}, {"data": [[402.45283018867923, 56.877358490566024], [498.5915492957748, 26.76056338028169]], "type": "seg"}, {"data": [[460.4810996563574, 172.8573883161512], [496.90721649484533, 173.5446735395189]], "type": "seg"}, {"data": [[46.04810996563573, 94.16323024054984], [45.01718213058419, 218.56185567010309]], "type": "seg"}, {"data": [[36.08247422680412, 102.4106529209622], [36.42611683848797, 157.39347079037802]], "type": "seg"}, {"data": [[135.29878257887518, 192.90123456790127], [181.84960133744858, 203.28307184499317]], "type": "seg"}, {"data": [[1.718213058419245, 98.28694158075602], [36.08247422680412, 102.4106529209622]], "type": "seg"}, {"data": [[41.23711340206185, 94.50687285223368], [40.20618556701031, 219.2491408934708]], "type": "seg"}, {"data": [[171.82130584192439, 0.0], [172.16494845360825, 117.8745704467354]], "type": "seg"}, {"data": [[46.73539518900343, 158.42439862542957], [55.326460481099645, 158.0807560137457]], "type": "seg"}, {"data": [[216.21013374485597, 259.21103395061726], [356.86728395061726, 317.8851594650206]], "type": "seg"}, {"data": [[0.6697959533607682, 74.68224879972566], [60.61653377914953, 84.3942901234568]], "type": "seg"}, {"data": [[104.82306670096023, 193.57103052126203], [500.0026791838135, 291.36123971193416]], "type": "seg"}, {"data": [[215.80756013745702, 262.2044673539519], [215.12027491408932, 330.5893470790378]], "type": "seg"}, {"data": [[230.4098079561043, 21.76836848422497], [267.2485853909465, 99.46469907407409]], "type": "seg"}, {"data": [[59.79381443298969, 119.2491408934708], [72.5085910652921, 112.03264604810998]], "type": "seg"}, {"data": [[36.08247422680412, 102.4106529209622], [46.73539518900343, 83.85395189003438]], "type": "seg"}, {"data": [[131.6151202749141, 129.55841924398626], [245.36082474226802, 97.59965635738833]], "type": "seg"}, {"data": [[196.73403395311232, 163.556992724333], [201.39046079223922, 187.42118027485847]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/48.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [417, 500], "objects": [{"data": [[247.96360153256705, 69.54022988505749], [169.41954022988506, 166.8582375478927]], "type": "seg"}, {"data": [[286.27777777777777, 364.5593869731801], [286.27777777777777, 351.91570881226056]], "type": "seg"}, {"data": [[287.044061302682, 303.63984674329504], [341.2319587628866, 319.32989690721655]], "type": "seg"}, {"data": [[18.81746031746032, 458.7301587301587], [17.759259259259256, 26.45502645502648]], "type": "seg"}, {"data": [[183.16030883789062, 293.7406005859375], [183.29906542056074, 206.9963160757552]], "type": "seg"}, {"data": [[19.067010309278373, 272.42268041237116], [68.03608247422684, 272.93814432989694]], "type": "seg"}, {"data": [[190.2220507544582, 320.832261659808], [246.8198088134431, 368.3877743484225]], "type": "seg"}, {"data": [[2.150793650793645, 499.47089947089944], [18.81746031746032, 458.7301587301587]], "type": "seg"}, {"data": [[300.4540229885057, 97.50957854406131], [376.44548286604373, 40.60903426791265]], "type": "seg"}, {"data": [[62.582554517133964, 325.6557632398753], [63.36137071651091, 350.5778816199376]], "type": "seg"}, {"data": [[66.17195767195767, 341.7989417989418], [79.66402116402116, 340.74074074074076]], "type": "seg"}, {"data": [[342.6269841269841, 331.21693121693124], [360.819587628866, 334.27835051546396]], "type": "seg"}, {"data": [[89.72605363984673, 221.64750957854406], [88.9597701149425, 264.9425287356322]], "type": "seg"}, {"data": [[17.494708994708994, 170.37037037037038], [63.79100529100529, 171.42857142857144]], "type": "seg"}, {"data": [[62.582554517133964, 325.6557632398753], [52.67989417989418, 340.74074074074076]], "type": "seg"}, {"data": [[383.1956956956957, 330.955955955956], [416.6666666666667, 340.96596596596595]], "type": "seg"}, {"data": [[75.96031746031746, 176.71957671957674], [76.48941798941799, 317.46031746031747]], "type": "seg"}, {"data": [[52.67989417989418, 340.74074074074076], [20.52647975077881, 341.23208722741424]], "type": "seg"}, {"data": [[247.96360153256705, 69.54022988505749], [248.44708994708992, 303.1746031746032]], "type": "seg"}, {"data": [[126.25653720850481, 318.4879758230453], [162.4255186899863, 318.1530778463649]], "type": "seg"}, {"data": [[353.47354497354496, 343.9153439153439], [415.97422680412376, 344.07216494845363]], "type": "seg"}, {"data": [[97.45531121399178, 242.4661351165981], [109.17674039780522, 242.13123713991772]], "type": "seg"}, {"data": [[39.685567010309285, 219.3298969072165], [39.685567010309285, 199.22680412371133]], "type": "seg"}, {"data": [[63.79100529100529, 171.42857142857144], [19.45238095238096, 87.61904761904762]], "type": "seg"}, {"data": [[161.75572273662553, 313.12960819615915], [328.5349151234568, 500.0026791838135]], "type": "seg"}, {"data": [[80.92268041237114, 266.2371134020619], [125.64285714285715, 266.66666666666663]], "type": "seg"}, {"data": [[248.15940072016463, 304.42226080246917], [352.98246742112485, 343.94022205075447]], "type": "seg"}, {"data": [[357.17724867724866, 2.6455026455026753], [287.4272030651341, 71.45593869731802]], "type": "seg"}, {"data": [[131.89682539682536, 191.12169312169314], [160.30412371134022, 191.49484536082474]], "type": "seg"}, {"data": [[300.4540229885057, 97.50957854406131], [300.4540229885057, 261.87739463601537]], "type": "seg"}, {"data": [[377.4655172413793, 264.9425287356322], [300.4540229885057, 261.87739463601537]], "type": "seg"}, {"data": [[286.27777777777777, 364.5593869731801], [415.7796934865901, 445.01915708812265]], "type": "seg"}, {"data": [[183.29906542056074, 206.9963160757552], [210.03256704980845, 191.7624521072797]], "type": "seg"}, {"data": [[286.27777777777777, 364.5593869731801], [247.96360153256705, 364.5593869731801]], "type": "seg"}, {"data": [[342.0138888888889, 277.1990740740741], [342.5925925925926, 329.86111111111114]], "type": "seg"}, {"data": [[45.211226851851855, 194.2408264746228], [45.88102280521262, 224.38164437585738]], "type": "seg"}, {"data": [[52.45794392523366, 377.8364485981308], [21.30529595015576, 377.8364485981308]], "type": "seg"}, {"data": [[80.8809523809524, 293.8095238095238], [81.35714285714288, 201.9047619047619]], "type": "seg"}, {"data": [[354.531746031746, 450.7936507936508], [414.6302681992337, 450.38314176245217]], "type": "seg"}, {"data": [[354.00264550264546, 386.7724867724868], [413.79100529100526, 386.7724867724868]], "type": "seg"}, {"data": [[159.27319587628867, 307.47422680412376], [131.7804232804233, 307.4074074074074]], "type": "seg"}, {"data": [[63.79100529100529, 171.42857142857144], [64.05555555555554, 147.31800766283524]], "type": "seg"}, {"data": [[247.96360153256705, 402.10727969348665], [335.7030651340996, 499.808429118774]], "type": "seg"}, {"data": [[81.83333333333334, 221.42857142857142], [124.73711340206185, 220.36082474226805]], "type": "seg"}, {"data": [[81.35714285714288, 201.9047619047619], [126.11904761904763, 202.38095238095238]], "type": "seg"}, {"data": [[248.44708994708992, 303.1746031746032], [287.044061302682, 303.63984674329504]], "type": "seg"}, {"data": [[210.03256704980845, 191.7624521072797], [210.41570881226056, 309.00383141762455]], "type": "seg"}, {"data": [[80.8809523809524, 293.8095238095238], [126.11904761904763, 293.3333333333333]], "type": "seg"}, {"data": [[52.45794392523366, 377.8364485981308], [63.36137071651091, 350.5778816199376]], "type": "seg"}, {"data": [[360.61640211640207, 277.24867724867727], [383.36772486772486, 276.1904761904762]], "type": "seg"}, {"data": [[139.65245627572017, 192.23143861454048], [138.64776234567904, 271.26736111111114]], "type": "seg"}, {"data": [[168.27011494252872, 285.632183908046], [354.00264550264546, 386.7724867724868]], "type": "seg"}, {"data": [[21.30529595015576, 324.87694704049835], [62.582554517133964, 325.6557632398753]], "type": "seg"}, {"data": [[117.07142857142858, 222.38095238095238], [117.54761904761907, 265.7142857142857]], "type": "seg"}, {"data": [[251.73611111111111, 365.16203703703707], [354.7453703703704, 448.4953703703704]], "type": "seg"}, {"data": [[287.4272030651341, 71.45593869731802], [287.044061302682, 303.63984674329504]], "type": "seg"}, {"data": [[270.5689655172414, 383.7164750957855], [269.41954022988506, 425.86206896551727]], "type": "seg"}, {"data": [[68.86574074074075, 273.14814814814815], [69.44444444444444, 308.4490740740741]], "type": "seg"}, {"data": [[303.5191570881226, 410.1532567049809], [302.7528735632184, 463.0268199233717]], "type": "seg"}, {"data": [[360.61640211640207, 277.24867724867727], [360.819587628866, 334.27835051546396]], "type": "seg"}, {"data": [[198.5383141762452, 288.6973180076629], [210.03256704980845, 294.82758620689657]], "type": "seg"}, {"data": [[52.67989417989418, 340.74074074074076], [52.45794392523366, 377.8364485981308]], "type": "seg"}, {"data": [[382.46907216494844, 332.7319587628866], [360.819587628866, 334.27835051546396]], "type": "seg"}, {"data": [[183.16030883789062, 293.7406005859375], [198.5383141762452, 288.6973180076629]], "type": "seg"}, {"data": [[126.92633316186559, 177.83082561728398], [169.79327417695475, 178.16572359396434]], "type": "seg"}, {"data": [[125.96031746031746, 176.71957671957674], [126.50766283524905, 317.0498084291188]], "type": "seg"}, {"data": [[354.00264550264546, 386.7724867724868], [353.47354497354496, 343.9153439153439]], "type": "seg"}, {"data": [[62.203703703703695, 404.23280423280426], [18.02380952380952, 404.23280423280426]], "type": "seg"}, {"data": [[18.41938871742113, 224.38164437585738], [46.55081875857339, 224.38164437585738]], "type": "seg"}, {"data": [[97.41752577319588, 222.42268041237114], [97.41752577319588, 241.49484536082474]], "type": "seg"}, {"data": [[196.5952380952381, 228.57142857142856], [209.92857142857144, 224.76190476190476]], "type": "seg"}, {"data": [[287.4272030651341, 71.45593869731802], [247.96360153256705, 69.54022988505749]], "type": "seg"}, {"data": [[62.30952380952382, 318.0952380952381], [19.45238095238096, 316.66666666666663]], "type": "seg"}, {"data": [[131.89682539682536, 191.12169312169314], [131.7804232804233, 307.4074074074074]], "type": "seg"}, {"data": [[39.685567010309285, 199.22680412371133], [19.067010309278373, 199.22680412371133]], "type": "seg"}, {"data": [[383.36772486772486, 276.1904761904762], [382.46907216494844, 332.7319587628866]], "type": "seg"}, {"data": [[161.75670498084293, 312.0689655172414], [172.1015325670498, 311.6858237547893]], "type": "seg"}, {"data": [[376.44548286604373, 40.60903426791265], [377.4655172413793, 264.9425287356322]], "type": "seg"}, {"data": [[69.44282531738281, 334.4334411621094], [68.82550048828125, 307.44720458984375]], "type": "seg"}, {"data": [[68.82550048828125, 307.44720458984375], [62.30952380952382, 318.0952380952381]], "type": "seg"}, {"data": [[162.03703703703704, 319.44444444444446], [314.23611111111114, 498.2638888888889]], "type": "seg"}, {"data": [[160.30412371134022, 191.49484536082474], [159.27319587628867, 307.47422680412376]], "type": "seg"}, {"data": [[342.6269841269841, 275.13227513227514], [360.61640211640207, 277.24867724867727]], "type": "seg"}, {"data": [[18.41938871742113, 193.57103052126203], [45.211226851851855, 193.23613254458164]], "type": "seg"}, {"data": [[61.33505154639178, 279.639175257732], [62.522988505747094, 308.23754789272033]], "type": "seg"}, {"data": [[108.75773195876289, 240.97938144329896], [108.75773195876289, 220.87628865979383]], "type": "seg"}, {"data": [[8.22972972972974, 0.0], [75.96031746031746, 176.71957671957674]], "type": "seg"}, {"data": [[79.66402116402116, 340.74074074074076], [62.203703703703695, 404.23280423280426]], "type": "seg"}, {"data": [[21.357142857142865, 307.6190476190476], [68.82550048828125, 307.44720458984375]], "type": "seg"}, {"data": [[354.531746031746, 450.7936507936508], [355.09523809523813, 498.94179894179894]], "type": "seg"}, {"data": [[247.96360153256705, 364.5593869731801], [247.12433862433863, 408.994708994709]], "type": "seg"}, {"data": [[198.5383141762452, 288.6973180076629], [196.5952380952381, 228.57142857142856]], "type": "seg"}, {"data": [[66.17195767195767, 341.7989417989418], [69.44282531738281, 334.4334411621094]], "type": "seg"}, {"data": [[171.875, 165.50925925925927], [173.03240740740742, 286.4583333333333]], "type": "seg"}, {"data": [[313.6574074074074, 228.00925925925927], [354.7453703703704, 229.16666666666669]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/49.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 362], "objects": [{"data": [[38.70967741935484, 164.8709677419355], [50.56179775280899, 168.82771535580522]], "type": "seg"}, {"data": [[319.25154320987656, 147.56944444444446], [386.766975308642, 167.34182098765433]], "type": "seg"}, {"data": [[81.15671641791045, 306.1865671641791], [140.14336917562724, 361.2867383512545]], "type": "seg"}, {"data": [[320.21604938271605, 184.2206790123457], [388.695987654321, 199.17052469135803]], "type": "seg"}, {"data": [[458.6226851851852, 298.5146604938272], [182.77391975308643, 361.68981481481484]], "type": "seg"}, {"data": [[101.37795275590548, 137.88976377952758], [173.83512544802866, 104.33276888776001]], "type": "seg"}, {"data": [[22.22222222222222, 193.5448028673835], [38.70967741935484, 164.8709677419355]], "type": "seg"}, {"data": [[94.98207885304657, 245.87455197132618], [94.6236559139785, 305.7311827956989]], "type": "seg"}, {"data": [[425.7255859375, 154.56658935546875], [409.6774193548387, 158.4193548387097]], "type": "seg"}, {"data": [[409.6774193548387, 158.4193548387097], [409.3189964157706, 190.67741935483872]], "type": "seg"}, {"data": [[22.22222222222222, 193.5448028673835], [22.58064516129032, 166.663082437276]], "type": "seg"}, {"data": [[131.29921259842519, 256.0], [116.48745519713262, 256.98566308243727]], "type": "seg"}, {"data": [[240.6442901234568, 249.8070987654321], [241.6087962962963, 299.4791666666667]], "type": "seg"}, {"data": [[471.326164874552, 227.59498207885306], [471.6845878136201, 242.64874551971326]], "type": "seg"}, {"data": [[48.387096774193544, 150.17562724014337], [59.49820788530466, 130.82078853046596]], "type": "seg"}, {"data": [[97.20149253731341, 255.06716417910445], [97.13261648745518, 231.89605734767025]], "type": "seg"}, {"data": [[423.69402985074623, 246.85820895522386], [469.0944881889764, 254.81889763779526]], "type": "seg"}, {"data": [[165.23297491039426, 107.52329749103943], [164.87455197132616, 101.78853046594982]], "type": "seg"}, {"data": [[317.20430107526886, 361.64516129032256], [497.84946236559136, 312.5412186379928]], "type": "seg"}, {"data": [[169.53405017921145, 265.22939068100357], [178.8556365966797, 265.07904052734375]], "type": "seg"}, {"data": [[454.5275590551181, 211.51181102362204], [480.41044776119395, 207.67910447761193]], "type": "seg"}, {"data": [[169.48818897637796, 248.91338582677167], [286.3799283154122, 255.1935483870968]], "type": "seg"}, {"data": [[480.41044776119395, 207.67910447761193], [480.41044776119395, 227.455223880597]], "type": "seg"}, {"data": [[38.70967741935484, 164.8709677419355], [39.06810035842293, 131.53763440860217]], "type": "seg"}, {"data": [[174.06716417910445, 157.30597014925374], [175.62724014336916, 235.48028673835125]], "type": "seg"}, {"data": [[173.83512544802866, 104.33276888776001], [310.03584229390674, 144.83456100245536]], "type": "seg"}, {"data": [[500.57870370370375, 317.8047839506173], [344.8109567901235, 361.2075617283951]], "type": "seg"}, {"data": [[413.48314606741576, 243.73408239700373], [413.9763779527559, 261.90551181102364]], "type": "seg"}, {"data": [[117.56272401433691, 305.3727598566308], [311.38059701492534, 282.3059701492537]], "type": "seg"}, {"data": [[300.35842293906813, 103.22222222222221], [425.80645161290323, 150.89247311827958]], "type": "seg"}, {"data": [[389.69331986307304, 163.3915937542481], [389.5841008832908, 240.17253654117084]], "type": "seg"}, {"data": [[116.48745519713262, 256.98566308243727], [117.56272401433691, 305.3727598566308]], "type": "seg"}, {"data": [[252.55905511811022, 359.93700787401576], [494.2164179104477, 302.8283582089552]], "type": "seg"}, {"data": [[304.6594982078853, 111.10752688172043], [425.7255859375, 154.56658935546875]], "type": "seg"}, {"data": [[436.7069615912209, 244.8104209533608], [471.8712491426612, 242.80103309327848]], "type": "seg"}, {"data": [[59.49820788530466, 130.82078853046596], [159.1417910447761, 145.73880597014926]], "type": "seg"}, {"data": [[454.5275590551181, 211.51181102362204], [454.13385826771656, 227.6535433070866]], "type": "seg"}, {"data": [[43.3253288269043, 166.411865234375], [27.05223880597015, 194.2462686567164]], "type": "seg"}, {"data": [[94.6236559139785, 305.7311827956989], [0.7168458781361977, 307.8817204301075]], "type": "seg"}, {"data": [[174.76851851851853, 140.0462962962963], [174.76851851851853, 155.6712962962963]], "type": "seg"}, {"data": [[304.2993469238281, 120.95146179199219], [409.6774193548387, 158.4193548387097]], "type": "seg"}, {"data": [[286.3799283154122, 255.1935483870968], [287.4551971326165, 244.79928315412187]], "type": "seg"}, {"data": [[310.03584229390685, 237.27240143369175], [413.59161376953125, 247.73013305664062]], "type": "seg"}, {"data": [[423.69402985074623, 246.85820895522386], [413.59161376953125, 247.73013305664062]], "type": "seg"}, {"data": [[310.08873456790127, 144.67592592592592], [309.1242283950617, 232.44598765432102]], "type": "seg"}, {"data": [[287.20472440944866, 168.20472440944886], [286.7383512544802, 180.67685490926542]], "type": "seg"}, {"data": [[116.48745519713262, 256.98566308243727], [111.02941176470588, 256.12254901960785]], "type": "seg"}, {"data": [[480.41044776119395, 207.67910447761193], [498.56630824372763, 211.10752688172045]], "type": "seg"}, {"data": [[53.17164179104478, 307.3059701492537], [93.18996415770607, 361.2867383512545]], "type": "seg"}, {"data": [[269.5340501792115, 97.48745519713262], [268.4701492537313, 130.8134328358209]], "type": "seg"}, {"data": [[48.74551971326165, 245.87455197132618], [94.98207885304657, 245.87455197132618]], "type": "seg"}, {"data": [[397.01099150848387, 170.8184843794412], [409.02507928453156, 174.75036765160226]], "type": "seg"}, {"data": [[21.146953405017918, 307.5232974910394], [45.878136200716845, 361.2867383512545]], "type": "seg"}, {"data": [[174.76851851851853, 155.0925925925926], [285.3009259259259, 179.39814814814815]], "type": "seg"}, {"data": [[164.87455197132616, 101.78853046594982], [214.6953405017921, 77.05734767025089]], "type": "seg"}, {"data": [[215.0848765432099, 78.125], [215.56712962962965, 114.77623456790124]], "type": "seg"}, {"data": [[44.086021505376344, 196.77060931899643], [22.22222222222222, 193.5448028673835]], "type": "seg"}, {"data": [[425.80645161290323, 150.89247311827958], [423.69402985074623, 246.85820895522386]], "type": "seg"}, {"data": [[320.21604938271605, 157.69675925925927], [388.695987654321, 177.9513888888889]], "type": "seg"}, {"data": [[39.06810035842293, 131.53763440860217], [55.19713261648746, 135.12186379928318]], "type": "seg"}, {"data": [[47.44094488188976, 215.84251968503938], [48.387096774193544, 150.17562724014337]], "type": "seg"}, {"data": [[173.32089552238804, 139.7686567164179], [159.1417910447761, 145.73880597014926]], "type": "seg"}, {"data": [[319.96268656716416, 233.79850746268656], [318.7129211425781, 126.07630920410156]], "type": "seg"}, {"data": [[435.2611940298507, 203.57462686567163], [434.88805970149247, 244.99253731343282]], "type": "seg"}, {"data": [[425.089605734767, 200.35483870967744], [435.2611940298507, 203.57462686567163]], "type": "seg"}, {"data": [[59.49820788530466, 130.82078853046596], [58.422939068100355, 232.25448028673836]], "type": "seg"}, {"data": [[396.0820895522388, 162.52985074626864], [396.0820895522388, 242.38059701492537]], "type": "seg"}, {"data": [[117.56272401433691, 305.3727598566308], [109.67741935483869, 299.9964157706093]], "type": "seg"}, {"data": [[97.13261648745518, 231.89605734767025], [58.422939068100355, 232.25448028673836]], "type": "seg"}, {"data": [[192.90123456790124, 246.9135802469136], [192.90123456790124, 304.78395061728395]], "type": "seg"}, {"data": [[39.06810035842293, 131.53763440860217], [22.58064516129032, 166.663082437276]], "type": "seg"}, {"data": [[175.92592592592592, 142.36111111111111], [287.03703703703707, 168.40277777777777]], "type": "seg"}, {"data": [[280.6712962962963, 251.25385802469137], [279.7067901234568, 289.83410493827165]], "type": "seg"}, {"data": [[300.35842293906813, 103.22222222222221], [299.2831541218638, 140.85663082437276]], "type": "seg"}, {"data": [[163.09531464334708, 146.01551783264748], [162.4255186899863, 235.09837962962965]], "type": "seg"}, {"data": [[174.06716417910445, 157.30597014925374], [162.40157480314957, 159.93700787401576]], "type": "seg"}, {"data": [[424.44029850746267, 213.27611940298507], [435.2611940298507, 215.51492537313433]], "type": "seg"}, {"data": [[304.2910447761194, 133.42537313432834], [318.8432835820895, 138.27611940298507]], "type": "seg"}, {"data": [[396.0820895522388, 194.61940298507463], [424.9574890136719, 189.46047973632812]], "type": "seg"}, {"data": [[173.83512544802866, 104.33276888776001], [173.32089552238804, 139.7686567164179]], "type": "seg"}, {"data": [[303.584229390681, 140.49820788530468], [304.6594982078853, 111.10752688172043]], "type": "seg"}, {"data": [[268.8432835820895, 114.0223880597015], [300.35842293906813, 103.22222222222221]], "type": "seg"}, {"data": [[214.6953405017921, 77.05734767025089], [269.5340501792115, 97.48745519713262]], "type": "seg"}, {"data": [[287.4551971326165, 244.79928315412187], [175.62724014336916, 235.48028673835125]], "type": "seg"}, {"data": [[320.6983024691358, 211.22685185185188], [388.21373456790127, 222.31867283950618]], "type": "seg"}, {"data": [[413.48314606741576, 243.73408239700373], [310.2611940298507, 233.05223880597015]], "type": "seg"}, {"data": [[435.0241394042969, 229.8878936767578], [471.326164874552, 227.59498207885306]], "type": "seg"}, {"data": [[425.82947530864203, 191.93672839506175], [463.44521604938274, 208.33333333333334]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/51.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 375], "objects": [{"data": [[255.62015503875972, 0.8720930232558138], [254.45736434108528, 125.2906976744186]], "type": "seg"}, {"data": [[206.40432098765433, 320.21604938271605], [248.36033950617286, 314.9112654320988]], "type": "seg"}, {"data": [[253.29457364341084, 160.9496124031008], [250.96899224806202, 217.9263565891473]], "type": "seg"}, {"data": [[173.61111111111111, 351.08024691358025], [361.2075617283951, 315.39351851851853]], "type": "seg"}, {"data": [[263.79243827160496, 374.71064814814815], [430.1697530864198, 336.6126543209877]], "type": "seg"}, {"data": [[191.45447530864197, 319.25154320987656], [176.9868827160494, 314.42901234567904]], "type": "seg"}, {"data": [[180.4263565891473, 218.7015503875969], [129.6511627906977, 219.86434108527132]], "type": "seg"}, {"data": [[180.03875968992247, 252.42248062015506], [131.97674418604652, 255.5232558139535]], "type": "seg"}, {"data": [[176.50462962962965, 295.62114197530866], [78.125, 337.09490740740745]], "type": "seg"}, {"data": [[385.80246913580254, 82.71980024005488], [385.46757115912214, 123.91225137174213]], "type": "seg"}, {"data": [[311.4341085271318, 15.60077519379845], [309.8837209302326, 178.77906976744185]], "type": "seg"}, {"data": [[28.783783783783782, 54.32432432432432], [26.756756756756754, 227.8378378378378]], "type": "seg"}, {"data": [[315.31531531531533, 19.98873873873874], [394.14414414414415, 0.8445945945945946]], "type": "seg"}, {"data": [[249.4186046511628, 244.67054263565893], [376.5503875968992, 262.5]], "type": "seg"}, {"data": [[315.59684684684686, 19.98873873873874], [313.3445945945946, 174.268018018018]], "type": "seg"}, {"data": [[392.05426356589146, 308.23643410852713], [453.6821705426357, 297.3837209302325]], "type": "seg"}, {"data": [[395.5426356589147, 246.22093023255815], [392.05426356589146, 308.23643410852713]], "type": "seg"}, {"data": [[249.32484567901236, 261.8634259259259], [248.36033950617286, 310.570987654321]], "type": "seg"}, {"data": [[4.844961240310077, 222.18992248062017], [6.395348837209312, 42.73255813953488]], "type": "seg"}, {"data": [[181.38798520742967, 89.0647592036481], [179.75875180736293, 239.9046181598265]], "type": "seg"}, {"data": [[205.62015503875972, 67.53875968992247], [202.59259259259258, 234.90740740740742]], "type": "seg"}, {"data": [[355.2927927927928, 121.3400900900901], [321.22747747747746, 173.70495495495496]], "type": "seg"}, {"data": [[178.43364197530866, 308.15972222222223], [208.33333333333334, 303.3371913580247]], "type": "seg"}, {"data": [[210.26234567901236, 256.55864197530866], [209.29783950617286, 302.3726851851852]], "type": "seg"}, {"data": [[114.92248062015504, 67.53875968992247], [194.7674418604651, 76.84108527131782]], "type": "seg"}, {"data": [[173.5135135135135, 341.3513513513513], [171.89189189189187, 368.10810810810807]], "type": "seg"}, {"data": [[1.4467592592592593, 229.55246913580248], [77.64274691358025, 238.23302469135805]], "type": "seg"}, {"data": [[181.58914728682169, 153.97286821705427], [131.2015503875969, 152.81007751937986]], "type": "seg"}, {"data": [[334.89797668038415, 40.18775720164609], [333.89328275034296, 79.03592249657065]], "type": "seg"}, {"data": [[6.395348837209312, 42.73255813953488], [205.62015503875972, 67.53875968992247]], "type": "seg"}, {"data": [[218.94290123456793, 347.704475308642], [374.2283950617284, 317.8047839506173]], "type": "seg"}, {"data": [[459.17792792792795, 0.8445945945945946], [457.7702702702703, 178.490990990991]], "type": "seg"}, {"data": [[162.92334000667336, 243.0273155099544], [190.89184670781893, 246.69309066010456]], "type": "seg"}, {"data": [[138.64864864864862, 374.10810810810807], [384.32432432432427, 326.4324324324324]], "type": "seg"}, {"data": [[379.6511627906977, 0.48449612403100784], [311.4341085271318, 15.60077519379845]], "type": "seg"}, {"data": [[78.60725308641976, 238.23302469135805], [127.31481481481482, 230.03472222222223]], "type": "seg"}, {"data": [[413.264103223594, 7.702653463648835], [420.9667566872428, 17.414694787379975]], "type": "seg"}, {"data": [[59.189189189189186, 309.7297297297297], [60.4054054054054, 374.18918918918916]], "type": "seg"}, {"data": [[156.89189189189187, 348.2432432432432], [160.13513513513513, 369.32432432432427]], "type": "seg"}, {"data": [[218.46064814814815, 126.35030864197532], [218.94290123456793, 157.69675925925927]], "type": "seg"}, {"data": [[382.3198198198198, 244.65090090090092], [380.0675675675676, 304.89864864864865]], "type": "seg"}, {"data": [[275.0, 207.32758620689657], [276.14942528735634, 194.1091954022989]], "type": "seg"}, {"data": [[98.64341085271319, 80.71705426356588], [97.09302325581395, 234.20542635658916]], "type": "seg"}, {"data": [[283.52713178294573, 324.12790697674416], [232.36434108527135, 330.71705426356584]], "type": "seg"}, {"data": [[232.75193798449612, 254.74806201550388], [232.36434108527135, 330.71705426356584]], "type": "seg"}, {"data": [[97.09302325581395, 186.53100775193798], [46.31782945736434, 187.3062015503876]], "type": "seg"}, {"data": [[396.8918918918919, 72.56756756756756], [398.9189189189189, 122.83783783783782]], "type": "seg"}, {"data": [[218.46064814814815, 126.35030864197532], [269.09722222222223, 127.79706790123457]], "type": "seg"}, {"data": [[0.5813953488372121, 327.2286821705426], [59.883720930232556, 338.8565891472868]], "type": "seg"}, {"data": [[210.26234567901236, 302.85493827160496], [231.96373456790124, 309.6064814814815]], "type": "seg"}, {"data": [[178.37837837837836, 330.40540540540536], [268.78378378378375, 315.40540540540536]], "type": "seg"}, {"data": [[176.5503875968992, 338.0813953488372], [90.50387596899226, 371.4147286821705]], "type": "seg"}, {"data": [[97.86821705426355, 115.21317829457364], [47.09302325581396, 111.33720930232558]], "type": "seg"}, {"data": [[191.43492450784117, 247.10039901012124], [230.53652610944278, 245.4711656100545]], "type": "seg"}, {"data": [[334.3398133859168, 84.56173911179698], [334.61889503315047, 134.51735396662096]], "type": "seg"}, {"data": [[250.77160493827162, 315.39351851851853], [281.15354938271605, 323.59182098765433]], "type": "seg"}, {"data": [[395.5426356589147, 246.22093023255815], [383.91472868217056, 243.8953488372093]], "type": "seg"}, {"data": [[285.4651162790698, 251.25968992248062], [283.52713178294573, 324.12790697674416]], "type": "seg"}, {"data": [[199.4186046511628, 248.9341085271318], [198.75525665283203, 320.8035888671875]], "type": "seg"}, {"data": [[130.03875968992247, 230.3294573643411], [131.58914728682169, 85.36821705426357]], "type": "seg"}, {"data": [[313.27496337890625, 253.62600708007812], [312.59689922480624, 271.02713178294573]], "type": "seg"}, {"data": [[365.7094594594595, 40.822072072072075], [363.73873873873873, 125.0]], "type": "seg"}, {"data": [[199.62962962962962, 238.9814814814815], [162.42243194580078, 242.69187927246094]], "type": "seg"}, {"data": [[390.1561428326475, 17.74959276406036], [418.62247085048017, 23.44285836762689]], "type": "seg"}, {"data": [[358.1081081081081, 120.4954954954955], [414.4144144144144, 173.42342342342343]], "type": "seg"}, {"data": [[219.90740740740742, 157.21450617283952], [268.13271604938274, 157.69675925925927]], "type": "seg"}, {"data": [[29.651162790697683, 53.58527131782945], [109.49612403100774, 66.37596899224806]], "type": "seg"}, {"data": [[313.3445945945946, 175.67567567567568], [457.48873873873873, 178.20945945945945]], "type": "seg"}, {"data": [[80.81395348837209, 77.22868217054263], [80.03875968992249, 235.36821705426357]], "type": "seg"}, {"data": [[309.8837209302326, 178.77906976744185], [461.8217054263566, 183.04263565891475]], "type": "seg"}, {"data": [[442.4418604651163, 238.85658914728683], [395.5426356589147, 246.22093023255815]], "type": "seg"}, {"data": [[164.53488372093022, 87.3062015503876], [162.27456665039062, 253.5685577392578]], "type": "seg"}, {"data": [[0.9689922480620154, 355.13565891472865], [57.55813953488372, 368.3139534883721]], "type": "seg"}, {"data": [[47.43243243243243, 224.59459459459458], [97.7027027027027, 221.35135135135133]], "type": "seg"}, {"data": [[313.27496337890625, 253.62600708007812], [358.3333333333333, 248.546511627907]], "type": "seg"}, {"data": [[269.09722222222223, 129.24382716049382], [268.13271604938274, 157.69675925925927]], "type": "seg"}, {"data": [[276.14942528735634, 194.1091954022989], [468.67816091954023, 204.45402298850576]], "type": "seg"}, {"data": [[131.58914728682169, 85.36821705426357], [181.2015503875969, 89.24418604651163]], "type": "seg"}, {"data": [[412.59430727023323, 69.32388117283952], [412.25940929355284, 133.62429269547326]], "type": "seg"}, {"data": [[394.34236754115227, 5.023469650205762], [394.06328589391865, 56.09541109396434]], "type": "seg"}, {"data": [[132.6195987654321, 231.4814814814815], [133.10185185185185, 297.0679012345679]], "type": "seg"}, {"data": [[130.81395348837208, 118.7015503875969], [181.2015503875969, 121.80232558139534]], "type": "seg"}, {"data": [[131.17283950617283, 186.63194444444446], [179.88040123456793, 187.1141975308642]], "type": "seg"}, {"data": [[237.75077160493828, 261.8634259259259], [237.75077160493828, 311.05324074074076]], "type": "seg"}, {"data": [[64.92248062015504, 75.67829457364341], [62.59689922480621, 234.59302325581396]], "type": "seg"}, {"data": [[447.75859482167357, 78.70102451989027], [442.7351251714678, 171.46776406035667]], "type": "seg"}, {"data": [[422.28682170542635, 373.7403100775193], [499.41860465116275, 350.8720930232558]], "type": "seg"}, {"data": [[162.42243194580078, 242.69187927246094], [161.85185185185185, 287.8703703703704]], "type": "seg"}, {"data": [[190.89147286821708, 246.22093023255815], [190.50387596899225, 317.92635658914725]], "type": "seg"}, {"data": [[500.2702702702702, 276.08108108108104], [484.86486486486484, 292.70270270270265]], "type": "seg"}, {"data": [[199.4186046511628, 248.9341085271318], [232.75193798449612, 254.74806201550388]], "type": "seg"}, {"data": [[135.85271317829455, 283.8178294573643], [177.71317829457365, 295.4457364341085]], "type": "seg"}, {"data": [[461.8217054263566, 183.04263565891475], [462.98449612403107, 0.8720930232558138]], "type": "seg"}, {"data": [[358.3333333333333, 248.546511627907], [299.4186046511628, 240.79457364341087]], "type": "seg"}, {"data": [[453.22859510745315, 0.8372449417009602], [446.8097172210791, 76.7474529892547]], "type": "seg"}, {"data": [[326.48533950617286, 375.6751543209877], [461.033950617284, 340.9529320987655]], "type": "seg"}, {"data": [[389.6604938271605, 352.0447530864198], [452.83564814814815, 335.64814814814815]], "type": "seg"}, {"data": [[135.85271317829455, 283.8178294573643], [195.54263565891472, 278.391472868217]], "type": "seg"}, {"data": [[47.86821705426357, 73.74031007751938], [98.64341085271319, 80.71705426356588]], "type": "seg"}, {"data": [[252.2183641975309, 260.89891975308643], [379.5331790123457, 282.60030864197535]], "type": "seg"}, {"data": [[212.5563063063063, 224.0990990990991], [212.5563063063063, 240.70945945945948]], "type": "seg"}, {"data": [[232.75193798449612, 254.74806201550388], [285.4651162790698, 251.25968992248062]], "type": "seg"}, {"data": [[95.00385802469137, 308.641975308642], [133.58410493827162, 296.58564814814815]], "type": "seg"}, {"data": [[383.91472868217056, 243.8953488372093], [433.91472868217056, 236.14341085271317]], "type": "seg"}, {"data": [[46.31782945736434, 233.43023255813955], [47.86821705426357, 73.74031007751938]], "type": "seg"}, {"data": [[177.71317829457365, 295.4457364341085], [176.5503875968992, 338.0813953488372]], "type": "seg"}, {"data": [[328.5349151234568, 25.787144204389577], [335.2328746570645, 38.848165294924556]], "type": "seg"}, {"data": [[200.13503086419755, 322.62731481481484], [233.89274691358025, 332.2723765432099]], "type": "seg"}, {"data": [[0.9645061728395062, 300.4436728395062], [73.78472222222223, 310.570987654321]], "type": "seg"}, {"data": [[192.4189814814815, 317.3225308641976], [238.23302469135805, 311.05324074074076]], "type": "seg"}, {"data": [[74.59459459459458, 310.94594594594594], [76.21621621621621, 336.08108108108104]], "type": "seg"}, {"data": [[194.7674418604651, 76.84108527131782], [192.2222222222222, 233.42592592592595]], "type": "seg"}, {"data": [[299.4186046511628, 240.79457364341087], [265.2298850574713, 245.83333333333337]], "type": "seg"}, {"data": [[148.25581395348837, 86.91860465116278], [145.93023255813955, 255.13565891472868]], "type": "seg"}, {"data": [[485.2702702702702, 293.10810810810807], [500.2702702702702, 312.97297297297297]], "type": "seg"}, {"data": [[212.984496124031, 271.02713178294573], [392.05426356589146, 308.23643410852713]], "type": "seg"}, {"data": [[178.43364197530866, 375.1929012345679], [276.33101851851853, 355.9027777777778]], "type": "seg"}, {"data": [[47.09302325581396, 149.3217054263566], [97.48062015503875, 150.484496124031]], "type": "seg"}, {"data": [[112.36496913580248, 65.10416666666667], [110.91820987654322, 231.4814814814815]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/54.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 375], "objects": [{"data": [[1.8072289156626837, 237.19879518072287], [75.34102630615234, 232.61471557617188]], "type": "seg"}, {"data": [[180.95238095238096, 321.6269841269841], [117.5, 332.2]], "type": "seg"}, {"data": [[74.69646453857422, 213.64614868164062], [8.700000000000003, 217.6]], "type": "seg"}, {"data": [[75.83733133433277, 247.2203898050974], [1.204819277108463, 253.46385542168673]], "type": "seg"}, {"data": [[440.1162790697675, 238.08139534883722], [500.0, 248.12640660165042]], "type": "seg"}, {"data": [[313.9, 61.60000000000001], [500.0, 8.089955022488653]], "type": "seg"}, {"data": [[177.38095238095238, 60.91269841269841], [325.46251874062966, 0.0]], "type": "seg"}, {"data": [[101.32458770614687, 36.575712143927944], [105.07271364317836, 320.68365817091444]], "type": "seg"}, {"data": [[18.80787037037037, 207.8510802469136], [65.10416666666667, 205.92206790123458]], "type": "seg"}, {"data": [[196.29999999999998, 248.39999999999998], [237.647705078125, 242.93341064453125]], "type": "seg"}, {"data": [[266.86746987951807, 146.83734939759034], [267.85714285714283, 222.02380952380952]], "type": "seg"}, {"data": [[187.67682613168725, 308.2400977366255], [210.98572530864197, 302.61381172839504]], "type": "seg"}, {"data": [[307.7519379844961, 220.63953488372093], [306.60919540229884, 97.27011494252874]], "type": "seg"}, {"data": [[431.4470720720721, 75.77890390390391], [430.9778528528529, 125.51614114114116]], "type": "seg"}, {"data": [[16.5, 158.39999999999998], [64.30000000000001, 157.79999999999998]], "type": "seg"}, {"data": [[65.5, 206.6], [63.5, 109.4]], "type": "seg"}, {"data": [[442.2260802469136, 171.19984567901236], [440.2970679012346, 236.7862654320988]], "type": "seg"}, {"data": [[47.260802469135804, 258.48765432098764], [70.89120370370371, 256.55864197530866]], "type": "seg"}, {"data": [[237.35632183908046, 199.2816091954023], [313.9, 61.60000000000001]], "type": "seg"}, {"data": [[75.34102630615234, 232.61471557617188], [104.81927710843377, 255.27108433734935]], "type": "seg"}, {"data": [[313.0952380952381, 87.89682539682539], [301.58730158730157, 90.27777777777779]], "type": "seg"}, {"data": [[275.36651234567904, 164.93055555555557], [307.19521604938274, 165.41280864197532]], "type": "seg"}, {"data": [[109.57046476761613, 28.329835082458658], [117.5, 332.2]], "type": "seg"}, {"data": [[5.300000000000011, 96.4], [70.79985809326172, 98.97468566894531]], "type": "seg"}, {"data": [[178.50000000000003, 79.60000000000001], [244.1, 52.8]], "type": "seg"}, {"data": [[195.1, 191.6], [196.29999999999998, 267.59999999999997]], "type": "seg"}, {"data": [[267.85714285714283, 222.02380952380952], [312.3973753552484, 233.30392974552186]], "type": "seg"}, {"data": [[5.300000000000011, 96.4], [8.700000000000003, 217.6]], "type": "seg"}, {"data": [[177.03673163418284, 34.326836581709074], [180.95238095238096, 321.6269841269841]], "type": "seg"}, {"data": [[70.5899550224887, 92.79760119940022], [75.83733133433277, 247.2203898050974]], "type": "seg"}, {"data": [[274.390243902439, 136.89024390243904], [274.8062015503876, 214.05038759689924]], "type": "seg"}, {"data": [[433.0632716049383, 170.7175925925926], [499.6141975308642, 172.64660493827162]], "type": "seg"}, {"data": [[274.8062015503876, 214.05038759689924], [307.7519379844961, 220.63953488372093]], "type": "seg"}, {"data": [[500.0, 48.04216867469879], [419.27710843373495, 64.90963855421685]], "type": "seg"}, {"data": [[185.1, 192.39999999999998], [244.1, 52.8]], "type": "seg"}, {"data": [[387.8118569958848, 141.05902777777777], [453.3179012345679, 137.8440072016461]], "type": "seg"}, {"data": [[500.0, 64.30722891566265], [431.32530120481925, 75.15060240963855]], "type": "seg"}, {"data": [[419.481981981982, 65.4560810810811], [418.0743243243244, 126.21996996996998]], "type": "seg"}, {"data": [[101.32458770614687, 36.575712143927944], [109.57046476761613, 28.329835082458658]], "type": "seg"}, {"data": [[415.06024096385545, 255.8734939759036], [500.0, 273.9457831325301]], "type": "seg"}, {"data": [[14.174330580580582, 106.71478770437105], [17.758644060727395, 208.86772188855525]], "type": "seg"}, {"data": [[117.5, 332.2], [105.07271364317836, 320.68365817091444]], "type": "seg"}, {"data": [[428.48837209302326, 245.05813953488374], [500.0, 257.9396096783829]], "type": "seg"}, {"data": [[237.647705078125, 242.93341064453125], [500.0, 325.7777686086813]], "type": "seg"}, {"data": [[195.1, 191.6], [185.1, 192.39999999999998]], "type": "seg"}, {"data": [[109.57046476761613, 28.329835082458658], [177.03673163418284, 34.326836581709074]], "type": "seg"}, {"data": [[61.246141975308646, 161.07253086419755], [62.21064814814815, 202.5462962962963]], "type": "seg"}, {"data": [[417.37049549549556, 146.1617867867868], [415.49361861861865, 255.9590840840841]], "type": "seg"}, {"data": [[211.38760288065845, 302.61381172839504], [202.14441872427983, 295.7818930041152]], "type": "seg"}, {"data": [[185.70000000000002, 269.59999999999997], [237.7563718140929, 259.2143928035981]], "type": "seg"}, {"data": [[237.7563718140929, 259.2143928035981], [237.35632183908046, 199.2816091954023]], "type": "seg"}, {"data": [[429.57019519519525, 144.51951951951955], [429.80480480480486, 243.75938438438442]], "type": "seg"}, {"data": [[2.374062968515659, 89.04947526236873], [70.5899550224887, 92.79760119940022]], "type": "seg"}, {"data": [[21.017110860860864, 160.96825992659328], [22.157574240907575, 205.60925508842178]], "type": "seg"}, {"data": [[182.45241769547326, 301.40817901234567], [188.0787037037037, 307.4363425925926]], "type": "seg"}, {"data": [[306.60919540229884, 97.27011494252874], [296.2643678160919, 99.56896551724138]], "type": "seg"}, {"data": [[237.7563718140929, 259.2143928035981], [498.8095238095238, 355.75396825396825]], "type": "seg"}, {"data": [[14.900000000000006, 107.0], [63.5, 109.4]], "type": "seg"}, {"data": [[75.83733133433277, 247.2203898050974], [103.61445783132532, 270.3313253012048]], "type": "seg"}, {"data": [[185.1, 192.39999999999998], [185.70000000000002, 269.59999999999997]], "type": "seg"}, {"data": [[182.05054012345678, 301.0063014403292], [201.74254115226339, 296.1837705761317]], "type": "seg"}, {"data": [[244.1, 52.8], [313.9, 61.60000000000001]], "type": "seg"}, {"data": [[312.3973753552484, 233.30392974552186], [313.0952380952381, 87.89682539682539]], "type": "seg"}, {"data": [[195.1, 203.0], [237.35632183908046, 199.2816091954023]], "type": "seg"}, {"data": [[70.5899550224887, 92.79760119940022], [101.30000000000001, 80.60000000000001]], "type": "seg"}, {"data": [[430.1697530864198, 163.96604938271605], [500.096450617284, 166.85956790123458]], "type": "seg"}, {"data": [[275.36651234567904, 159.14351851851853], [307.19521604938274, 159.14351851851853]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/55.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 417], "objects": [{"data": [[55.387931034482875, 350.0948275862069], [422.6293103448277, 407.42241379310343]], "type": "seg"}, {"data": [[131.68103448275872, 29.405172413793075], [21.33620689655183, 80.26724137931032]], "type": "seg"}, {"data": [[131.68103448275872, 29.405172413793075], [436.4224137931035, 50.52586206896551]], "type": "seg"}, {"data": [[51.508620689655174, 222.07758620689657], [36.853448275862064, 96.2155172413793]], "type": "seg"}, {"data": [[36.853448275862064, 96.2155172413793], [229.0948275862069, 110.8706896551724]], "type": "seg"}, {"data": [[229.0948275862069, 110.8706896551724], [226.5086206896552, 243.19827586206898]], "type": "seg"}, {"data": [[51.508620689655174, 222.07758620689657], [226.5086206896552, 243.19827586206898]], "type": "seg"}, {"data": [[235.99137931034485, 111.73275862068965], [233.4051724137931, 243.19827586206898]], "type": "seg"}, {"data": [[233.4051724137931, 243.19827586206898], [431.6810344827586, 266.4741379310345]], "type": "seg"}, {"data": [[431.6810344827586, 266.4741379310345], [455.8189655172414, 129.83620689655172]], "type": "seg"}, {"data": [[235.99137931034485, 111.73275862068965], [455.8189655172414, 129.83620689655172]], "type": "seg"}, {"data": [[52.80172413793102, 233.71551724137933], [64.00862068965517, 336.30172413793105]], "type": "seg"}, {"data": [[64.00862068965517, 336.30172413793105], [223.92241379310343, 363.4568965517242]], "type": "seg"}, {"data": [[223.92241379310343, 363.4568965517242], [228.23275862068965, 256.9913793103449]], "type": "seg"}, {"data": [[52.80172413793102, 233.71551724137933], [228.23275862068965, 256.9913793103449]], "type": "seg"}, {"data": [[234.26724137931038, 257.4224137931035], [229.95689655172416, 364.3189655172414]], "type": "seg"}, {"data": [[229.95689655172416, 364.3189655172414], [410.5603448275863, 391.47413793103453]], "type": "seg"}, {"data": [[410.5603448275863, 391.47413793103453], [430.8189655172414, 281.1293103448276]], "type": "seg"}, {"data": [[234.26724137931038, 257.4224137931035], [430.8189655172414, 281.1293103448276]], "type": "seg"}, {"data": [[235.99137931034485, 143.6293103448276], [415.30172413793105, 160.4396551724138]], "type": "seg"}, {"data": [[415.30172413793105, 160.4396551724138], [418.3189655172414, 126.81896551724137]], "type": "seg"}, {"data": [[431.25, 128.11206896551724], [425.2155172413793, 173.80172413793105]], "type": "seg"}, {"data": [[422.6293103448277, 407.42241379310343], [474.3534482758621, 116.9051724137931]], "type": "seg"}, {"data": [[21.33620689655183, 80.26724137931032], [474.3534482758621, 116.9051724137931]], "type": "seg"}, {"data": [[474.3534482758621, 116.9051724137931], [436.4224137931035, 50.52586206896551]], "type": "seg"}, {"data": [[21.33620689655183, 80.26724137931032], [55.387931034482875, 350.0948275862069]], "type": "seg"}, {"data": [[198.49137931034485, 239.75], [226.9396551724138, 186.73275862068965]], "type": "seg"}, {"data": [[269.1810344827586, 148.80172413793105], [234.26724137931038, 227.25]], "type": "seg"}, {"data": [[254.52586206896555, 246.21551724137933], [291.594827586207, 149.23275862068965]], "type": "seg"}, {"data": [[334.69827586206895, 153.11206896551724], [316.594827586207, 253.54310344827587]], "type": "seg"}, {"data": [[378.66379310344826, 158.2844827586207], [380.3879310344828, 261.30172413793105]], "type": "seg"}, {"data": [[262.7155172413793, 38.02586206896551], [210.56034482758625, 94.49137931034481]], "type": "seg"}, {"data": [[173.49137931034485, 32.85344827586206], [83.83620689655174, 85.8706896551724]], "type": "seg"}, {"data": [[284.69827586206895, 40.18103448275861], [245.4741379310345, 96.2155172413793]], "type": "seg"}, {"data": [[308.40517241379314, 40.61206896551723], [280.8189655172414, 101.38793103448275]], "type": "seg"}, {"data": [[330.8189655172414, 44.0603448275862], [314.00862068965523, 103.97413793103448]], "type": "seg"}, {"data": [[355.3879310344828, 45.353448275862064], [348.9224137931035, 105.69827586206895]], "type": "seg"}, {"data": [[143.3189655172414, 104.4051724137931], [143.3189655172414, 135.4396551724138]], "type": "seg"}, {"data": [[143.3189655172414, 135.4396551724138], [228.47290802001953, 142.69214630126953]], "type": "seg"}, {"data": [[129.52586206896552, 103.11206896551722], [131.68103448275863, 138.02586206896552]], "type": "seg"}, {"data": [[131.68103448275863, 138.02586206896552], [50.646551724137936, 211.30172413793105]], "type": "seg"}, {"data": [[93.3189655172414, 0.09482758620688381], [95.90517241379311, 45.353448275862064]], "type": "seg"}, {"data": [[98.92241379310346, 100.52586206896551], [103.66379310344828, 163.45689655172416]], "type": "seg"}, {"data": [[451.93965517241384, 0.09482758620688381], [442.4568965517242, 57.853448275862064]], "type": "seg"}, {"data": [[63.57758620689657, 325.9568965517241], [126.50862068965517, 244.06034482758622]], "type": "seg"}, {"data": [[412.2844827586207, 279.40517241379314], [416.594827586207, 355.698275862069]], "type": "seg"}, {"data": [[0.21551724137931672, 86.30172413793102], [10.560344827586206, 174.23275862068965]], "type": "seg"}, {"data": [[10.560344827586206, 174.23275862068965], [1.0775862068965552, 179.83620689655174]], "type": "seg"}, {"data": [[10.560344827586206, 174.23275862068965], [32.97413793103449, 177.25]], "type": "seg"}, {"data": [[46.76724137931035, 177.25], [77.37068965517241, 181.1293103448276]], "type": "seg"}, {"data": [[499.7844827586207, 19.49137931034482], [488.5775862068965, 77.6810344827586]], "type": "seg"}, {"data": [[488.5775862068965, 77.6810344827586], [450.6465517241379, 74.23275862068964]], "type": "seg"}, {"data": [[488.5775862068965, 77.6810344827586], [499.3534482758621, 100.09482758620689]], "type": "seg"}, {"data": [[0.6465517241379359, 229.4051724137931], [10.129310344827587, 288.4568965517241]], "type": "seg"}, {"data": [[10.129310344827587, 288.4568965517241], [0.0, 297.37068965517244]], "type": "seg"}, {"data": [[212.71551724137933, 361.30172413793105], [224.78448275862073, 328.11206896551727]], "type": "seg"}, {"data": [[292.8879310344828, 264.3189655172414], [269.1810344827586, 371.64655172413796]], "type": "seg"}, {"data": [[234.26724137931038, 307.4224137931035], [250.64655172413794, 260.0086206896552]], "type": "seg"}, {"data": [[315.73275862068965, 268.19827586206895], [296.76724137931035, 374.6637931034483]], "type": "seg"}, {"data": [[324.3534482758621, 378.5431034482759], [335.9913793103449, 269.9224137931035]], "type": "seg"}, {"data": [[379.5258620689656, 276.3879310344828], [379.9568965517242, 387.5948275862069]], "type": "seg"}, {"data": [[356.25, 272.93965517241384], [350.6465517241379, 382.4224137931035]], "type": "seg"}, {"data": [[411.8534482758621, 263.8879310344828], [401.93965517241384, 159.14655172413794]], "type": "seg"}, {"data": [[421.76724137931035, 164.3189655172414], [437.2844827586207, 240.18103448275863]], "type": "seg"}, {"data": [[58.836206896551744, 223.3706896551724], [150.21551724137933, 137.5948275862069]], "type": "seg"}, {"data": [[83.40517241379311, 225.09482758620692], [167.88793103448276, 137.16379310344828]], "type": "seg"}, {"data": [[112.71551724137933, 228.54310344827587], [188.57758620689654, 139.75]], "type": "seg"}, {"data": [[208.4051724137931, 141.9051724137931], [139.8706896551724, 231.99137931034483]], "type": "seg"}, {"data": [[168.31896551724137, 236.73275862068968], [228.47290802001953, 142.69214630126953]], "type": "seg"}, {"data": [[235.99137931034485, 171.64655172413794], [249.78448275862073, 144.92241379310346]], "type": "seg"}, {"data": [[165.97543724279836, 255.99601337448559], [112.52572016460906, 343.2034465020576]], "type": "seg"}, {"data": [[188.0787037037037, 253.58474794238683], [137.8440072016461, 345.2128343621399]], "type": "seg"}, {"data": [[209.37821502057614, 257.6035236625514], [165.97543724279836, 350.8391203703704]], "type": "seg"}, {"data": [[403.0832047325103, 48.22530864197531], [415.943287037037, 109.71257716049382]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/67.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 332], "objects": [{"data": [[183.25617283950618, 234.85725308641977], [176.50462962962965, 275.8487654320988]], "type": "seg"}, {"data": [[275.36651234567904, 258.48765432098764], [275.8487654320988, 320.6983024691358]], "type": "seg"}, {"data": [[196.75925925925927, 244.98456790123458], [188.56095679012347, 291.2808641975309]], "type": "seg"}, {"data": [[189.63815789473685, 124.88157894736841], [178.45394736842107, 129.8157894736842]], "type": "seg"}, {"data": [[409.93975903614455, 233.73493975903614], [500.0, 251.08210890233357]], "type": "seg"}, {"data": [[41.282051282051285, 180.35897435897434], [62.15753424657534, 179.52739726027397]], "type": "seg"}, {"data": [[202.05511259716508, 227.17246084819388], [223.5443994341564, 224.660726023091]], "type": "seg"}, {"data": [[288.38734567901236, 181.80941358024694], [501.0609567901235, 190.97222222222223]], "type": "seg"}, {"data": [[200.38062271376316, 242.52195144604482], [226.05613425925927, 235.82399191243715]], "type": "seg"}, {"data": [[26.41025641025641, 178.3076923076923], [37.17948717948718, 178.3076923076923]], "type": "seg"}, {"data": [[266.2671232876712, 137.06164383561642], [298.20512820512823, 130.1025641025641]], "type": "seg"}, {"data": [[287.94871794871796, 181.89743589743588], [287.94871794871796, 196.76923076923075]], "type": "seg"}, {"data": [[298.71794871794873, 162.4102564102564], [298.7864077669903, 183.47572815533982]], "type": "seg"}, {"data": [[266.2671232876712, 179.18493150684932], [298.54368932038835, 179.3495145631068]], "type": "seg"}, {"data": [[403.01204819277103, 199.39759036144576], [287.94871794871796, 190.1025641025641]], "type": "seg"}, {"data": [[57.179487179487175, 186.5128205128205], [57.179487179487175, 209.07692307692307]], "type": "seg"}, {"data": [[17.179487179487182, 169.07692307692307], [18.717948717948723, 262.9230769230769]], "type": "seg"}, {"data": [[0.0, 155.23076923076923], [24.50657894736842, 160.40789473684208]], "type": "seg"}, {"data": [[406.92307692307696, 213.17948717948715], [500.0, 224.46153846153845]], "type": "seg"}, {"data": [[178.45394736842107, 129.8157894736842], [177.56849315068493, 194.5958904109589]], "type": "seg"}, {"data": [[297.2219543038409, 223.82348108139004], [333.2234867969822, 231.63776720393233]], "type": "seg"}, {"data": [[411.02564102564105, 153.17948717948715], [410.51282051282055, 123.94871794871794]], "type": "seg"}, {"data": [[298.61736254000914, 245.0336862711477], [337.1306298582533, 252.28980909922268]], "type": "seg"}, {"data": [[407.3630136986302, 226.1027397260274], [406.92307692307696, 213.17948717948715]], "type": "seg"}, {"data": [[238.33572673754003, 256.4760338077275], [238.61480838477368, 283.8260352366255]], "type": "seg"}, {"data": [[174.6153846153846, 204.97435897435895], [66.41025641025641, 215.23076923076923]], "type": "seg"}, {"data": [[293.0769230769231, 142.9230769230769], [293.0769230769231, 161.89743589743588]], "type": "seg"}, {"data": [[62.307692307692314, 236.76923076923075], [182.82051282051282, 220.35897435897434]], "type": "seg"}, {"data": [[57.179487179487175, 209.07692307692307], [25.384615384615387, 210.6153846153846]], "type": "seg"}, {"data": [[218.58552631578948, 127.84210526315788], [218.91447368421052, 193.6315789473684]], "type": "seg"}, {"data": [[298.71794871794873, 125.48717948717949], [500.0, 75.74358974358974]], "type": "seg"}, {"data": [[358.20512820512823, 185.48717948717947], [358.433734939759, 226.80722891566262]], "type": "seg"}, {"data": [[0.17123287671232745, 168.91095890410958], [17.179487179487182, 169.07692307692307]], "type": "seg"}, {"data": [[37.17948717948718, 178.3076923076923], [37.450199203187296, 141.69721115537845]], "type": "seg"}, {"data": [[293.0769230769231, 142.9230769230769], [499.2307692307692, 109.07692307692308]], "type": "seg"}, {"data": [[25.384615384615387, 186.5128205128205], [57.179487179487175, 186.5128205128205]], "type": "seg"}, {"data": [[298.71794871794873, 125.48717948717949], [298.71794871794873, 140.87179487179486]], "type": "seg"}, {"data": [[3.6280614140374943, 175.542356109968], [4.186224708504802, 260.38317686899865]], "type": "seg"}, {"data": [[24.50657894736842, 160.40789473684208], [26.80921052631579, 287.0526315789474]], "type": "seg"}, {"data": [[360.7692307692308, 132.15384615384613], [361.7948717948718, 156.76923076923075]], "type": "seg"}, {"data": [[42.280701754385966, 140.56140350877192], [41.282051282051285, 180.35897435897434]], "type": "seg"}, {"data": [[71.37628111273791, 218.1551976573938], [125.18301610541727, 213.03074670571007]], "type": "seg"}, {"data": [[265.2397260273973, 133.63698630136986], [189.63815789473685, 124.88157894736841]], "type": "seg"}, {"data": [[403.57142857142856, 185.96938775510205], [403.8265306122449, 233.67346938775512]], "type": "seg"}, {"data": [[243.58552631578948, 130.80263157894737], [244.2434210526316, 197.90789473684208]], "type": "seg"}, {"data": [[62.15753424657534, 135.34931506849315], [0.0, 132.66666666666666]], "type": "seg"}, {"data": [[266.1354581673307, 175.1633466135458], [298.7570495605469, 174.43685913085938]], "type": "seg"}, {"data": [[66.41025641025641, 215.23076923076923], [62.40423583984375, 222.34811401367188]], "type": "seg"}, {"data": [[18.717948717948723, 262.9230769230769], [0.25641025641025905, 284.46153846153845]], "type": "seg"}, {"data": [[62.40423583984375, 222.34811401367188], [178.2051282051282, 210.1025641025641]], "type": "seg"}, {"data": [[406.41025641025647, 200.35897435897434], [499.7435897435898, 208.56410256410254]], "type": "seg"}, {"data": [[486.41025641025647, 148.56410256410254], [485.8974358974359, 111.12820512820512]], "type": "seg"}, {"data": [[358.433734939759, 226.80722891566262], [349.4871794871795, 223.94871794871793]], "type": "seg"}, {"data": [[62.820512820512825, 83.43589743589743], [256.4144736842105, 116.98684210526316]], "type": "seg"}, {"data": [[265.2397260273973, 133.63698630136986], [265.2397260273973, 192.1986301369863]], "type": "seg"}, {"data": [[297.7801175983082, 239.45205332647464], [336.572466563786, 246.98725780178327]], "type": "seg"}, {"data": [[358.71794871794873, 210.1025641025641], [402.3076923076923, 216.25641025641025]], "type": "seg"}, {"data": [[0.3660322108345534, 104.31918008784771], [60.76134699853586, 110.54172767203512]], "type": "seg"}, {"data": [[0.7320644216691068, 109.0775988286969], [60.76134699853586, 114.93411420204977]], "type": "seg"}, {"data": [[39.53147877013177, 210.83455344070276], [43.557833089311856, 225.10980966325033]], "type": "seg"}, {"data": [[31.844802342606144, 215.59297218155194], [38.79941434846266, 228.03806734992676]], "type": "seg"}, {"data": [[42.280701754385966, 140.56140350877192], [61.228070175438596, 141.6140350877193]], "type": "seg"}, {"data": [[363.9784946236559, 199.19354838709677], [364.247311827957, 208.87096774193546]], "type": "seg"}, {"data": [[358.6734693877551, 220.91836734693877], [402.4096385542168, 228.31325301204816]], "type": "seg"}, {"data": [[41.282051282051285, 167.53846153846152], [61.81506849315069, 167.1986301369863]], "type": "seg"}, {"data": [[407.3630136986302, 226.1027397260274], [500.0, 241.25641025641022]], "type": "seg"}, {"data": [[256.4144736842105, 116.98684210526316], [256.0855263157895, 130.47368421052633]], "type": "seg"}, {"data": [[0.76923076923077, 92.66666666666666], [61.7948717948718, 100.87179487179488]], "type": "seg"}, {"data": [[500.0, 148.05128205128204], [293.0769230769231, 161.89743589743588]], "type": "seg"}, {"data": [[484.8717948717949, 191.1282051282051], [485.3846153846154, 238.82051282051282]], "type": "seg"}, {"data": [[0.76923076923077, 139.33333333333331], [37.450199203187296, 141.69721115537845]], "type": "seg"}, {"data": [[189.9671052631579, 201.8552631578947], [189.63815789473685, 124.88157894736841]], "type": "seg"}, {"data": [[396.6666666666667, 213.17948717948715], [396.6666666666667, 201.89743589743588]], "type": "seg"}, {"data": [[26.41025641025641, 140.87179487179486], [26.41025641025641, 178.3076923076923]], "type": "seg"}, {"data": [[62.33552631578948, 245.2763157894737], [62.820512820512825, 83.43589743589743]], "type": "seg"}, {"data": [[229.07021604938274, 258.0054012345679], [225.2121913580247, 312.5]], "type": "seg"}, {"data": [[214.12037037037038, 243.53780864197532], [214.12037037037038, 261.8634259259259]], "type": "seg"}, {"data": [[339.02391975308643, 244.0200617283951], [349.15123456790127, 300.9259259259259]], "type": "seg"}, {"data": [[289.35185185185185, 228.10570987654322], [289.83410493827165, 288.8695987654321]], "type": "seg"}, {"data": [[347.22222222222223, 240.6442901234568], [356.8672839506173, 284.0470679012346]], "type": "seg"}, {"data": [[26.80921052631579, 287.0526315789474], [1.151315789473684, 330.47368421052636]], "type": "seg"}, {"data": [[359.2307692307693, 215.23076923076923], [402.8205128205129, 221.38461538461536]], "type": "seg"}, {"data": [[281.7948717948718, 133.69230769230768], [281.7948717948718, 174.7179487179487]], "type": "seg"}, {"data": [[296.58564814814815, 225.69444444444446], [296.1033950617284, 286.9405864197531]], "type": "seg"}, {"data": [[69.9266975308642, 263.79243827160496], [52.56558641975309, 329.86111111111114]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/71.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 375], "objects": [{"data": [[209.99999999999997, 141.89189189189187], [218.1081081081081, 156.08108108108107]], "type": "seg"}, {"data": [[417.34104046242777, 247.03757225433526], [416.7630057803468, 266.6907514450867]], "type": "seg"}, {"data": [[149.71098265895955, 188.07803468208093], [162.42774566473986, 185.1878612716763]], "type": "seg"}, {"data": [[102.97297297297297, 100.94594594594594], [415.1351351351351, 96.48648648648648]], "type": "seg"}, {"data": [[115.3735632183908, 233.76436781609195], [152.72988505747128, 217.38505747126436]], "type": "seg"}, {"data": [[412.13872832369947, 263.2225433526011], [54.33526011560694, 260.3323699421965]], "type": "seg"}, {"data": [[201.7341040462428, 201.9508670520231], [329.4797687861272, 201.3728323699422]], "type": "seg"}, {"data": [[286.2162162162162, 143.9189189189189], [316.6216216216216, 144.32432432432432]], "type": "seg"}, {"data": [[259.6264367816092, 219.97126436781608], [362.5, 221.1206896551724]], "type": "seg"}, {"data": [[118.37837837837837, 184.45945945945945], [250.1351351351351, 183.24324324324323]], "type": "seg"}, {"data": [[115.3735632183908, 218.2471264367816], [141.81034482758622, 209.33908045977012]], "type": "seg"}, {"data": [[52.02312138728324, 96.17052023121387], [415.60693641618496, 73.04913294797689]], "type": "seg"}, {"data": [[489.01734104046244, 316.4017341040462], [490.17341040462435, 286.92196531791905]], "type": "seg"}, {"data": [[113.89490509033203, 188.66342163085938], [165.8959537572254, 223.91618497109826]], "type": "seg"}, {"data": [[149.71098265895955, 188.07803468208093], [150.71839080459768, 212.2126436781609]], "type": "seg"}, {"data": [[239.59459459459458, 119.99999999999999], [239.59459459459458, 145.13513513513513]], "type": "seg"}, {"data": [[489.01734104046244, 316.4017341040462], [477.62347412109375, 316.717041015625]], "type": "seg"}, {"data": [[415.60693641618496, 73.04913294797689], [412.13872832369947, 263.2225433526011]], "type": "seg"}, {"data": [[112.49999999999999, 107.61494252873564], [252.15517241379314, 108.47701149425288]], "type": "seg"}, {"data": [[1.1560693641618514, 82.29768786127168], [52.02312138728324, 96.17052023121387]], "type": "seg"}, {"data": [[258.95953757225436, 108.88728323699422], [258.3815028901734, 255.70809248554912]], "type": "seg"}, {"data": [[162.42774566473986, 185.1878612716763], [163.0057803468208, 220.4479768786127]], "type": "seg"}, {"data": [[261.48648648648646, 183.24324324324323], [364.86486486486484, 182.8378378378378]], "type": "seg"}, {"data": [[373.9884393063584, 225.65028901734104], [400.4310344827586, 244.97126436781608]], "type": "seg"}, {"data": [[115.02890173410405, 254.55202312138726], [252.6011560693642, 256.28612716763007]], "type": "seg"}, {"data": [[329.4797687861272, 201.3728323699422], [330.0287356321839, 220.25862068965517]], "type": "seg"}, {"data": [[373.9884393063584, 225.65028901734104], [373.9884393063584, 163.80057803468208]], "type": "seg"}, {"data": [[273.29545454545456, 201.70454545454544], [273.7068965517241, 219.97126436781608]], "type": "seg"}, {"data": [[52.02312138728324, 96.17052023121387], [54.33526011560694, 260.3323699421965]], "type": "seg"}, {"data": [[115.02890173410405, 254.55202312138726], [112.49999999999999, 107.61494252873564]], "type": "seg"}, {"data": [[373.9884393063584, 163.80057803468208], [402.3121387283237, 162.64450867052022]], "type": "seg"}, {"data": [[115.02890173410405, 249.34971098265896], [160.1156069364162, 224.4942196531792]], "type": "seg"}, {"data": [[54.01234567901235, 235.33950617283952], [81.98302469135803, 235.82175925925927]], "type": "seg"}, {"data": [[252.15517241379314, 108.47701149425288], [252.6011560693642, 256.28612716763007]], "type": "seg"}, {"data": [[479.19075144508673, 287.5], [477.62347412109375, 316.717041015625]], "type": "seg"}, {"data": [[202.15517241379314, 218.82183908045977], [201.7341040462428, 201.9508670520231]], "type": "seg"}, {"data": [[168.24712643678163, 219.10919540229884], [251.58045977011494, 220.25862068965517]], "type": "seg"}, {"data": [[160.1156069364162, 224.4942196531792], [373.9884393063584, 225.65028901734104]], "type": "seg"}, {"data": [[375.8108108108108, 182.43243243243242], [400.5405405405405, 188.9189189189189]], "type": "seg"}, {"data": [[115.3735632183908, 206.75287356321837], [132.61494252873564, 201.29310344827584]], "type": "seg"}, {"data": [[113.89490509033203, 188.66342163085938], [149.71098265895955, 188.07803468208093]], "type": "seg"}, {"data": [[421.971450617284, 246.9135802469136], [483.69984567901236, 286.45833333333337]], "type": "seg"}, {"data": [[105.78034682080924, 259.7543352601156], [102.89017341040461, 99.63872832369943]], "type": "seg"}, {"data": [[258.95953757225436, 108.88728323699422], [404.45402298850576, 104.74137931034483]], "type": "seg"}, {"data": [[54.01234567901235, 256.55864197530866], [0.9645061728395062, 277.77777777777777]], "type": "seg"}, {"data": [[400.57803468208095, 257.4421965317919], [404.45402298850576, 104.74137931034483]], "type": "seg"}, {"data": [[258.3815028901734, 255.70809248554912], [400.57803468208095, 257.4421965317919]], "type": "seg"}, {"data": [[412.13872832369947, 263.2225433526011], [500.0, 334.9964342016365]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/75.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 500], "objects": [{"data": [[216.0493827160494, 193.86574074074076], [350.5979938271605, 195.79475308641977]], "type": "seg"}, {"data": [[23.02158273381299, 0.7194244604316546], [38.12949640287775, 146.76258992805754]], "type": "seg"}, {"data": [[84.66453674121405, 193.29073482428115], [148.02981895633653, 193.82321618743345]], "type": "seg"}, {"data": [[245.13888888888889, 365.97222222222223], [243.75, 425.69444444444446]], "type": "seg"}, {"data": [[74.28057553956836, 202.84810126582278], [181.8755122484291, 202.84810126582278]], "type": "seg"}, {"data": [[244.67025598548497, 212.00646866248573], [498.8931290182622, 212.31461759949514]], "type": "seg"}, {"data": [[28.0, 355.0], [27.0, 500.0]], "type": "seg"}, {"data": [[283.45323741007195, 348.9208633093525], [426.6187050359712, 345.3237410071942]], "type": "seg"}, {"data": [[283.45323741007195, 422.3021582733813], [422.30215827338134, 415.1079136690647]], "type": "seg"}, {"data": [[57.50798722044728, 222.0447284345048], [207.66773162939296, 223.10969116080938]], "type": "seg"}, {"data": [[431.6546762589928, 270.50359712230215], [282.01438848920867, 274.82014388489205]], "type": "seg"}, {"data": [[283.22784810126586, 344.62025316455697], [281.294964028777, 500.0]], "type": "seg"}, {"data": [[174.10071942446046, 201.43884892086328], [172.38184136235319, 0.9493670886075949]], "type": "seg"}, {"data": [[421.58273381294964, 445.3237410071942], [500.0, 439.56834532374097]], "type": "seg"}, {"data": [[217.49614197530866, 204.47530864197532], [351.08024691358025, 202.5462962962963]], "type": "seg"}, {"data": [[264.7482014388489, 260.431654676259], [401.43884892086334, 258.273381294964]], "type": "seg"}, {"data": [[28.452932098765434, 312.98225308641975], [144.67592592592592, 314.9112654320988]], "type": "seg"}, {"data": [[348.9208633093525, 190.64748201438846], [465.4676258992806, 210.07194244604315]], "type": "seg"}, {"data": [[264.7482014388489, 260.431654676259], [282.01438848920867, 274.82014388489205]], "type": "seg"}, {"data": [[48.687532047489455, 0.3081489370094269], [56.39125547272513, 195.36642606397666]], "type": "seg"}, {"data": [[282.01438848920867, 274.82014388489205], [281.294964028777, 312.2302158273381]], "type": "seg"}, {"data": [[431.6546762589928, 270.50359712230215], [417.9856115107914, 483.4532374100719]], "type": "seg"}, {"data": [[181.8755122484291, 202.84810126582278], [181.8755122484291, 0.3164556962025316]], "type": "seg"}, {"data": [[269.7841726618705, 346.04316546762584], [267.4050632911392, 497.7848101265823]], "type": "seg"}, {"data": [[244.94142705005325, 220.44728434504793], [499.46751863684773, 218.84984025559106]], "type": "seg"}, {"data": [[282.7338129496403, 492.80575539568343], [417.9856115107914, 483.4532374100719]], "type": "seg"}, {"data": [[264.7482014388489, 297.1223021582733], [264.7482014388489, 260.431654676259]], "type": "seg"}, {"data": [[61.0, 373.0], [246.0, 365.0]], "type": "seg"}, {"data": [[210.79136690647482, 219.42446043165467], [211.62234769146707, 0.9493670886075947]], "type": "seg"}, {"data": [[12.23021582733817, 0.7194244604316546], [16.546762589928107, 92.80575539568345]], "type": "seg"}, {"data": [[401.43884892086334, 258.273381294964], [431.6546762589928, 270.50359712230215]], "type": "seg"}, {"data": [[60.43165467625903, 372.6618705035971], [61.87050359712234, 469.78417266187046]], "type": "seg"}, {"data": [[28.057553956834568, 340.2877697841726], [285.75949367088606, 333.86075949367086]], "type": "seg"}, {"data": [[62.5, 470.13888888888886], [220.83333333333331, 457.63888888888886]], "type": "seg"}, {"data": [[356.8345323741007, 273.38129496402877], [349.6402877697842, 487.05035971223015]], "type": "seg"}, {"data": [[67.95146161551773, 0.3164556962025316], [74.28057553956836, 202.84810126582278]], "type": "seg"}, {"data": [[13.020833333333334, 319.7337962962963], [25.559413580246915, 374.2283950617284]], "type": "seg"}, {"data": [[423.3226837060703, 425.4526091586794], [500.0, 422.790202342918]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/77.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 401], "objects": [{"data": [[97.80092592592592, 157.40740740740742], [130.78703703703704, 157.98611111111111]], "type": "seg"}, {"data": [[1.015228426395943, 358.11421319796955], [58.05785123966942, 376.7396694214876]], "type": "seg"}, {"data": [[306.0913705583757, 4.814720812182748], [307.61421319796955, 209.38324873096448]], "type": "seg"}, {"data": [[104.56852791878173, 289.0786802030457], [105.0761421319797, 274.3578680203046]], "type": "seg"}, {"data": [[105.32407407407408, 273.72685185185185], [228.58796296296296, 291.6666666666667]], "type": "seg"}, {"data": [[314.72081218274116, 294.66243654822335], [311.3636363636364, 401.0]], "type": "seg"}, {"data": [[57.23140495867767, 361.8636363636364], [0.0, 343.730914000491]], "type": "seg"}, {"data": [[97.80092592592592, 158.5648148148148], [88.54166666666667, 201.9675925925926]], "type": "seg"}, {"data": [[135.3748668796592, 251.53248136315227], [164.41427050053247, 254.09478168264107]], "type": "seg"}, {"data": [[345.6852791878173, 272.83502538071065], [344.16243654822335, 399.73857868020303]], "type": "seg"}, {"data": [[139.46280991735537, 33.35123966942148], [300.2066115702479, 1.1198347107437934]], "type": "seg"}, {"data": [[58.05785123966942, 376.7396694214876], [55.837563451776646, 329.1802030456853]], "type": "seg"}, {"data": [[114.77623456790124, 204.95756172839506], [116.22299382716051, 247.8780864197531]], "type": "seg"}, {"data": [[228.42639593908632, 291.10913705583755], [227.41116751269038, 321.05837563451774]], "type": "seg"}, {"data": [[85.64814814814815, 202.5462962962963], [139.4675925925926, 201.9675925925926]], "type": "seg"}, {"data": [[230.32407407407408, 368.05555555555554], [236.11111111111111, 400.462962962963]], "type": "seg"}, {"data": [[309.6112886048988, 269.468583599574], [345.9105431309904, 272.45793397231097]], "type": "seg"}, {"data": [[300.2066115702479, 1.1198347107437934], [299.6138996138996, 210.15250965250965]], "type": "seg"}, {"data": [[140.60913705583755, 203.29187817258884], [299.6138996138996, 210.15250965250965]], "type": "seg"}, {"data": [[291.5289256198347, 331.28512396694214], [290.702479338843, 400.29338842975204]], "type": "seg"}, {"data": [[130.20833333333334, 157.40740740740742], [140.625, 193.86574074074073]], "type": "seg"}, {"data": [[345.6852791878173, 272.83502538071065], [314.72081218274116, 294.66243654822335]], "type": "seg"}, {"data": [[53.299492385786806, 277.4035532994924], [54.31472081218274, 262.6827411167513]], "type": "seg"}, {"data": [[300.2066115702479, 1.1198347107437934], [306.0913705583757, 4.814720812182748]], "type": "seg"}, {"data": [[140.60913705583755, 203.29187817258884], [139.46280991735537, 33.35123966942148]], "type": "seg"}, {"data": [[313.0165289256198, 334.59090909090907], [130.78512396694214, 304.8388429752066]], "type": "seg"}, {"data": [[307.61421319796955, 209.38324873096448], [299.6138996138996, 210.15250965250965]], "type": "seg"}, {"data": [[54.31472081218274, 262.6827411167513], [314.72081218274116, 294.66243654822335]], "type": "seg"}, {"data": [[54.31472081218274, 262.6827411167513], [107.10659898477157, 249.99238578680206]], "type": "seg"}, {"data": [[225.0553780617678, 260.92758253461125], [274.16613418530346, 265.62513312034076]], "type": "seg"}, {"data": [[330.3433641975309, 4.822530864197531], [328.41435185185185, 214.12037037037038]], "type": "seg"}, {"data": [[318.28703703703707, 15.914351851851853], [316.84027777777777, 209.29783950617286]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/84.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 334], "objects": [{"data": [[2.009387860082305, 134.62898662551447], [112.19082218792872, 149.02959962277097]], "type": "seg"}, {"data": [[112.93103448275863, 116.82758620689656], [128.08575439453125, 73.96011352539062]], "type": "seg"}, {"data": [[116.35441589355469, 124.14501190185547], [155.6896551724138, 186.82758620689654]], "type": "seg"}, {"data": [[197.41379310344828, 194.41379310344828], [339.48275862068965, 74.06896551724138]], "type": "seg"}, {"data": [[90.70983123779297, 197.17303466796875], [75.0, 240.9655172413793]], "type": "seg"}, {"data": [[12.681159420289895, 189.64492753623188], [90.70983123779297, 197.17303466796875]], "type": "seg"}, {"data": [[380.2487443558528, 169.07696461572172], [439.0884583142814, 196.05485718164155]], "type": "seg"}, {"data": [[105.0, 115.10344827586208], [125.54428668018932, 64.5946585530764]], "type": "seg"}, {"data": [[125.54428668018932, 64.5946585530764], [275.0, 97.51724137931035]], "type": "seg"}, {"data": [[275.0, 97.51724137931035], [280.1724137931034, 123.03448275862071]], "type": "seg"}, {"data": [[345.8286745303689, 84.18963024881879], [411.8779977090002, 141.63393597107913]], "type": "seg"}, {"data": [[255.0, 135.44827586206895], [275.0, 97.51724137931035]], "type": "seg"}, {"data": [[125.54428668018932, 64.5946585530764], [136.7241379310345, 105.79310344827587]], "type": "seg"}, {"data": [[259.48275862068965, 138.89655172413794], [95.68965517241381, 114.75862068965517]], "type": "seg"}, {"data": [[226.0344827586207, 201.3103448275862], [226.0344827586207, 181.6551724137931]], "type": "seg"}, {"data": [[448.7931034482759, 203.72413793103448], [328.7931034482759, 221.3103448275862]], "type": "seg"}, {"data": [[448.7931034482759, 203.72413793103448], [377.7586206896552, 175.10344827586206]], "type": "seg"}, {"data": [[377.7586206896552, 175.10344827586206], [339.48275862068965, 74.06896551724138]], "type": "seg"}, {"data": [[128.08575439453125, 73.96011352539062], [271.54840087890625, 104.0633544921875]], "type": "seg"}, {"data": [[270.5439814814815, 206.88657407407408], [374.71064814814815, 167.82407407407408]], "type": "seg"}, {"data": [[104.68164794007491, 197.1498127340824], [90.70983123779297, 197.17303466796875]], "type": "seg"}, {"data": [[410.78431372549016, 141.26470588235293], [401.96078431372547, 145.6764705882353]], "type": "seg"}, {"data": [[401.96078431372547, 145.6764705882353], [355.2434456928839, 111.00749063670412]], "type": "seg"}, {"data": [[401.96078431372547, 145.6764705882353], [425.0, 188.81372549019608]], "type": "seg"}, {"data": [[247.75862068965517, 163.72413793103448], [250.1724137931035, 204.41379310344828]], "type": "seg"}, {"data": [[113.96551724137933, 149.24137931034483], [93.9655172413793, 121.31034482758622]], "type": "seg"}, {"data": [[219.22408294677734, 175.93856048583984], [139.57022094726562, 161.1405029296875]], "type": "seg"}, {"data": [[139.57022094726562, 161.1405029296875], [133.30542986425334, 188.89037433155082]], "type": "seg"}, {"data": [[219.22408294677734, 175.93856048583984], [219.40168654874532, 198.51604278074868]], "type": "seg"}, {"data": [[226.0344827586207, 181.6551724137931], [247.75862068965517, 163.72413793103448]], "type": "seg"}, {"data": [[93.9655172413793, 121.31034482758622], [259.3137254901961, 142.2450980392157]], "type": "seg"}, {"data": [[136.7241379310345, 176.13793103448276], [218.44827586206898, 189.24137931034483]], "type": "seg"}, {"data": [[207.75862068965517, 172.68965517241378], [207.41379310344828, 199.58620689655172]], "type": "seg"}, {"data": [[162.58620689655174, 164.41379310344828], [157.75862068965517, 191.3103448275862]], "type": "seg"}, {"data": [[95.68965517241381, 114.75862068965517], [93.9655172413793, 121.31034482758622]], "type": "seg"}, {"data": [[266.56610107421875, 113.5125617980957], [131.0766830444336, 84.98191833496094]], "type": "seg"}, {"data": [[131.0766830444336, 84.98191833496094], [118.79310344827587, 117.86206896551725]], "type": "seg"}, {"data": [[262.8949116941016, 120.8981695816187], [263.8996056241428, 137.30817043895755]], "type": "seg"}, {"data": [[207.41379310344828, 90.62068965517243], [205.34482758620692, 129.58620689655172]], "type": "seg"}, {"data": [[62.25490196078431, 157.44117647058823], [49.13793103448277, 181.6551724137931]], "type": "seg"}, {"data": [[49.13793103448277, 181.6551724137931], [277.7586206896552, 208.20689655172413]], "type": "seg"}, {"data": [[266.91368741426624, 103.14857681755835], [268.92307527434855, 132.28470078875176]], "type": "seg"}, {"data": [[241.55172413793105, 98.20689655172414], [242.24137931034483, 135.10344827586206]], "type": "seg"}, {"data": [[171.20689655172416, 80.96551724137932], [163.62068965517244, 123.3793103448276]], "type": "seg"}, {"data": [[158.79310344827587, 77.86206896551725], [148.44827586206898, 120.62068965517243]], "type": "seg"}, {"data": [[151.55172413793105, 109.58620689655173], [166.0344827586207, 111.31034482758622]], "type": "seg"}, {"data": [[236.72413793103448, 173.72413793103448], [237.4137931034483, 202.0]], "type": "seg"}, {"data": [[412.1105657483616, 142.0990720498019], [441.6467067472566, 196.98512933908705]], "type": "seg"}, {"data": [[271.937157064472, 103.81837277091911], [274.6163408779151, 128.60082304526753]], "type": "seg"}, {"data": [[145.01082390260638, 101.13918895747604], [140.65715020576138, 119.55857767489717]], "type": "seg"}, {"data": [[138.98266032235946, 99.7995970507545], [134.29408864883408, 119.22367969821678]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/89.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 417], "objects": [{"data": [[289.6551724137931, 416.90517241379314], [284.91379310344826, 394.9224137931035]], "type": "seg"}, {"data": [[209.26724137931038, 0.9568965517241252], [209.69827586206898, 82.85344827586205]], "type": "seg"}, {"data": [[183.83620689655172, 393.6293103448276], [181.0344827586207, 416.0431034482759]], "type": "seg"}, {"data": [[461.9984567901235, 275.36651234567904], [484.18209876543216, 278.7422839506173]], "type": "seg"}, {"data": [[138.88888888888889, 370.3703703703704], [144.67592592592592, 416.6666666666667]], "type": "seg"}, {"data": [[248.49137931034485, 128.97413793103448], [248.06034482758625, 206.1293103448276]], "type": "seg"}, {"data": [[499.7844827586207, 70.35344827586205], [210.99137931034485, 137.5948275862069]], "type": "seg"}, {"data": [[144.18103448275863, 331.1293103448276], [174.35344827586206, 344.4913793103448]], "type": "seg"}, {"data": [[194.61206896551724, 238.88793103448276], [194.61206896551724, 248.80172413793105]], "type": "seg"}, {"data": [[174.35344827586206, 344.4913793103448], [122.62931034482759, 362.1637931034483]], "type": "seg"}, {"data": [[147.84482758620692, 237.59482758620692], [161.8534482758621, 238.02586206896552]], "type": "seg"}, {"data": [[62.2844827586207, 175.52586206896552], [62.2844827586207, 206.99137931034483]], "type": "seg"}, {"data": [[343.75, 196.64655172413794], [343.75, 203.54310344827587]], "type": "seg"}, {"data": [[95.24147033691406, 345.9105529785156], [144.18103448275863, 331.1293103448276]], "type": "seg"}, {"data": [[44.396551724137936, 254.4051724137931], [350.646551724138, 350.9568965517242]], "type": "seg"}, {"data": [[335.9913793103449, 197.50862068965517], [286.4224137931035, 198.80172413793105]], "type": "seg"}, {"data": [[453.23275862068965, 358.71551724137936], [499.7844827586207, 370.7844827586207]], "type": "seg"}, {"data": [[148.92241379310346, 164.3189655172414], [147.84482758620692, 237.59482758620692]], "type": "seg"}, {"data": [[335.9913793103449, 160.8706896551724], [343.3189655172414, 161.30172413793105]], "type": "seg"}, {"data": [[454.09482758620686, 296.64655172413796], [452.37068965517244, 416.90517241379314]], "type": "seg"}, {"data": [[159.14351851851853, 128.27932098765433], [190.00771604938274, 133.58410493827162]], "type": "seg"}, {"data": [[142.45689655172416, 140.18103448275863], [141.81034482758622, 239.75]], "type": "seg"}, {"data": [[21.120689655172413, 203.54310344827587], [0.0, 203.54310344827587]], "type": "seg"}, {"data": [[337.5771604938272, 261.8634259259259], [350.11574074074076, 263.3101851851852]], "type": "seg"}, {"data": [[161.8534482758621, 155.69827586206898], [142.88793103448276, 159.57758620689657]], "type": "seg"}, {"data": [[72.62931034482759, 172.9396551724138], [73.49137931034483, 206.56034482758622]], "type": "seg"}, {"data": [[500.0, 290.61206896551727], [161.85344827586212, 245.78448275862075]], "type": "seg"}, {"data": [[300.86206896551727, 232.8534482758621], [353.01724137931035, 235.00862068965517]], "type": "seg"}, {"data": [[181.0344827586207, 411.7327586206897], [171.4459686279297, 345.48480224609375]], "type": "seg"}, {"data": [[375.2155172413793, 100.09482758620689], [375.6465517241379, 203.54310344827587]], "type": "seg"}, {"data": [[353.44827586206895, 243.6293103448276], [323.0603448275863, 250.09482758620692]], "type": "seg"}, {"data": [[453.23275862068965, 367.76724137931035], [491.59482758620686, 377.68103448275866]], "type": "seg"}, {"data": [[286.4224137931035, 175.52586206896552], [336.4224137931035, 171.21551724137933]], "type": "seg"}, {"data": [[211.42241379310346, 206.56034482758622], [499.3534482758621, 199.66379310344828]], "type": "seg"}, {"data": [[212.28448275862073, 280.26724137931035], [160.56034482758622, 291.0431034482759]], "type": "seg"}, {"data": [[86.63793103448278, 417.0], [95.24147033691406, 345.9105529785156]], "type": "seg"}, {"data": [[54.95689655172416, 108.28448275862068], [54.52586206896552, 150.52586206896552]], "type": "seg"}, {"data": [[462.5, 285.43965517241384], [350.646551724138, 350.9568965517242]], "type": "seg"}, {"data": [[111.63793103448278, 371.64655172413796], [97.8448275862069, 361.30172413793105]], "type": "seg"}, {"data": [[354.094827586207, 221.64655172413794], [301.50862068965523, 219.92241379310346]], "type": "seg"}, {"data": [[325.2155172413793, 304.83620689655174], [272.19827586206895, 325.0948275862069]], "type": "seg"}, {"data": [[364.00862068965523, 354.40517241379314], [364.00862068965523, 416.47413793103453]], "type": "seg"}, {"data": [[352.15517241379314, 361.73275862068965], [46.12068965517241, 260.0086206896552]], "type": "seg"}, {"data": [[108.83620689655174, 243.19827586206898], [0.0, 251.38793103448276]], "type": "seg"}, {"data": [[286.8534482758621, 191.9051724137931], [336.4224137931035, 189.3189655172414]], "type": "seg"}, {"data": [[289.2241379310345, 391.90517241379314], [239.4396551724138, 368.198275862069]], "type": "seg"}, {"data": [[163.96604938271605, 154.80324074074076], [164.44830246913583, 244.50231481481484]], "type": "seg"}, {"data": [[290.30172413793105, 119.49137931034481], [290.73275862068965, 166.04310344827587]], "type": "seg"}, {"data": [[0.9645061728395062, 96.45061728395062], [127.31481481481482, 121.52777777777779]], "type": "seg"}, {"data": [[95.25862068965519, 416.0431034482759], [103.8793103448276, 365.61206896551727]], "type": "seg"}, {"data": [[65.08620689655173, 356.5603448275862], [62.7155172413793, 266.9051724137931]], "type": "seg"}, {"data": [[164.65517241379314, 359.57758620689657], [133.18965517241378, 371.21551724137936]], "type": "seg"}, {"data": [[286.4224137931035, 166.9051724137931], [335.9913793103449, 160.8706896551724]], "type": "seg"}, {"data": [[161.85344827586212, 245.78448275862075], [149.5689655172414, 247.07758620689657]], "type": "seg"}, {"data": [[142.02586206896552, 18.198275862068954], [142.88793103448276, 111.30172413793102]], "type": "seg"}, {"data": [[271.02623456790127, 255.59413580246914], [324.0740740740741, 260.89891975308643]], "type": "seg"}, {"data": [[112.50000000000001, 414.3189655172414], [111.63793103448278, 371.64655172413796]], "type": "seg"}, {"data": [[239.4396551724138, 368.198275862069], [183.83620689655172, 393.6293103448276]], "type": "seg"}, {"data": [[489.43965517241384, 253.54310344827587], [226.0775862068966, 236.73275862068968]], "type": "seg"}, {"data": [[226.0775862068966, 236.73275862068968], [194.61206896551724, 238.88793103448276]], "type": "seg"}, {"data": [[325.2155172413793, 0.5258620689655045], [324.3534482758621, 34.57758620689654]], "type": "seg"}, {"data": [[194.61206896551724, 300.9568965517241], [250.21551724137933, 288.4568965517241]], "type": "seg"}, {"data": [[233.4104938271605, 101.75540123456791], [306.712962962963, 78.125]], "type": "seg"}, {"data": [[152.87422839506175, 366.0300925925926], [151.90972222222223, 417.14891975308643]], "type": "seg"}, {"data": [[301.50862068965523, 219.92241379310346], [300.2155172413793, 239.75]], "type": "seg"}, {"data": [[99.35344827586209, 160.8706896551724], [100.21551724137933, 242.76724137931035]], "type": "seg"}, {"data": [[500.57870370370375, 15.914351851851853], [347.704475308642, 63.65740740740741]], "type": "seg"}, {"data": [[190.73275862068968, 133.2844827586207], [189.4396551724138, 248.37068965517244]], "type": "seg"}, {"data": [[95.33026504516602, 353.1712341308594], [70.04310344827584, 361.73275862068965]], "type": "seg"}, {"data": [[118.75, 277.68103448275866], [170.0431034482759, 270.3534482758621]], "type": "seg"}, {"data": [[1.5086206896551744, 119.92241379310344], [142.45689655172416, 140.18103448275863]], "type": "seg"}, {"data": [[35.991379310344826, 104.83620689655172], [35.12931034482759, 167.76724137931035]], "type": "seg"}, {"data": [[329.5258620689656, 353.9741379310345], [328.23275862068965, 416.0431034482759]], "type": "seg"}, {"data": [[142.45689655172416, 140.18103448275863], [173.49137931034485, 130.69827586206898]], "type": "seg"}, {"data": [[0.4310344827586192, 257.8534482758621], [108.1896551724138, 250.09482758620692]], "type": "seg"}, {"data": [[300.2155172413793, 239.75], [270.47413793103453, 245.7844827586207]], "type": "seg"}, {"data": [[20.90517241379311, 178.9741379310345], [20.90517241379311, 230.69827586206898]], "type": "seg"}, {"data": [[226.0775862068966, 106.12931034482759], [226.0775862068966, 236.73275862068968]], "type": "seg"}, {"data": [[148.49137931034485, 200.95689655172416], [161.8534482758621, 200.52586206896552]], "type": "seg"}, {"data": [[183.83620689655172, 393.6293103448276], [222.98411978221415, 417.0]], "type": "seg"}, {"data": [[352.15517241379314, 361.73275862068965], [459.91379310344826, 292.76724137931035]], "type": "seg"}, {"data": [[456.6810344827586, 79.83620689655172], [457.1120689655172, 200.09482758620692]], "type": "seg"}, {"data": [[286.4224137931035, 166.9051724137931], [286.4224137931035, 198.80172413793105]], "type": "seg"}, {"data": [[70.04310344827584, 361.73275862068965], [68.10344827586208, 268.19827586206895]], "type": "seg"}, {"data": [[250.21551724137933, 415.61206896551727], [289.2241379310345, 391.90517241379314]], "type": "seg"}, {"data": [[230.81896551724142, 243.6293103448276], [231.25000000000003, 254.83620689655174]], "type": "seg"}, {"data": [[94.39655172413795, 276.8189655172414], [95.33026504516602, 353.1712341308594]], "type": "seg"}, {"data": [[500.0, 266.4741379310345], [194.61206896551724, 238.88793103448276]], "type": "seg"}, {"data": [[0.21551724137931672, 149.66379310344828], [99.35344827586209, 160.8706896551724]], "type": "seg"}, {"data": [[335.9913793103449, 160.8706896551724], [335.9913793103449, 197.50862068965517]], "type": "seg"}, {"data": [[329.0948181152344, 251.03598022460938], [329.094827586207, 267.76724137931035]], "type": "seg"}, {"data": [[70.04310344827584, 361.73275862068965], [65.08620689655173, 356.5603448275862]], "type": "seg"}, {"data": [[401.07952880859375, 259.5163879394531], [400.2155172413793, 277.25]], "type": "seg"}, {"data": [[196.75925925925927, 256.55864197530866], [235.33950617283952, 263.3101851851852]], "type": "seg"}, {"data": [[372.78163580246917, 266.6859567901235], [388.695987654321, 267.650462962963]], "type": "seg"}, {"data": [[128.87931034482762, 415.61206896551727], [133.18965517241378, 371.21551724137936]], "type": "seg"}, {"data": [[170.7175925925926, 221.83641975308643], [171.19984567901236, 261.8634259259259]], "type": "seg"}, {"data": [[335.9913793103449, 197.50862068965517], [343.75, 196.64655172413794]], "type": "seg"}, {"data": [[20.90517241379311, 230.69827586206898], [0.6465517241379359, 230.69827586206898]], "type": "seg"}, {"data": [[411.84413580246917, 270.5439814814815], [432.58101851851853, 272.4729938271605]], "type": "seg"}, {"data": [[161.20689655172413, 162.5948275862069], [148.92241379310346, 164.3189655172414]], "type": "seg"}, {"data": [[0.6465517241379359, 178.9741379310345], [20.90517241379311, 178.9741379310345]], "type": "seg"}, {"data": [[30.381944444444446, 315.8757716049383], [63.17515432098766, 342.88194444444446]], "type": "seg"}, {"data": [[15.301724137931032, 102.24999999999999], [14.870689655172413, 161.30172413793105]], "type": "seg"}, {"data": [[353.44827586206895, 243.6293103448276], [354.094827586207, 221.64655172413794]], "type": "seg"}, {"data": [[414.00862068965523, 90.61206896551722], [413.1465517241379, 202.25]], "type": "seg"}, {"data": [[314.43965517241384, 114.31896551724137], [314.43965517241384, 163.45689655172416]], "type": "seg"}, {"data": [[210.99137931034485, 137.5948275862069], [211.42241379310346, 206.56034482758622]], "type": "seg"}, {"data": [[267.0258620689656, 124.66379310344827], [267.0258620689656, 205.26724137931035]], "type": "seg"}, {"data": [[0.0, 317.12068965517244], [62.71551724137933, 305.26724137931035]], "type": "seg"}, {"data": [[326.48533950617286, 305.26620370370375], [291.76311728395063, 298.03240740740745]], "type": "seg"}, {"data": [[342.4568965517242, 107.42241379310343], [343.3189655172414, 161.30172413793105]], "type": "seg"}, {"data": [[170.0431034482759, 270.3534482758621], [212.28448275862073, 280.26724137931035]], "type": "seg"}, {"data": [[95.24147033691406, 345.9105529785156], [122.62931034482759, 362.1637931034483]], "type": "seg"}, {"data": [[175.4310344827586, 413.8879310344828], [164.65517241379314, 359.57758620689657]], "type": "seg"}, {"data": [[80.05401234567901, 196.27700617283952], [80.05401234567901, 212.67361111111111]], "type": "seg"}, {"data": [[95.96836419753087, 186.63194444444446], [95.48611111111111, 203.99305555555557]], "type": "seg"}, {"data": [[87.28780864197532, 196.75925925925927], [86.80555555555556, 212.67361111111111]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/93.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 375], "objects": [{"data": [[0.0, 40.67919075144509], [239.4, 83.4]], "type": "seg"}, {"data": [[367.46031746031747, 86.90476190476191], [307.53968253968253, 69.84126984126985]], "type": "seg"}, {"data": [[111.88271604938272, 122.01003086419755], [152.87422839506175, 122.01003086419755]], "type": "seg"}, {"data": [[235.83815028901734, 205.41907514450867], [230.05780346820814, 207.15317919075144]], "type": "seg"}, {"data": [[164.73988439306356, 167.84682080924856], [0.0, 175.3349973725696]], "type": "seg"}, {"data": [[31.79190751445087, 233.74277456647397], [29.479768786127167, 190.39017341040463]], "type": "seg"}, {"data": [[230.05780346820814, 207.15317919075144], [217.34104046242777, 204.26300578034682]], "type": "seg"}, {"data": [[497.68786127167635, 0.7947976878612717], [280.3468208092486, 39.52312138728324]], "type": "seg"}, {"data": [[164.6, 83.4], [164.73988439306356, 167.84682080924856]], "type": "seg"}, {"data": [[0.0, 47.99364161849711], [226.4, 86.0]], "type": "seg"}, {"data": [[279.76878612716763, 72.47109826589596], [348.5549132947977, 90.39017341040463]], "type": "seg"}, {"data": [[401.7341040462428, 249.34971098265896], [361.84971098265896, 269.0028901734104]], "type": "seg"}, {"data": [[280.3468208092486, 39.52312138728324], [279.76878612716763, 72.47109826589596]], "type": "seg"}, {"data": [[256.2, 83.4], [300.0, 78.8]], "type": "seg"}, {"data": [[217.57572174072266, 198.55838012695312], [230.18557739257812, 201.35540771484375]], "type": "seg"}, {"data": [[352.6011560693642, 299.0606936416185], [361.27167630057806, 295.014450867052]], "type": "seg"}, {"data": [[361.86163330078125, 87.93694305419922], [355.3222351074219, 165.22091674804688]], "type": "seg"}, {"data": [[361.27167630057806, 295.014450867052], [360.0716763005781, 285.814450867052]], "type": "seg"}, {"data": [[137.6, 187.0], [137.2, 221.6]], "type": "seg"}, {"data": [[218.8, 168.8], [0.0, 179.98554913294797]], "type": "seg"}, {"data": [[359.53757225433526, 277.6734104046243], [397.1098265895954, 256.86416184971097]], "type": "seg"}, {"data": [[37.13348765432099, 192.4189814814815], [136.47762345679013, 184.70293209876544]], "type": "seg"}, {"data": [[401.7341040462428, 249.34971098265896], [460.6936416184971, 262.06647398843927]], "type": "seg"}, {"data": [[230.18557739257812, 201.35540771484375], [236.01882934570312, 198.5247344970703]], "type": "seg"}, {"data": [[360.5734882258802, 296.1056277149063], [452.3913501657522, 328.2000171467764]], "type": "seg"}, {"data": [[138.15028901734104, 210.04335260115607], [217.57572174072266, 198.55838012695312]], "type": "seg"}, {"data": [[452.02312138728325, 335.47687861271675], [453.29457364341084, 325.2906976744186]], "type": "seg"}, {"data": [[235.83815028901734, 205.41907514450867], [279.76878612716763, 215.24566473988438]], "type": "seg"}, {"data": [[157.3170731707317, 87.70325203252033], [157.3170731707317, 163.3130081300813]], "type": "seg"}, {"data": [[56.2, 229.6], [122.8, 219.0]], "type": "seg"}, {"data": [[452.02312138728325, 335.47687861271675], [500.0, 352.2129990590133]], "type": "seg"}, {"data": [[430.05780346820814, 151.0838150289017], [431.21387283237, 145.30346820809248]], "type": "seg"}, {"data": [[315.02890173410407, 169.58092485549133], [358.3815028901734, 165.53468208092485]], "type": "seg"}, {"data": [[370.5202312138729, 149.34971098265896], [420.8092485549133, 151.0838150289017]], "type": "seg"}, {"data": [[348.5549132947977, 90.39017341040463], [367.46031746031747, 86.90476190476191]], "type": "seg"}, {"data": [[30.057803468208093, 64.95664739884394], [34.10404624277457, 174.2052023121387]], "type": "seg"}, {"data": [[353.1791907514451, 89.8121387283237], [346.82080924855495, 162.0664739884393]], "type": "seg"}, {"data": [[1.9290123456790125, 58.35262345679013], [217.0138888888889, 89.69907407407408]], "type": "seg"}, {"data": [[335.83815028901734, 163.22254335260115], [270.4, 168.2]], "type": "seg"}, {"data": [[217.34104046242777, 204.26300578034682], [218.8, 168.8]], "type": "seg"}, {"data": [[282.08092485549133, 171.893063583815], [276.87861271676303, 271.89306358381504]], "type": "seg"}, {"data": [[108.46957397460938, 82.18136596679688], [157.3170731707317, 87.70325203252033]], "type": "seg"}, {"data": [[36.2, 193.2], [29.479768786127167, 190.39017341040463]], "type": "seg"}, {"data": [[279.76878612716763, 72.47109826589596], [487.86127167630065, 49.34971098265896]], "type": "seg"}, {"data": [[487.86127167630065, 49.34971098265896], [456.8, 322.2]], "type": "seg"}, {"data": [[236.01882934570312, 198.5247344970703], [280.3468208092486, 208.88728323699422]], "type": "seg"}, {"data": [[108.39871978759766, 75.47855377197266], [109.4, 170.2]], "type": "seg"}, {"data": [[358.3815028901734, 165.53468208092485], [335.83815028901734, 163.22254335260115]], "type": "seg"}, {"data": [[352.6011560693642, 299.0606936416185], [361.4, 182.0]], "type": "seg"}, {"data": [[375.1445086705202, 93.85838150289018], [370.5202312138729, 149.34971098265896]], "type": "seg"}, {"data": [[217.34104046242777, 204.26300578034682], [138.0, 216.8]], "type": "seg"}, {"data": [[406.9364161849711, 188.07803468208093], [468.7861271676301, 196.17052023121386]], "type": "seg"}, {"data": [[387.2832369942197, 70.15895953757226], [385.5491329479769, 92.1242774566474]], "type": "seg"}, {"data": [[360.0716763005781, 285.814450867052], [353.3663024902344, 288.881103515625]], "type": "seg"}, {"data": [[23.109689712524414, 70.95123291015625], [29.29998779296875, 174.003173828125]], "type": "seg"}, {"data": [[30.323497772216797, 72.1303939819336], [108.46957397460938, 82.18136596679688]], "type": "seg"}, {"data": [[315.02890173410407, 169.58092485549133], [362.4277456647399, 174.78323699421964]], "type": "seg"}, {"data": [[0.0, 69.41056910569105], [23.109689712524414, 70.95123291015625]], "type": "seg"}, {"data": [[238.8, 92.4], [235.83815028901734, 205.41907514450867]], "type": "seg"}, {"data": [[420.8092485549133, 151.0838150289017], [430.05780346820814, 151.0838150289017]], "type": "seg"}, {"data": [[0.5780346820809257, 237.78901734104045], [31.79190751445087, 233.74277456647397]], "type": "seg"}, {"data": [[56.0, 234.8], [37.57225433526011, 237.78901734104045]], "type": "seg"}, {"data": [[427.8321652091907, 91.53878029263832], [421.97145061728395, 145.12245656149977]], "type": "seg"}, {"data": [[482.08092485549133, 86.92196531791907], [375.1445086705202, 93.85838150289018]], "type": "seg"}, {"data": [[37.57225433526011, 237.78901734104045], [36.2, 193.2]], "type": "seg"}, {"data": [[111.88271604938272, 143.22916666666669], [155.2854938271605, 147.56944444444446]], "type": "seg"}, {"data": [[375.7225433526012, 65.53468208092485], [387.2832369942197, 70.15895953757226]], "type": "seg"}, {"data": [[31.79190751445087, 227.96242774566474], [0.5780346820809257, 232.0086705202312]], "type": "seg"}, {"data": [[456.8, 322.2], [499.6, 336.4]], "type": "seg"}, {"data": [[421.9653179190752, 144.72543352601156], [475.7225433526011, 144.72543352601156]], "type": "seg"}, {"data": [[271.508487654321, 170.7175925925926], [352.52700617283955, 179.39814814814815]], "type": "seg"}, {"data": [[378.6127167630058, 171.893063583815], [471.09826589595383, 179.98554913294797]], "type": "seg"}, {"data": [[216.6, 89.4], [213.8, 167.8]], "type": "seg"}, {"data": [[123.2, 223.6], [137.2, 221.6]], "type": "seg"}, {"data": [[378.6127167630058, 171.893063583815], [362.4277456647399, 174.78323699421964]], "type": "seg"}, {"data": [[366.5108337402344, 197.4625701904297], [406.9364161849711, 188.07803468208093]], "type": "seg"}, {"data": [[397.1098265895954, 256.86416184971097], [461.27167630057806, 271.89306358381504]], "type": "seg"}, {"data": [[157.3170731707317, 163.3130081300813], [109.33149719238281, 163.71966552734375]], "type": "seg"}, {"data": [[360.0716763005781, 285.814450867052], [368.2599182128906, 183.01756286621094]], "type": "seg"}, {"data": [[31.79190751445087, 233.74277456647397], [37.57225433526011, 237.78901734104045]], "type": "seg"}, {"data": [[387.2832369942197, 70.15895953757226], [485.54913294797694, 58.59826589595376]], "type": "seg"}, {"data": [[406.3428783721994, 189.217356824417], [402.15665366369456, 248.6617476851852]], "type": "seg"}, {"data": [[379.76878612716763, 150.5057803468208], [378.6127167630058, 171.893063583815]], "type": "seg"}, {"data": [[353.3663024902344, 288.881103515625], [278.0346820809249, 262.6445086705202]], "type": "seg"}, {"data": [[276.87861271676303, 271.89306358381504], [352.6011560693642, 299.0606936416185]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/95.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [500, 500], "objects": [{"data": [[236.968085106383, 282.7127659574468], [234.88716888427734, 325.44232177734375]], "type": "seg"}, {"data": [[92.81914893617025, 317.28723404255317], [156.64893617021278, 315.1595744680851]], "type": "seg"}, {"data": [[386.85567010309273, 160.05154639175257], [383.7628865979382, 250.77319587628867]], "type": "seg"}, {"data": [[300.2659574468085, 289.09574468085106], [299.44488525390625, 333.2580261230469]], "type": "seg"}, {"data": [[336.340206185567, 280.67010309278356], [406.4432989690722, 285.3092783505155]], "type": "seg"}, {"data": [[314.17525773195877, 270.36082474226805], [314.69072164948454, 249.22680412371133]], "type": "seg"}, {"data": [[190.00771604938274, 22.665895061728396], [264.75694444444446, 25.559413580246915]], "type": "seg"}, {"data": [[176.8617021276596, 339.62765957446805], [349.7422680412371, 363.65979381443304]], "type": "seg"}, {"data": [[1.329787234042584, 42.819148936170244], [109.53608247422682, 68.81443298969072]], "type": "seg"}, {"data": [[272.60638297872345, 477.9255319148936], [359.8404255319149, 495.4787234042553]], "type": "seg"}, {"data": [[272.0744680851064, 448.1382978723404], [272.60638297872345, 477.9255319148936]], "type": "seg"}, {"data": [[433.24742268041234, 365.2061855670103], [463.14432989690727, 307.47422680412376]], "type": "seg"}, {"data": [[86.34020618556701, 299.22680412371136], [88.56382978723408, 338.031914893617]], "type": "seg"}, {"data": [[98.71134020618558, 188.4020618556701], [144.58762886597935, 187.37113402061857]], "type": "seg"}, {"data": [[239.43298969072163, 272.93814432989694], [290.4639175257732, 276.03092783505156]], "type": "seg"}, {"data": [[272.0744680851064, 448.1382978723404], [228.6082474226804, 499.74226804123714]], "type": "seg"}, {"data": [[68.88297872340428, 348.1382978723404], [7.18085106382982, 372.6063829787234]], "type": "seg"}, {"data": [[8.244680851063862, 475.2659574468085], [91.22340425531917, 497.6063829787234]], "type": "seg"}, {"data": [[449.1856766834833, 302.9255319148936], [457.1644000877385, 292.28723404255317]], "type": "seg"}, {"data": [[245.47872340425533, 159.84042553191492], [386.85567010309273, 160.05154639175257]], "type": "seg"}, {"data": [[176.84525115156833, 277.3936170212766], [449.1856766834833, 302.9255319148936]], "type": "seg"}, {"data": [[98.71134020618558, 221.90721649484536], [145.6185567010309, 220.36082474226805]], "type": "seg"}, {"data": [[292.0103092783505, 268.8144329896908], [335.82474226804123, 272.93814432989694]], "type": "seg"}, {"data": [[0.2577319587628608, 304.3814432989691], [22.938144329896886, 298.1958762886598]], "type": "seg"}, {"data": [[386.85567010309273, 211.5979381443299], [459.02061855670104, 213.659793814433]], "type": "seg"}, {"data": [[193.55670103092774, 137.88659793814435], [464.69072164948443, 131.18556701030928]], "type": "seg"}, {"data": [[464.69072164948443, 131.18556701030928], [456.4432989690722, 317.26804123711344]], "type": "seg"}, {"data": [[272.0744680851064, 448.1382978723404], [388.56382978723406, 472.0744680851064]], "type": "seg"}, {"data": [[88.56382978723408, 173.67021276595747], [153.45744680851067, 173.67021276595747]], "type": "seg"}, {"data": [[245.10309278350513, 243.04123711340208], [245.47872340425533, 159.84042553191492]], "type": "seg"}, {"data": [[290.97938144329896, 281.1855670103093], [334.2783505154639, 285.8247422680413]], "type": "seg"}, {"data": [[88.56382978723408, 338.031914893617], [68.47074127197266, 337.5574645996094]], "type": "seg"}, {"data": [[67.28723404255322, 307.1808510638298], [68.88297872340428, 348.1382978723404]], "type": "seg"}, {"data": [[109.53608247422682, 68.81443298969072], [498.6702127659575, 42.819148936170244]], "type": "seg"}, {"data": [[376.32978723404256, 374.7340425531915], [343.0412371134021, 371.3917525773196]], "type": "seg"}, {"data": [[37.61574074074074, 80.53626543209877], [46.77854938271605, 191.45447530864197]], "type": "seg"}, {"data": [[433.24742268041234, 365.2061855670103], [397.680412371134, 472.42268041237116]], "type": "seg"}, {"data": [[369.94680851063833, 296.01063829787233], [369.4148936170213, 342.28723404255317]], "type": "seg"}, {"data": [[193.3675148058785, 270.54452730862033], [193.55670103092774, 137.88659793814435]], "type": "seg"}, {"data": [[98.71134020618558, 188.4020618556701], [98.71134020618558, 221.90721649484536]], "type": "seg"}, {"data": [[406.5393518518519, 268.6149691358025], [451.3888888888889, 272.4729938271605]], "type": "seg"}, {"data": [[316.75531914893617, 134.3085106382979], [316.75531914893617, 160.90425531914897]], "type": "seg"}, {"data": [[195.94594594594594, 237.83783783783784], [457.47422680412376, 254.89690721649484]], "type": "seg"}, {"data": [[467.7835051546392, 373.4536082474227], [433.24742268041234, 365.2061855670103]], "type": "seg"}, {"data": [[153.45744680851067, 173.67021276595747], [156.64893617021278, 315.1595744680851]], "type": "seg"}, {"data": [[194.94680851063833, 171.01063829787236], [244.94680851063833, 172.07446808510642]], "type": "seg"}, {"data": [[240.1595744680851, 301.86170212765956], [368.3510638297872, 312.5]], "type": "seg"}, {"data": [[109.53608247422682, 68.81443298969072], [110.90425531914897, 149.2021276595745]], "type": "seg"}, {"data": [[349.7422680412371, 363.65979381443304], [272.0744680851064, 448.1382978723404]], "type": "seg"}, {"data": [[194.41489361702128, 205.05319148936172], [243.88297872340428, 206.6489361702128]], "type": "seg"}, {"data": [[195.79475308641977, 254.62962962962965], [230.99922839506175, 256.55864197530866]], "type": "seg"}, {"data": [[21.99074074074074, 299.18981481481484], [69.44444444444444, 305.55555555555554]], "type": "seg"}, {"data": [[188.07870370370372, 34.23996913580247], [261.3811728395062, 36.16898148148148]], "type": "seg"}, {"data": [[6.648936170212792, 422.6063829787234], [176.8617021276596, 339.62765957446805]], "type": "seg"}, {"data": [[176.84525115156833, 277.3936170212766], [176.31333625795133, 318.3510638297872]], "type": "seg"}, {"data": [[145.6185567010309, 220.36082474226805], [144.58762886597935, 187.37113402061857]], "type": "seg"}, {"data": [[176.31333625795133, 318.3510638297872], [395.9941873217811, 344.9468085106383]], "type": "seg"}, {"data": [[449.1856766834833, 302.9255319148936], [449.1856766834833, 328.98936170212767]], "type": "seg"}, {"data": [[389.4329896907217, 172.42268041237114], [462.62886597938143, 172.42268041237114]], "type": "seg"}, {"data": [[92.81914893617025, 317.28723404255317], [88.56382978723408, 173.67021276595747]], "type": "seg"}, {"data": [[0.4822530864197531, 71.85570987654322], [39.0625, 79.0895061728395]], "type": "seg"}, {"data": [[193.3675148058785, 270.54452730862033], [176.84525115156833, 277.3936170212766]], "type": "seg"}, {"data": [[4.521276595744709, 325.7978723404255], [67.28723404255322, 307.1808510638298]], "type": "seg"}, {"data": [[298.03240740740745, 421.4891975308642], [337.5771604938272, 427.758487654321]], "type": "seg"}, {"data": [[317.8047839506173, 399.3055555555556], [352.0447530864198, 404.61033950617286]], "type": "seg"}]} -------------------------------------------------------------------------------- /wireframe_tiny/markup/97.jpg.json: -------------------------------------------------------------------------------- 1 | {"size": [455, 500], "objects": [{"data": [[369.58860759493666, 150.31645569620252], [370.5412371134021, 175.0]], "type": "seg"}, {"data": [[421.48734177215186, 273.73417721518985], [405.6645569620253, 272.46835443037975]], "type": "seg"}, {"data": [[403.76582278481004, 138.9240506329114], [429.08227848101257, 150.31645569620252]], "type": "seg"}, {"data": [[18.322784810126578, 325.0], [39.208860759493646, 325.0]], "type": "seg"}, {"data": [[403.76582278481004, 275.63291139240505], [403.76582278481004, 138.9240506329114]], "type": "seg"}, {"data": [[68.32278481012658, 254.23137152551226], [68.95569620253163, 314.9908651963983]], "type": "seg"}, {"data": [[238.57594936708858, 375.63291139240505], [238.5824742268041, 250.77319587628867]], "type": "seg"}, {"data": [[260.7278481012658, 304.746835443038], [260.7278481012658, 366.1392405063291]], "type": "seg"}, {"data": [[393.63924050632903, 198.41772151898735], [393.63924050632903, 297.1518987341772]], "type": "seg"}, {"data": [[421.48734177215186, 227.53164556962025], [421.48734177215186, 273.73417721518985]], "type": "seg"}, {"data": [[435.4113924050633, 307.9113924050633], [434.77848101265823, 352.8481012658228]], "type": "seg"}, {"data": [[40.47468354430377, 250.43390317108182], [68.32278481012658, 254.23137152551226]], "type": "seg"}, {"data": [[353.13291139240505, 169.9367088607595], [351.8670886075949, 184.49367088607596]], "type": "seg"}, {"data": [[333.9432989690722, 180.15463917525773], [332.879746835443, 329.43037974683546]], "type": "seg"}, {"data": [[358.8291139240506, 296.5189873417721], [358.8291139240506, 374.36708860759495]], "type": "seg"}, {"data": [[84.77848101265822, 292.0886075949367], [92.37341772151898, 293.3544303797468]], "type": "seg"}, {"data": [[17.05696202531645, 335.8769411457654], [17.6898734177215, 260.56048544956286]], "type": "seg"}, {"data": [[413.89240506329105, 314.873417721519], [413.89240506329105, 341.4556962025316]], "type": "seg"}, {"data": [[190.12886597938143, 292.5257731958763], [190.4746835443038, 379.43037974683546]], "type": "seg"}, {"data": [[232.19593049839963, 251.73164580475537], [190.05460176611797, 293.0357295953361]], "type": "seg"}, {"data": [[40.47468354430377, 250.43390317108182], [41.7405063291139, 327.6490930444995]], "type": "seg"}, {"data": [[427.1835443037974, 278.79746835443035], [413.89240506329105, 280.0632911392405]], "type": "seg"}, {"data": [[194.76804123711338, 193.04123711340205], [209.46202531645565, 196.00352342424637]], "type": "seg"}, {"data": [[239.20886075949363, 278.1645569620253], [294.2525773195876, 282.21649484536084]], "type": "seg"}, {"data": [[28.449367088607588, 233.3452955761451], [28.27319587628864, 254.89690721649492]], "type": "seg"}, {"data": [[140.4746835443038, 297.7848101265823], [179.3041237113402, 261.59793814432993]], "type": "seg"}, {"data": [[143.6417322834646, 303.93700787401576], [185.41139240506328, 300.3164556962025]], "type": "seg"}, {"data": [[265.7911392405063, 133.86075949367088], [304.39873417721515, 116.1392405063291]], "type": "seg"}, {"data": [[294.2525773195876, 282.21649484536084], [294.7680412371134, 294.5876288659794]], "type": "seg"}, {"data": [[293.6392405063291, 208.66175127234763], [293.6392405063291, 218.78833355082864]], "type": "seg"}, {"data": [[143.44796667809786, 304.4780771319159], [144.00612997256516, 340.75869127229083]], "type": "seg"}, {"data": [[429.08227848101257, 150.31645569620252], [427.1835443037974, 278.79746835443035]], "type": "seg"}, {"data": [[78.98010616712392, 338.2469564471879], [78.70102451989027, 362.52705975651577]], "type": "seg"}, {"data": [[403.132911392405, 314.24050632911394], [402.49999999999994, 339.55696202531647]], "type": "seg"}, {"data": [[323.38607594936707, 166.77215189873417], [324.0189873417721, 183.22784810126583]], "type": "seg"}, {"data": [[403.76582278481004, 138.9240506329114], [369.58860759493666, 150.31645569620252]], "type": "seg"}, {"data": [[224.65189873417717, 192.206055069816], [172.08762886597935, 212.11340206185568]], "type": "seg"}, {"data": [[244.75460462391405, 232.75409379286694], [243.63827803497944, 270.98827946387746]], "type": "seg"}, {"data": [[213.63811728395063, 318.28703703703707], [212.19135802469137, 347.704475308642]], "type": "seg"}, {"data": [[140.4746835443038, 297.7848101265823], [190.12886597938143, 292.5257731958763]], "type": "seg"}, {"data": [[244.76804123711338, 231.18556701030928], [293.6392405063291, 218.78833355082864]], "type": "seg"}, {"data": [[294.7680412371134, 294.5876288659794], [239.20886075949363, 291.4556962025316]], "type": "seg"}, {"data": [[51.23417721518986, 220.68706772804384], [110.09493670886074, 230.81365000652485]], "type": "seg"}, {"data": [[50.60126582278478, 252.332637348297], [51.23417721518986, 220.68706772804384]], "type": "seg"}, {"data": [[230.85051546391753, 249.7422680412371], [238.5824742268041, 250.77319587628867]], "type": "seg"}, {"data": [[371.8171296296297, 175.54012345679013], [402.6813271604939, 164.93055555555557]], "type": "seg"}, {"data": [[413.89240506329105, 280.0632911392405], [413.89240506329105, 300.3164556962025]], "type": "seg"}, {"data": [[98.06962025316453, 259.8101265822785], [98.06962025316453, 298.4177215189873]], "type": "seg"}, {"data": [[224.65189873417717, 192.206055069816], [293.6392405063291, 208.66175127234763]], "type": "seg"}, {"data": [[363.36430469821676, 303.0826688957476], [363.36430469821676, 375.0857338820302]], "type": "seg"}, {"data": [[413.89240506329105, 280.0632911392405], [393.6392517089844, 276.9524841308594]], "type": "seg"}, {"data": [[172.08762886597935, 212.11340206185568], [172.75316455696196, 221.95289051285397]], "type": "seg"}, {"data": [[333.9432989690722, 180.15463917525773], [393.63924050632903, 198.41772151898735]], "type": "seg"}, {"data": [[161.26288659793812, 204.89690721649484], [194.76804123711338, 193.04123711340205]], "type": "seg"}, {"data": [[185.41139240506328, 300.3164556962025], [184.9742268041237, 366.75257731958766]], "type": "seg"}, {"data": [[239.84177215189868, 372.46835443037975], [289.8417721518987, 369.30379746835445]], "type": "seg"}, {"data": [[224.01898734177212, 203.59846013310712], [293.6392405063291, 218.78833355082864]], "type": "seg"}, {"data": [[190.4746835443038, 379.43037974683546], [238.57594936708858, 375.63291139240505]], "type": "seg"}, {"data": [[260.7278481012658, 366.1392405063291], [313.44594594594594, 371.35135135135135]], "type": "seg"}, {"data": [[113.02806712962963, 337.1306298582533], [112.74898548239598, 366.7132844650206]], "type": "seg"}, {"data": [[293.00632911392404, 193.9873417721519], [333.9432989690722, 180.15463917525773]], "type": "seg"}, {"data": [[300.6012658227848, 159.1772151898734], [269.58860759493666, 169.30379746835442]], "type": "seg"}, {"data": [[194.76804123711338, 193.04123711340205], [194.9050632911392, 202.96554874070208]], "type": "seg"}, {"data": [[126.55063291139238, 224.48453608247422], [92.37341772151898, 238.4085867153856]], "type": "seg"}, {"data": [[161.26288659793812, 204.89690721649484], [159.46202531645565, 277.6490930444995]], "type": "seg"}, {"data": [[358.8291139240506, 296.5189873417721], [439.84177215189874, 304.746835443038]], "type": "seg"}, {"data": [[39.90867555441244, 339.0842013888889], [39.90867555441244, 355.55001857567447]], "type": "seg"}, {"data": [[302.3726851851852, 118.63425925925927], [301.8904320987655, 171.6820987654321]], "type": "seg"}, {"data": [[267.650462962963, 133.8252314814815], [267.650462962963, 177.22800925925927]], "type": "seg"}, {"data": [[127.81939443301327, 224.1025627286237], [128.0984760802469, 310.89695501828993]], "type": "seg"}, {"data": [[92.37341772151898, 238.4085867153856], [92.37341772151898, 311.82630823437296]], "type": "seg"}, {"data": [[363.25949367088606, 302.8481012658228], [435.4113924050633, 307.9113924050633]], "type": "seg"}, {"data": [[241.159793814433, 255.41237113402062], [288.5824742268041, 261.59793814432993]], "type": "seg"}, {"data": [[224.01898734177212, 203.59846013310712], [224.65189873417717, 192.206055069816]], "type": "seg"}, {"data": [[51.23417721518986, 220.68706772804384], [28.449367088607588, 233.3452955761451]], "type": "seg"}, {"data": [[336.04430379746833, 297.7848101265823], [358.8291139240506, 296.5189873417721]], "type": "seg"}, {"data": [[235.96560846560845, 190.47619047619048], [294.27215189873414, 168.67088607594937]], "type": "seg"}, {"data": [[304.7571587791495, 116.37704689643347], [327.0836905578418, 162.9836819844536]], "type": "seg"}, {"data": [[85.41139240506327, 259.17721518987344], [84.77848101265822, 292.0886075949367]], "type": "seg"}, {"data": [[177.81645569620252, 223.1012658227848], [179.3041237113402, 261.59793814432993]], "type": "seg"}, {"data": [[138.4244970278921, 298.8964441872428], [138.9826603223594, 341.03777291952446]], "type": "seg"}, {"data": [[230.85051546391753, 249.7422680412371], [231.61392405063287, 208.54430379746836]], "type": "seg"}, {"data": [[301.12909736511205, 174.9841928155007], [331.82807856081394, 163.5418452789209]], "type": "seg"}, {"data": [[269.58860759493666, 143.9873417721519], [299.9683544303797, 133.22784810126583]], "type": "seg"}, {"data": [[129.7260802469136, 253.66512345679013], [158.179012345679, 255.1118827160494]], "type": "seg"}, {"data": [[233.94329896907215, 230.6701030927835], [244.76804123711338, 231.18556701030928]], "type": "seg"}, {"data": [[439.84177215189874, 304.746835443038], [439.2088607594936, 355.37974683544303]], "type": "seg"}, {"data": [[405.6645569620253, 223.73417721518987], [421.48734177215186, 227.53164556962025]], "type": "seg"}, {"data": [[332.94440514974855, 163.82092692615456], [384.0163465935071, 182.51939729080934]], "type": "seg"}, {"data": [[289.0979381443299, 221.39175257731958], [289.61340206185565, 278.60824742268045]], "type": "seg"}, {"data": [[172.75316455696196, 221.95289051285397], [224.01898734177212, 203.59846013310712]], "type": "seg"}, {"data": [[294.27215189873414, 168.67088607594937], [293.00632911392404, 193.9873417721519]], "type": "seg"}, {"data": [[308.8291139240506, 173.1012658227848], [309.71649484536084, 188.4020618556701]], "type": "seg"}, {"data": [[128.37755772748056, 223.82348108139004], [160.47194715935072, 229.68419567329676]], "type": "seg"}, {"data": [[18.888245884773664, 261.62229938271605], [39.785879629629626, 252.7809927983539]], "type": "seg"}]} --------------------------------------------------------------------------------