├── .gitmodules ├── README.md ├── assets ├── images │ ├── demo_deeplsd.gif │ ├── demo_moving_camera.gif │ └── line-segment-detection.jpg └── run.sh └── thirdparty ├── CannyLines ├── CANNYLINES A PARAMETER-FREE LINE SEGMENT DETECTOR.pdf ├── CMakeLists.txt └── src │ ├── CannyLine.cpp │ ├── CannyLine.h │ ├── MetaLine.cpp │ ├── MetaLine.h │ ├── QuickSort.h │ ├── buffer_2d.cpp │ ├── buffer_2d.h │ ├── main.cpp │ └── types.h ├── LSD ├── COPYING ├── LSD a Line Segment Detector.pdf ├── Makefile ├── README.md ├── chairs.lsd.eps ├── chairs.lsd.txt ├── chairs.pgm ├── doc │ ├── annotated.html │ ├── doxygen.css │ ├── doxygen.png │ ├── files.html │ ├── form_0.png │ ├── form_1.png │ ├── form_10.png │ ├── form_2.png │ ├── form_3.png │ ├── form_4.png │ ├── form_5.png │ ├── form_6.png │ ├── form_7.png │ ├── form_8.png │ ├── form_9.png │ ├── formula.repository │ ├── functions.html │ ├── functions_vars.html │ ├── globals.html │ ├── globals_defs.html │ ├── globals_func.html │ ├── globals_type.html │ ├── graph_legend.dot │ ├── graph_legend.html │ ├── graph_legend.png │ ├── index.html │ ├── lsd_8c-source.html │ ├── lsd_8c.html │ ├── lsd_8c__incl.png │ ├── lsd_8c_a15_cgraph.png │ ├── lsd_8c_a16_cgraph.png │ ├── lsd_8c_a17_cgraph.png │ ├── lsd_8c_a18_cgraph.png │ ├── lsd_8c_a19_cgraph.png │ ├── lsd_8c_a20_cgraph.png │ ├── lsd_8c_a21_cgraph.png │ ├── lsd_8c_a22_cgraph.png │ ├── lsd_8c_a23_cgraph.png │ ├── lsd_8c_a24_cgraph.png │ ├── lsd_8c_a25_cgraph.png │ ├── lsd_8c_a26_cgraph.png │ ├── lsd_8c_a27_cgraph.png │ ├── lsd_8c_a28_cgraph.png │ ├── lsd_8c_a29_cgraph.png │ ├── lsd_8c_a30_cgraph.png │ ├── lsd_8c_a31_cgraph.png │ ├── lsd_8c_a36_cgraph.png │ ├── lsd_8c_a37_cgraph.png │ ├── lsd_8c_a38_cgraph.png │ ├── lsd_8c_a39_cgraph.png │ ├── lsd_8c_a40_cgraph.png │ ├── lsd_8c_a41_cgraph.png │ ├── lsd_8c_a42_cgraph.png │ ├── lsd_8c_a43_cgraph.png │ ├── lsd_8c_a44_cgraph.png │ ├── lsd_8c_a45_cgraph.png │ ├── lsd_8c_a46_cgraph.png │ ├── lsd_8c_a47_cgraph.png │ ├── lsd_8c_a48_cgraph.png │ ├── lsd_8c_a49_cgraph.png │ ├── lsd_8c_a50_cgraph.png │ ├── lsd_8c_a51_cgraph.png │ ├── lsd_8c_a52_cgraph.png │ ├── lsd_8c_a53_cgraph.png │ ├── lsd_8h-source.html │ ├── lsd_8h.html │ ├── lsd_8h__dep__incl.png │ ├── lsd_8h_a10_cgraph.png │ ├── lsd_8h_a11_cgraph.png │ ├── lsd_8h_a12_cgraph.png │ ├── lsd_8h_a13_cgraph.png │ ├── lsd_8h_a14_cgraph.png │ ├── lsd_8h_a15_cgraph.png │ ├── lsd_8h_a16_cgraph.png │ ├── lsd_8h_a17_cgraph.png │ ├── lsd_8h_a4_cgraph.png │ ├── lsd_8h_a5_cgraph.png │ ├── lsd_8h_a6_cgraph.png │ ├── lsd_8h_a7_cgraph.png │ ├── lsd_8h_a8_cgraph.png │ ├── lsd_8h_a9_cgraph.png │ ├── structcoorlist.html │ ├── structcoorlist__coll__graph.png │ ├── structimage__char__s.html │ ├── structimage__double__s.html │ ├── structimage__int__s.html │ ├── structntuple__list__s.html │ ├── structpoint.html │ ├── structrect.html │ └── structrect__iter.html ├── doxygen.config ├── lsd.c ├── lsd.h ├── lsd_call_example.c └── lsd_cmd.c ├── LSWMS ├── CMakeLists.txt ├── LSWMS.cpp ├── LSWMS.h ├── PAA09_MNietoCCuevasLSalgadoNGarcia_v6.0.pdf ├── facade.avi ├── image110.jpg ├── image205.jpg ├── image87.jpg ├── image9.jpg └── main.cpp └── MCMLSD ├── Almazan_MCMLSD_A_Dynamic_CVPR_2017_paper.pdf ├── MCMLSD ├── .DS_Store ├── Evaluation Code.zip ├── Imgs │ ├── .DS_Store │ ├── P1040779.JPG │ ├── P1040812hr.JPG │ ├── P1040823.jpg │ └── P1040823hr.JPG ├── Readme.txt ├── code │ ├── .DS_Store │ ├── ElderZuckerEdgeDetector │ │ ├── code │ │ │ ├── checkInParam.m │ │ │ ├── checkOutParam.m │ │ │ ├── check_save_requirements.m │ │ │ ├── convolve_2.m │ │ │ ├── d2gauss.m │ │ │ ├── derivative2nd.m │ │ │ ├── elderEdge.m │ │ │ ├── elderEdge.m~ │ │ │ ├── find_edges.c │ │ │ ├── find_edges.mexa64 │ │ │ ├── find_edges.mexmaci64 │ │ │ ├── find_edges.mexw64 │ │ │ ├── g1scale.m │ │ │ ├── g1steer.m │ │ │ ├── g2scale.m │ │ │ ├── g2steer.m │ │ │ ├── gauss.m │ │ │ ├── gradient.m │ │ │ ├── main_edge.m │ │ │ ├── mat2hough_scale.m │ │ │ ├── plot_edgelmap.m │ │ │ ├── round2frac.m │ │ │ ├── run_elderEdge.m │ │ │ ├── scalespace.m │ │ │ └── setvalues.m │ │ ├── edge.jpg │ │ ├── filters │ │ │ ├── g1x05.ascii │ │ │ ├── g1x1.ascii │ │ │ ├── g1y05.ascii │ │ │ ├── g1y1.ascii │ │ │ ├── g2x05.ascii │ │ │ ├── g2x1.ascii │ │ │ ├── g2y05.ascii │ │ │ ├── g2y1.ascii │ │ │ ├── gx05.ascii │ │ │ ├── gx1.ascii │ │ │ ├── gy05.ascii │ │ │ └── gy1.ascii │ │ └── images │ │ │ ├── P1020177.jpg │ │ │ └── peppers │ │ │ └── img.jpg │ ├── computeKernel.m │ ├── determine_hough_lines_kernel_vote_remove.m │ ├── get_all_segments_assoc_edgeremoval.m │ ├── get_line_segment_DP_edgeremoval.m │ ├── hough_find_peaks_vote_removal.m │ ├── kernelInitialization.m │ ├── lineSegmentation_HighRes.m │ ├── mexfiles │ │ ├── .DS_Store │ │ ├── hmmParameters.m │ │ ├── hmmParameters.mexa64 │ │ ├── hmmParameters.mexmaci64 │ │ ├── hmmParameters.prj │ │ ├── mexRemoveVotes_v3_scale.c │ │ ├── mexRemoveVotes_v3_scale.mexa64 │ │ ├── mexRemoveVotes_v3_scale.mexmaci64 │ │ ├── mexVoteEdges_v3_scale.c │ │ ├── mexVoteEdges_v3_scale.mexa64 │ │ ├── mexVoteEdges_v3_scale.mexmaci64 │ │ ├── returnLines.m │ │ ├── returnLines.mexa64 │ │ ├── returnLines.mexmaci64 │ │ ├── returnLines.prj │ │ ├── sampleLine.m │ │ ├── sampleLine.mexa64 │ │ ├── sampleLine.mexmaci64 │ │ └── sampleLine.prj │ ├── parameters │ │ ├── .DS_Store │ │ └── likelihood_model.mat │ ├── precompute_kernels_sparse_res2.m │ ├── project_point_to_line_segment_vec.m │ ├── run_lineSegmentAlgorithm.m │ ├── trace_Back.m │ └── utils │ │ ├── getDebug.m │ │ ├── getImg.m │ │ ├── getLegend.m │ │ ├── setDebug.m │ │ ├── setImg.m │ │ └── setLegend.m └── demo_start_v2.m └── __MACOSX ├── ._MCMLSD └── MCMLSD ├── ._.DS_Store ├── ._Evaluation Code.zip ├── ._Imgs ├── ._Readme.txt ├── ._code ├── ._demo_start_v2.m ├── Imgs ├── ._.DS_Store ├── ._P1040779.JPG ├── ._P1040812hr.JPG ├── ._P1040823.jpg └── ._P1040823hr.JPG └── code ├── ._.DS_Store ├── ._ElderZuckerEdgeDetector ├── ._computeKernel.m ├── ._determine_hough_lines_kernel_vote_remove.m ├── ._get_all_segments_assoc_edgeremoval.m ├── ._get_line_segment_DP_edgeremoval.m ├── ._hough_find_peaks_vote_removal.m ├── ._kernelInitialization.m ├── ._lineSegmentation_HighRes.m ├── ._mexfiles ├── ._parameters ├── ._precompute_kernels_sparse_res2.m ├── ._project_point_to_line_segment_vec.m ├── ._run_lineSegmentAlgorithm.m ├── ._trace_Back.m ├── ._utils ├── ElderZuckerEdgeDetector ├── ._code ├── ._edge.jpg ├── ._filters ├── ._images ├── code │ ├── ._checkInParam.m │ ├── ._checkOutParam.m │ ├── ._check_save_requirements.m │ ├── ._convolve_2.m │ ├── ._d2gauss.m │ ├── ._derivative2nd.m │ ├── ._elderEdge.m │ ├── ._elderEdge.m~ │ ├── ._find_edges.c │ ├── ._find_edges.mexa64 │ ├── ._find_edges.mexmaci64 │ ├── ._find_edges.mexw64 │ ├── ._g1scale.m │ ├── ._g1steer.m │ ├── ._g2scale.m │ ├── ._g2steer.m │ ├── ._gauss.m │ ├── ._gradient.m │ ├── ._main_edge.m │ ├── ._mat2hough_scale.m │ ├── ._plot_edgelmap.m │ ├── ._round2frac.m │ ├── ._run_elderEdge.m │ ├── ._scalespace.m │ └── ._setvalues.m ├── filters │ ├── ._g1x05.ascii │ ├── ._g1x1.ascii │ ├── ._g1y05.ascii │ ├── ._g1y1.ascii │ ├── ._g2x05.ascii │ ├── ._g2x1.ascii │ ├── ._g2y05.ascii │ ├── ._g2y1.ascii │ ├── ._gx05.ascii │ ├── ._gx1.ascii │ ├── ._gy05.ascii │ ├── ._gy1.ascii │ └── ._resource.frk └── images │ ├── ._P1020177.jpg │ ├── ._peppers │ └── peppers │ └── ._img.jpg ├── mexfiles ├── ._.DS_Store ├── ._hmmParameters.m ├── ._hmmParameters.mexa64 ├── ._hmmParameters.mexmaci64 ├── ._hmmParameters.prj ├── ._mexRemoveVotes_v3_scale.c ├── ._mexRemoveVotes_v3_scale.mexa64 ├── ._mexRemoveVotes_v3_scale.mexmaci64 ├── ._mexVoteEdges_v3_scale.c ├── ._mexVoteEdges_v3_scale.mexa64 ├── ._mexVoteEdges_v3_scale.mexmaci64 ├── ._returnLines.m ├── ._returnLines.mexa64 ├── ._returnLines.mexmaci64 ├── ._returnLines.prj ├── ._sampleLine.m ├── ._sampleLine.mexa64 ├── ._sampleLine.mexmaci64 └── ._sampleLine.prj ├── parameters ├── ._.DS_Store └── ._likelihood_model.mat └── utils ├── ._getDebug.m ├── ._getImg.m ├── ._getLegend.m ├── ._setDebug.m ├── ._setImg.m └── ._setLegend.m /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "thirdparty/DeepLSD"] 2 | path = thirdparty/DeepLSD 3 | url = https://github.com/cvg/DeepLSD.git 4 | [submodule "thirdparty/MLSD"] 5 | path = thirdparty/MLSD 6 | url = https://github.com/navervision/mlsd.git 7 | [submodule "thirdparty/F-Clip"] 8 | path = thirdparty/F-Clip 9 | url = https://github.com/Delay-Xili/F-Clip.git 10 | [submodule "thirdparty/SOLD2"] 11 | path = thirdparty/SOLD2 12 | url = https://github.com/cvg/SOLD2.git 13 | [submodule "thirdparty/LETR"] 14 | path = thirdparty/LETR 15 | url = https://github.com/mlpc-ucsd/LETR.git 16 | [submodule "thirdparty/HAWP"] 17 | path = thirdparty/HAWP 18 | url = https://github.com/cherubicXN/hawp.git 19 | [submodule "thirdparty/TP-LSD"] 20 | path = thirdparty/TP-LSD 21 | url = https://github.com/Siyuada7/TP-LSD.git 22 | [submodule "thirdparty/ULSD"] 23 | path = thirdparty/ULSD 24 | url = https://github.com/lh9171338/Unified-Line-Segment-Detection.git 25 | [submodule "thirdparty/DHTLP"] 26 | path = thirdparty/DHTLP 27 | url = https://github.com/yanconglin/Deep-Hough-Transform-Line-Priors.git 28 | [submodule "thirdparty/AFM-LSD"] 29 | path = thirdparty/AFM-LSD 30 | url = https://github.com/cherubicXN/afm_cvpr2019.git 31 | [submodule "thirdparty/LCNN"] 32 | path = thirdparty/LCNN 33 | url = https://github.com/zhou13/lcnn.git 34 | [submodule "thirdparty/LBD"] 35 | path = thirdparty/LBD 36 | url = https://github.com/mtamburrano/LBD_Descriptor.git 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |


Line Segment Detection
A collection of line segment detection algorithms

3 | 4 |

5 | 6 | ## 7 | 8 | This repository hosts the papers with code for line segment detection, enjoy yourself. 9 | 10 | 11 | 12 | ![SOLD2](assets/images/demo_moving_camera.gif) 13 | 14 | 15 | 16 | ## Usage 17 | 18 | ``` bash 19 | git clone --recurse-submodules https://github.com/Vincentqyw/LineSegmentsDetection.git 20 | ``` 21 | 22 | ## DeepLSD 23 | 24 | - Title: "DeepLSD: Line Segment Detection and Refinement with Deep Image Gradients", Arxiv 2022. 25 | - Paper: https://arxiv.org/abs/2212.07766 26 | - Code: https://github.com/cvg/DeepLSD 27 | 28 | ## M-LSD 29 | 30 | - Title: "M-LSD: Towards Light-weight and Real-time Line Segment Detection", AAAI 2022. 31 | - Paper: [https://arxiv.org/abs/2106.00186](https://arxiv.org/abs/2106.00186) 32 | - Code: https://github.com/navervision/mlsd 33 | 34 | ## F-Clip 35 | 36 | - Title: "Fully Convolutional Line Parsing", Neurocomputing 2022. 37 | - Paper: [https://arxiv.org/abs/2104.11207](https://arxiv.org/abs/2104.11207) 38 | - Code: https://github.com/Delay-Xili/F-Clip 39 | 40 | ## SOLD2 41 | 42 | - Title: "SOLD2: Self-supervised Occlusion-aware Line Description and Detection", CVPR 2021. 43 | - Paper: https://arxiv.org/abs/2104.03362 44 | - Code: https://github.com/cvg/SOLD2, [[Kornia Tutorial]](https://kornia-tutorials.readthedocs.io/en/latest/line_detection_and_matching_sold2.html) 45 | 46 | ## LETR 47 | 48 | - Title: "Line Segment Detection Using Transformers without Edges", CVPR 2021. 49 | - Paper: [https://arxiv.org/abs/2101.01909](https://arxiv.org/abs/2101.01909) 50 | - Code: https://github.com/mlpc-ucsd/LETR 51 | 52 | ## HAWP 53 | 54 | - Title: "Holistically-Attracted Wireframe Parsing: From Supervised Learning to Self-Supervised Learning", CVPR 2020. 55 | - Paper: https://arxiv.org/abs/2210.12971 56 | - Code: https://github.com/cherubicXN/hawp 57 | 58 | ## TP-LSD 59 | 60 | - Title: "TP-LSD: Tri-Points Based Line Segment Detector", ECCV 2020. 61 | - Paper: https://arxiv.org/abs/2009.05505 62 | - Code: https://github.com/Siyuada7/TP-LSD 63 | 64 | ## ULSD 65 | 66 | - Title: "ULSD: Unified Line Segment Detection across Pinhole, Fisheye, and Spherical Cameras", ISPRS 2020. 67 | - Paper: https://arxiv.org/abs/2011.03174 68 | - Code: https://github.com/lh9171338/Unified-Line-Segment-Detection 69 | 70 | ## Deep-Hough-Transform-Line-Priors 71 | 72 | - Title: "Deep Hough-Transform Line Priors", ECCV 2020. 73 | - Paper: [https://arxiv.org/abs/2007.09493](https://arxiv.org/abs/2007.09493) 74 | - Code: https://github.com/yanconglin/Deep-Hough-Transform-Line-Priors 75 | 76 | ## AFM-LSD 77 | 78 | - Title: "Learning Attraction Field Representation for Robust Line Segment Detection", CVPR 2019. 79 | - Paper: [https://arxiv.org/abs/1812.02122](https://arxiv.org/abs/1812.02122) 80 | - Code: https://github.com/cherubicXN/afm_cvpr2019 81 | 82 | ## L-CNN 83 | 84 | - Title: "End-to-End Wireframe Parsing", ICCV 2019. 85 | - Paper: [https://arxiv.org/abs/1905.03246](https://arxiv.org/abs/1905.03246) 86 | - Code: https://github.com/zhou13/lcnn 87 | 88 | ## MCMLSD 89 | 90 | - Title: "MCMLSD: A Dynamic Programming Approach to Line Segment Detection", CVPR 2017. 91 | - Paper: http://openaccess.thecvf.com/content_cvpr_2017/papers/Almazan_MCMLSD_A_Dynamic_CVPR_2017_paper.pdf 92 | - Code: http://www.elderlab.yorku.ca/?smd_process_download=1&download_id=8423 93 | 94 | ## CannyLines 95 | 96 | - Title: "CannyLines: A Parameter-Free Line Segment Detector", ICIP 2015. 97 | - Project Page: https://cvrs.whu.edu.cn/cannylines 98 | - Paper: http://cvrs.whu.edu.cn/projects/cannyLines/papers/CannyLines-ICIP2015.pdf 99 | - Code: http://cvrs.whu.edu.cn/projects/cannyLines/codes/CannyLines-v3.rar 100 | 101 | ## EDline 102 | 103 | - Title: "Edge Drawing: A Combined Real-Time Edge and Segment Detector", JVCIR 2012. 104 | - Paper: https://www.sciencedirect.com/science/article/abs/pii/S1047320312000831 105 | - Code: https://github.com/mtamburrano/LBD_Descriptor 106 | 107 | ## LSD 108 | 109 | - Title: "LSD: a Line Segment Detector", Image Processing On Line 2012. 110 | - Project Page: http://www.ipol.im/pub/art/2012/gjmr-lsd/ 111 | - Paper: http://www.ipol.im/pub/art/2012/gjmr-lsd/article.pdf 112 | - Code: http://www.ipol.im/pub/art/2012/gjmr-lsd/lsd_1.5.zip 113 | 114 | ## LSWMS 115 | 116 | - Title: "Line segment detection using weighted mean shift procedures on a 2D slice sampling strategy", Pattern Analysis and Applications 2011. 117 | - Paper: [https://www.researchgate.net/LSWMS.pdf](https://www.researchgate.net/profile/Marcos_Nieto3/publication/220654859_Line_segment_detection_using_weighted_mean_shift_procedures_on_a_2D_slice_sampling_strategy/links/56a5d56a08aef91c8c16b1ac.pdf?inViewer=0&origin=publication_detail&pdfJsDownload=0) 118 | - Code: https://sourceforge.net/projects/lswms/ 119 | -------------------------------------------------------------------------------- /assets/images/demo_deeplsd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/assets/images/demo_deeplsd.gif -------------------------------------------------------------------------------- /assets/images/demo_moving_camera.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/assets/images/demo_moving_camera.gif -------------------------------------------------------------------------------- /assets/images/line-segment-detection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/assets/images/line-segment-detection.jpg -------------------------------------------------------------------------------- /assets/run.sh: -------------------------------------------------------------------------------- 1 | ## [DELETE SUBMODULES] 2 | # git rm --cached SOLD2 3 | # git rm --cached DeepLSD 4 | # git rm --cached TP-LSD 5 | # git rm --cached Unified-Line-Segment-Detection 6 | # git rm --cached LETR 7 | # git rm --cached Deep-Hough-Transform-Line-Priors 8 | # git rm --cached F-Clip 9 | # git rm --cached mlsd 10 | # git rm --cached afm_cvpr2019 11 | # git rm --cached lcnn 12 | # git rm --cached hawp 13 | 14 | # rm -rf SOLD2 15 | # rm -rf DeepLSD 16 | # rm -rf TP-LSD 17 | # rm -rf Unified-Line-Segment-Detection 18 | # rm -rf LETR 19 | # rm -rf Deep-Hough-Transform-Line-Priors 20 | # rm -rf F-Clip 21 | # rm -rf mlsd 22 | # rm -rf afm_cvpr2019 23 | # rm -rf lcnn 24 | # rm -rf hawp 25 | 26 | # rm .gitmodules 27 | 28 | ## [ADD SUBMODULES] 29 | # mkdir thirdparty 30 | # git submodule add https://github.com/cvg/DeepLSD.git thirdparty/DeepLSD 31 | # git submodule add https://github.com/navervision/mlsd.git thirdparty/MLSD 32 | # git submodule add https://github.com/Delay-Xili/F-Clip.git thirdparty/F-Clip 33 | # git submodule add https://github.com/cvg/SOLD2.git thirdparty/SOLD2 34 | # git submodule add https://github.com/mlpc-ucsd/LETR.git thirdparty/LETR 35 | # git submodule add https://github.com/cherubicXN/hawp.git thirdparty/HAWP 36 | # git submodule add https://github.com/Siyuada7/TP-LSD.git thirdparty/TP-LSD 37 | # git submodule add https://github.com/lh9171338/Unified-Line-Segment-Detection.git thirdparty/ULSD 38 | # git submodule add https://github.com/yanconglin/Deep-Hough-Transform-Line-Priors.git thirdparty/DHTLP 39 | # git submodule add https://github.com/cherubicXN/afm_cvpr2019.git thirdparty/AFM-LSD 40 | # git submodule add https://github.com/zhou13/lcnn.git thirdparty/LCNN 41 | # git submodule add https://github.com/mtamburrano/LBD_Descriptor.git thirdparty/LBD -------------------------------------------------------------------------------- /thirdparty/CannyLines/CANNYLINES A PARAMETER-FREE LINE SEGMENT DETECTOR.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/CannyLines/CANNYLINES A PARAMETER-FREE LINE SEGMENT DETECTOR.pdf -------------------------------------------------------------------------------- /thirdparty/CannyLines/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # set project's name 2 | PROJECT( CannyLine ) 3 | 4 | ############################################################################### 5 | # CMake settings 6 | CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3) 7 | 8 | # this command finds OpenCV libraries and sets all required variables 9 | FIND_PACKAGE(OpenCV REQUIRED) 10 | 11 | FILE(GLOB_RECURSE HDRS_FILES *.h *.hpp) 12 | FILE(GLOB_RECURSE SRCS_FILES *.c *.cpp) 13 | 14 | #ADD_LIBRARY(${PROJECT_NAME} ${HDRS_FILES} ${SRCS_FILES}) 15 | #TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS}) 16 | 17 | ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS_FILES} ${HDRS_FILES}) 18 | TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS}) 19 | -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/CannyLine.cpp: -------------------------------------------------------------------------------- 1 | #include "CannyLine.h" 2 | #include "MetaLine.h" 3 | 4 | CannyLine::CannyLine(void) 5 | { 6 | } 7 | 8 | CannyLine::~CannyLine(void) 9 | { 10 | } 11 | 12 | void CannyLine::cannyLine(cv::Mat &image,std::vector > &lines) 13 | { 14 | MetaLine deterctor; 15 | float gausSigma=1.0; 16 | int gausHalfSize=1; 17 | deterctor.MetaLineDetection(image,gausSigma,gausHalfSize,lines); 18 | } -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/CannyLine.h: -------------------------------------------------------------------------------- 1 | #ifndef _CANNY_LINE_H_ 2 | #define _CANNY_LINE_H_ 3 | #pragma once 4 | 5 | #include "cv.h" 6 | #include "highgui.h" 7 | #include "cxcore.h" 8 | 9 | class CannyLine 10 | { 11 | public: 12 | CannyLine(void); 13 | ~CannyLine(void); 14 | 15 | static void cannyLine(cv::Mat &image,std::vector > &lines); 16 | }; 17 | 18 | #endif // _CANNY_LINE_H_ 19 | 20 | -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/MetaLine.h: -------------------------------------------------------------------------------- 1 | #ifndef _META_LINE_H_ 2 | #define _META_LINE_H_ 3 | #pragma once 4 | 5 | #include 6 | #include "types.h" 7 | #include 8 | 9 | using namespace cv; 10 | using namespace std; 11 | 12 | enum DIR{LEFT,RIGHT,UP,DOWN}; 13 | 14 | class MetaLine 15 | { 16 | public: 17 | MetaLine(void); 18 | ~MetaLine(void); 19 | 20 | void MetaLineDetection(cv::Mat originalImage,float gausSigma, int gausHalfSize,std::vector > &lines); 21 | 22 | private: 23 | void getInformations(cv::Mat &originalImage,float gausSigma, int gausHalfSize,float p); 24 | bool smartRouting(clusters_list_t &segments,float minDeviation,int minSize); 25 | void getMetaLine(clusters_list_t &segments,lines_list_t &metaLines,float thMSE); 26 | void getMetaLine(strings_list_t &strings,lines_list_t &metaLines,float thMSE); 27 | void metaLineExtending(lines_list_t &metaLines,int *removal); 28 | void metaLineMerging(lines_list_t &metaLines,int *removal); 29 | void lineValidityCheck(lines_list_t &metaLines,int *removal); 30 | 31 | // 32 | bool next(int &x_seed,int &y_seed); 33 | void subDivision(clusters_list_t &clusters, const string_t &string, const size_t first_index, const size_t last_index, const float min_deviation, const size_t min_size); 34 | 35 | void extendHirozontal(line_t &metaLineCur,lines_list_t &metaLines,int *removal); 36 | void extendVertical(line_t &metaLineCur,lines_list_t &metaLines,int *removal); 37 | int lineMerging(int IDCur,line_t &metaLineCur,size_list_t &IDHyps,lines_list_t &metaLines,float thAngle); 38 | int lineMerging2(int IDCur,line_t &metaLineCur,size_list_t &IDHyps,lines_list_t &metaLines,size_list_t &IDMerged); 39 | bool crossingCheck(Point2f pts,Point2f pte,int ID); 40 | int crossSearch(Point2i pts,float &angle,int ID); 41 | 42 | bool leastSquareFitting(string_t &string, float *parameters,float thMSE); 43 | bool leastSquareFitting(cluster_t &cluster, float *parameters,float thMSE); 44 | bool leastSquareFitting(std::vector &points, float *parameters,float thMSE); 45 | bool gradientWeightedLeastSquareFitting(string_t &string,float *parameters,float thMSE); 46 | 47 | float lineValidityCheckGradientLevel(line_t &metaLines); 48 | float lineValidityCheckGradientOrientation(line_t &metaLines); 49 | float probability(int N,int k,float p); 50 | 51 | // 52 | public: 53 | float p; 54 | float sigma; 55 | float thAngle; 56 | 57 | int thMeaningfulLength; 58 | float visualMeaningfulGradient; 59 | float thGradientLow; 60 | float thGradientHigh; 61 | cv::Mat cannyEdge; 62 | 63 | private: 64 | int rows,cols; 65 | int rows_1,cols_1 ; 66 | int thSearchSteps; 67 | 68 | float N4; 69 | float N2; 70 | 71 | cv::Mat filteredImage; 72 | cv::Mat gradientMap; //the gradient value 73 | cv::Mat orientationMap; //index for the gradient orientation 74 | cv::Mat orientationMapInt;// 75 | cv::Mat searchingMap; //index for searching direction 76 | cv::Mat maskImage; //index for the position of gradient points 77 | 78 | std::vector gradientPoints; 79 | std::vector gradientValue; 80 | std::vector greaterThan; 81 | std::vector smallerThan; 82 | }; 83 | #endif // _META_LINE_H_ 84 | -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/buffer_2d.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2008 Leandro A. F. Fernandes and Manuel M. Oliveira 3 | * 4 | * author : Fernandes, Leandro A. F. 5 | * e-mail : laffernandes@gmail.com 6 | * home page: http://www.inf.ufrgs.br/~laffernandes 7 | * 8 | * 9 | * The complete description of the implemented techinique can be found at 10 | * 11 | * Leandro A. F. Fernandes, Manuel M. Oliveira 12 | * Real-time line detection through an improved Hough transform voting scheme 13 | * Pattern Recognition (PR), Elsevier, 41:1, 2008, 299-314. 14 | * DOI: http://dx.doi.org/10.1016/j.patcog.2007.04.003 15 | * Project Page: http://www.inf.ufrgs.br/~laffernandes/kht.html 16 | * 17 | * If you use this implementation, please reference the above paper. 18 | * 19 | * 20 | * This program is free software: you can redistribute it and/or modify 21 | * it under the terms of the GNU General Public License as published by 22 | * the Free Software Foundation, either version 3 of the License, or 23 | * (at your option) any later version. 24 | 25 | * This program is distributed in the hope that it will be useful, 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 28 | * GNU General Public License for more details. 29 | 30 | * You should have received a copy of the GNU General Public License 31 | * along with this program. If not, see http://www.gnu.org/licenses/. 32 | */ 33 | 34 | #include 35 | #include 36 | #include "buffer_2d.h" 37 | 38 | // Allocates 2D memory blocks. 39 | void* 40 | malloc_2d(const size_t size1, const size_t size2, const size_t data_size) 41 | { 42 | const size_t pointers_size = size1 * sizeof( void* ); 43 | const size_t items_size = size1 * size2 * data_size; 44 | 45 | void *buffer = malloc( pointers_size + items_size ); 46 | 47 | void **pointers = static_cast( buffer ); 48 | char *items = &(static_cast( buffer ))[pointers_size]; 49 | 50 | for (size_t i=0, j=0, j_inc=size2*data_size; i!=size1; ++i, j+=j_inc) 51 | { 52 | pointers[i] = &items[j]; 53 | } 54 | 55 | return buffer; 56 | } 57 | 58 | // Sets 2D buffers to a specified character. 59 | void* 60 | memset_2d(void *dest, const int c, const size_t size1, const size_t size2, const size_t data_size) 61 | { 62 | if (dest) 63 | { 64 | const size_t pointers_size = size1 * sizeof( void* ); 65 | const size_t items_size = size1 * size2 * data_size; 66 | 67 | char *buffer = static_cast( dest ); 68 | 69 | memset( &buffer[pointers_size], c, items_size ); 70 | } 71 | 72 | return dest; 73 | } 74 | 75 | // Reallocate 2D memory blocks. 76 | void* 77 | realloc_2d(void *memblock, const size_t size1, const size_t size2, const size_t data_size) 78 | { 79 | const size_t pointers_size = size1 * sizeof( void* ); 80 | const size_t items_size = size1 * size2 * data_size; 81 | 82 | memblock = realloc( memblock, pointers_size + items_size ); 83 | 84 | void **pointers = static_cast( memblock ); 85 | char *items = &(static_cast( memblock ))[pointers_size]; 86 | 87 | for (size_t i=0, j=0, j_inc=size2*data_size; i!=size1; ++i, j+=j_inc) 88 | { 89 | pointers[i] = &items[j]; 90 | } 91 | 92 | return memblock; 93 | } 94 | -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/buffer_2d.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2008 Leandro A. F. Fernandes and Manuel M. Oliveira 3 | * 4 | * author : Fernandes, Leandro A. F. 5 | * e-mail : laffernandes@gmail.com 6 | * home page: http://www.inf.ufrgs.br/~laffernandes 7 | * 8 | * 9 | * The complete description of the implemented techinique can be found at 10 | * 11 | * Leandro A. F. Fernandes, Manuel M. Oliveira 12 | * Real-time line detection through an improved Hough transform voting scheme 13 | * Pattern Recognition (PR), Elsevier, 41:1, 2008, 299-314. 14 | * DOI: http://dx.doi.org/10.1016/j.patcog.2007.04.003 15 | * Project Page: http://www.inf.ufrgs.br/~laffernandes/kht.html 16 | * 17 | * If you use this implementation, please reference the above paper. 18 | * 19 | * 20 | * This program is free software: you can redistribute it and/or modify 21 | * it under the terms of the GNU General Public License as published by 22 | * the Free Software Foundation, either version 3 of the License, or 23 | * (at your option) any later version. 24 | 25 | * This program is distributed in the hope that it will be useful, 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 28 | * GNU General Public License for more details. 29 | 30 | * You should have received a copy of the GNU General Public License 31 | * along with this program. If not, see http://www.gnu.org/licenses/. 32 | */ 33 | 34 | #ifndef _BUFFER_2D_ 35 | #define _BUFFER_2D_ 36 | 37 | #include 38 | 39 | // Allocates 2D memory blocks. 40 | void* malloc_2d(const size_t size1, const size_t size2, const size_t data_size); 41 | 42 | // Sets 2D buffers to a specified character. 43 | void* memset_2d(void *dest, const int c, const size_t size1, const size_t size2, const size_t data_size); 44 | 45 | // Reallocate 2D memory blocks. 46 | void* realloc_2d(void *memblock, const size_t size1, const size_t size2, const size_t data_size); 47 | 48 | #endif // !_BUFFER_2D_ 49 | -------------------------------------------------------------------------------- /thirdparty/CannyLines/src/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "cv.h" 4 | #include "highgui.h" 5 | #include "CannyLine.h" 6 | 7 | using namespace cv; 8 | using namespace std; 9 | 10 | 11 | void main() 12 | { 13 | string fileCur; 14 | cv::Mat img = imread( fileCur, 0 ); 15 | 16 | CannyLine detector; 17 | std::vector > lines; 18 | detector.cannyLine( img, lines ); 19 | 20 | // show 21 | cv::Mat imgShow( img.rows, img.cols, CV_8UC3, cv::Scalar( 255, 255, 255 ) ); 22 | for ( int m=0; m 38 | #include 39 | #include 40 | #include "buffer_2d.h" 41 | 42 | // A simple list implementation (use it only with aggregate types). 43 | template 44 | class list 45 | { 46 | private: 47 | 48 | // Specifies the size of allocated storage for the container. 49 | size_t m_capacity; 50 | 51 | // Specifies the list of items. 52 | item_type *m_items; 53 | 54 | // Counts the number of elements. 55 | size_t m_size; 56 | 57 | public: 58 | 59 | // Erases the elements of the list. 60 | inline 61 | void clear() 62 | { 63 | m_size = 0; 64 | } 65 | 66 | // Tests if the list is empty. 67 | inline 68 | bool empty() const 69 | { 70 | return (m_size == 0); 71 | } 72 | 73 | // Returns a pointer to the list of items. 74 | inline 75 | item_type* items() 76 | { 77 | return m_items; 78 | } 79 | 80 | // Returns a pointer to the list of items. 81 | inline 82 | const item_type* items() const 83 | { 84 | return m_items; 85 | } 86 | 87 | // Class constructor. 88 | list() : 89 | m_capacity(0), 90 | m_items(0), 91 | m_size(0) 92 | { 93 | } 94 | 95 | // Class destructor. 96 | ~list() 97 | { 98 | free( m_items ); 99 | }; 100 | 101 | // Deletes the element at the end of the list. 102 | inline 103 | void pop_back() 104 | { 105 | m_size--; 106 | } 107 | 108 | // Adds a new last element and returns a reference to it. 109 | inline 110 | item_type& push_back() 111 | { 112 | if (m_capacity == m_size) 113 | { 114 | m_items = (item_type*)realloc( m_items, (m_capacity += capacity_inc) * sizeof( item_type ) ); 115 | memset( &m_items[m_size], 0, capacity_inc * sizeof( item_type ) ); 116 | } 117 | return m_items[m_size++]; 118 | } 119 | 120 | // Specifies a new capacity for a list. 121 | inline 122 | void reserve(const size_t capacity) 123 | { 124 | if (m_capacity < capacity) 125 | { 126 | size_t first = m_capacity; 127 | m_items = (item_type*)realloc( m_items, (m_capacity = capacity) * sizeof( item_type ) ); 128 | memset( &m_items[first], 0, (capacity - first) * sizeof( item_type ) ); 129 | } 130 | 131 | if (m_size > capacity) 132 | { 133 | m_size = capacity; 134 | } 135 | } 136 | 137 | // Specifies a new size for a list. 138 | inline 139 | void resize(const size_t size) 140 | { 141 | if (m_capacity < size) 142 | { 143 | size_t first = m_capacity; 144 | m_items = (item_type*)realloc( m_items, (m_capacity = size) * sizeof( item_type ) ); 145 | memset( &m_items[first], 0, (size - first) * sizeof( item_type ) ); 146 | } 147 | m_size = size; 148 | } 149 | 150 | // Returns the number of elements. 151 | inline 152 | size_t size() const 153 | { 154 | return m_size; 155 | } 156 | 157 | // Returns a reference to the list element at a specified position. 158 | inline 159 | item_type& operator [] (const size_t index) 160 | { 161 | return m_items[index]; 162 | } 163 | 164 | // Returns a reference to the list element at a specified position. 165 | inline 166 | const item_type& operator [] (const size_t index) const 167 | { 168 | return m_items[index]; 169 | } 170 | }; 171 | 172 | // A feature pixel. 173 | struct pixel_t 174 | { 175 | float x; 176 | float y; 177 | }; 178 | 179 | // A cluster of approximately collinear feature pixels. 180 | struct cluster_t 181 | { 182 | const pixel_t *pixels; 183 | size_t size; 184 | }; 185 | 186 | // Specifies a list of approximately collinear feature pixels. 187 | typedef list clusters_list_t; 188 | 189 | // Specifies a string of adjacent feature pixels. 190 | typedef list string_t; 191 | 192 | // Specifies a list of string of feature pixels. 193 | typedef list strings_list_t; 194 | 195 | typedef list size_list_t; 196 | 197 | struct line_t 198 | { 199 | int ID; 200 | string_t points; 201 | float xs,ys; 202 | float xe,ye; 203 | int dir; //0 for k<1, 1 for k >=1 204 | float k,b; 205 | float dev; 206 | }; 207 | // Specifies a list of line 208 | typedef list lines_list_t; 209 | 210 | #endif // !_TYPES_ 211 | -------------------------------------------------------------------------------- /thirdparty/LSD/LSD a Line Segment Detector.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/LSD a Line Segment Detector.pdf -------------------------------------------------------------------------------- /thirdparty/LSD/Makefile: -------------------------------------------------------------------------------- 1 | # ----------------------------------------------------------------------------- 2 | # 3 | # LSD - Line Segment Detector on digital images 4 | # 5 | # Copyright 2007-2010 rafael grompone von gioi (grompone@gmail.com) 6 | # 7 | # This program is free software: you can redistribute it and/or modify 8 | # it under the terms of the GNU Affero General Public License as 9 | # published by the Free Software Foundation, either version 3 of the 10 | # License, or (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU Affero General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU Affero General Public License 18 | # along with this program. If not, see . 19 | # 20 | # ----------------------------------------------------------------------------- 21 | 22 | all: lsd lsd_call_example 23 | 24 | lsd: lsd.c lsd.h lsd_cmd.c 25 | cc -O3 -lm -o lsd lsd_cmd.c lsd.c 26 | 27 | lsd_call_example: lsd.c lsd.h lsd_call_example.c 28 | cc -lm -o lsd_call_example lsd_call_example.c lsd.c 29 | 30 | strict: lsd.c lsd.h lsd_cmd.c 31 | cc -fPIC -ansi -Wall -Wextra -Werror -lm -o lsd_strict lsd.c lsd_cmd.c 32 | 33 | doc: lsd.c lsd.h doxygen.config 34 | doxygen doxygen.config 35 | 36 | clean: 37 | rm -f lsd lsd_call_example lsd_strict 38 | 39 | cleandoc: 40 | rm -rf doc 41 | 42 | # ----------------------------------------------------------------------------- 43 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/annotated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: Annotated Index 4 | 5 | 6 | 7 | 8 |

LSD Data Structures

Here are the data structures with brief descriptions: 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
coorlistChained list of coordinates
image_char_sChar image data type
image_double_sDouble image data type
image_int_sInt image data type
ntuple_list_s'list of n-tuple' data type
pointA point (or pixel)
rectRectangle structure: line segment with width
rect_iterRectangle points iterator
18 |
Generated on Fri Dec 3 10:18:48 2010 for LSD by 19 | 20 | doxygen 21 | 1.3.4
22 | 23 | 24 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/doxygen.css: -------------------------------------------------------------------------------- 1 | H1 { 2 | text-align: center; 3 | font-family: Arial, Helvetica, sans-serif; 4 | } 5 | H2 { 6 | font-family: Geneva, Arial, Helvetica, sans-serif; 7 | } 8 | CAPTION { font-weight: bold } 9 | DIV.qindex { width: 100%; 10 | background-color: #eeeeff; 11 | border: 4px solid #eeeeff; 12 | text-align: center; 13 | margin-bottom: 2px 14 | } 15 | A.qindex { text-decoration: none; font-weight: bold; color: #0000ee } 16 | A.qindex:visited { text-decoration: none; font-weight: bold; color: #0000ee } 17 | A.qindex:hover { text-decoration: none; background-color: #ddddff } 18 | A.qindexHL { text-decoration: none; font-weight: bold; 19 | background-color: #6666cc; 20 | color: #ffffff 21 | } 22 | A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff } 23 | A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } 24 | A.el { text-decoration: none; font-weight: bold } 25 | A.elRef { font-weight: bold } 26 | A.code { text-decoration: none; font-weight: normal; color: #4444ee } 27 | A.codeRef { font-weight: normal; color: #4444ee } 28 | A:hover { text-decoration: none; background-color: #f2f2ff } 29 | DL.el { margin-left: -1cm } 30 | DIV.fragment { 31 | width: 98%; 32 | border: 1px solid #CCCCCC; 33 | background-color: #f5f5f5; 34 | padding-left: 4px; 35 | margin: 4px; 36 | } 37 | DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } 38 | TD.md { background-color: #f2f2ff; font-weight: bold; } 39 | TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; } 40 | TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; } 41 | DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } 42 | DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } 43 | BODY { 44 | background: white; 45 | color: black; 46 | margin-right: 20px; 47 | margin-left: 20px; 48 | } 49 | TD.indexkey { 50 | background-color: #eeeeff; 51 | font-weight: bold; 52 | padding-right : 10px; 53 | padding-top : 2px; 54 | padding-left : 10px; 55 | padding-bottom : 2px; 56 | margin-left : 0px; 57 | margin-right : 0px; 58 | margin-top : 2px; 59 | margin-bottom : 2px 60 | } 61 | TD.indexvalue { 62 | background-color: #eeeeff; 63 | font-style: italic; 64 | padding-right : 10px; 65 | padding-top : 2px; 66 | padding-left : 10px; 67 | padding-bottom : 2px; 68 | margin-left : 0px; 69 | margin-right : 0px; 70 | margin-top : 2px; 71 | margin-bottom : 2px 72 | } 73 | TR.memlist { 74 | background-color: #f0f0f0; 75 | } 76 | P.formulaDsp { text-align: center; } 77 | IMG.formulaDsp { } 78 | IMG.formulaInl { vertical-align: middle; } 79 | SPAN.keyword { color: #008000 } 80 | SPAN.keywordtype { color: #604020 } 81 | SPAN.keywordflow { color: #e08000 } 82 | SPAN.comment { color: #800000 } 83 | SPAN.preprocessor { color: #806020 } 84 | SPAN.stringliteral { color: #002080 } 85 | SPAN.charliteral { color: #008080 } 86 | .mdTable { 87 | border: 1px solid #868686; 88 | background-color: #f2f2ff; 89 | } 90 | .mdRow { 91 | padding: 8px 20px; 92 | } 93 | .mdescLeft { 94 | font-size: smaller; 95 | font-family: Arial, Helvetica, sans-serif; 96 | background-color: #FAFAFA; 97 | padding-left: 8px; 98 | border-top: 1px none #E0E0E0; 99 | border-right: 1px none #E0E0E0; 100 | border-bottom: 1px none #E0E0E0; 101 | border-left: 1px none #E0E0E0; 102 | margin: 0px; 103 | } 104 | .mdescRight { 105 | font-size: smaller; 106 | font-family: Arial, Helvetica, sans-serif; 107 | font-style: italic; 108 | background-color: #FAFAFA; 109 | padding-left: 4px; 110 | border-top: 1px none #E0E0E0; 111 | border-right: 1px none #E0E0E0; 112 | border-bottom: 1px none #E0E0E0; 113 | border-left: 1px none #E0E0E0; 114 | margin: 0px; 115 | padding-bottom: 0px; 116 | padding-right: 8px; 117 | } 118 | .memItemLeft { 119 | padding: 1px 0px 0px 8px; 120 | margin: 4px; 121 | border-top-width: 1px; 122 | border-right-width: 1px; 123 | border-bottom-width: 1px; 124 | border-left-width: 1px; 125 | border-top-style: solid; 126 | border-top-color: #E0E0E0; 127 | border-right-color: #E0E0E0; 128 | border-bottom-color: #E0E0E0; 129 | border-left-color: #E0E0E0; 130 | border-right-style: none; 131 | border-bottom-style: none; 132 | border-left-style: none; 133 | background-color: #FAFAFA; 134 | font-family: Geneva, Arial, Helvetica, sans-serif; 135 | font-size: 12px; 136 | } 137 | .memItemRight { 138 | padding: 1px 0px 0px 8px; 139 | margin: 4px; 140 | border-top-width: 1px; 141 | border-right-width: 1px; 142 | border-bottom-width: 1px; 143 | border-left-width: 1px; 144 | border-top-style: solid; 145 | border-top-color: #E0E0E0; 146 | border-right-color: #E0E0E0; 147 | border-bottom-color: #E0E0E0; 148 | border-left-color: #E0E0E0; 149 | border-right-style: none; 150 | border-bottom-style: none; 151 | border-left-style: none; 152 | background-color: #FAFAFA; 153 | font-family: Geneva, Arial, Helvetica, sans-serif; 154 | font-size: 13px; 155 | } 156 | .search { color: #0000ee; 157 | font-weight: bold; 158 | } 159 | FORM.search { 160 | margin-bottom: 0px; 161 | margin-top: 0px; 162 | } 163 | INPUT.search { font-size: 75%; 164 | color: #000080; 165 | font-weight: normal; 166 | background-color: #eeeeff; 167 | } 168 | TD.tiny { font-size: 75%; 169 | } 170 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/doxygen.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/files.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: File Index 4 | 5 | 6 | 7 | 8 |

LSD File List

Here is a list of all files with brief descriptions: 9 | 10 | 11 |
lsd.c [code]LSD module code
lsd.h [code]LSD module header
12 |
Generated on Fri Dec 3 10:18:17 2010 for LSD by 13 | 14 | doxygen 15 | 1.3.4
16 | 17 | 18 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_0.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_1.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_10.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_2.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_3.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_4.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_5.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_6.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_7.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_8.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/form_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/form_9.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/formula.repository: -------------------------------------------------------------------------------- 1 | \form#0:\[ G(x,y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}} \] 2 | \form#1:\[ G(x,y) = G(x) * G(y) \] 3 | \form#2:\[ G(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{x^2}{2\sigma^2}}. \] 4 | \form#3:\[ \Gamma(x) = \frac{ \sum_{n=0}^{N} q_n x^n }{ \Pi_{n=0}^{N} (x+n) } (x+5.5)^{x+0.5} e^{-(x+5.5)} \] 5 | \form#4:\[ \log\Gamma(x) = \log\left( \sum_{n=0}^{N} q_n x^n \right) + (x+0.5) \log(x+5.5) - (x+5.5) - \sum_{n=0}^{N} \log(x+n) \] 6 | \form#5:\[ \Gamma(x) = \sqrt{\frac{2\pi}{x}} \left( \frac{x}{e} \sqrt{ x\sinh(1/x) + \frac{1}{810x^6} } \right)^x \] 7 | \form#6:\[ \log\Gamma(x) = 0.5\log(2\pi) + (x-0.5)\log(x) - x + 0.5x\log\left( x\sinh(1/x) + \frac{1}{810x^6} \right). \] 8 | \form#7:\[ \mathrm{NFA} = NT \cdot B(n,k,p) \] 9 | \form#8:\[ B(n,k,p) = \sum_{j=k}^n \left(\begin{array}{c}n\\j\end{array}\right) p^{j} (1-p)^{n-j} \] 10 | \form#9:\[ \left(\begin{array}{c}n\\k\end{array}\right) = \frac{ \Gamma(n+1) }{ \Gamma(k+1) \cdot \Gamma(n-k+1) }. \] 11 | \form#10:\[ A = \left(\begin{array}{cc} Ixx & Ixy \\ Ixy & Iyy \\ \end{array}\right) \] 12 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/functions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: Compound Member Index 4 | 5 | 6 | 7 | 8 | 9 | 10 |

11 | Here is a list of all struct and union fields with links to the structures/unions they belong to:

37 |
Generated on Fri Dec 3 10:18:48 2010 for LSD by 38 | 39 | doxygen 40 | 1.3.4
41 | 42 | 43 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/functions_vars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: Compound Member Index 4 | 5 | 6 | 7 | 8 | 9 | 10 |

11 |

37 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 38 | 39 | doxygen 40 | 1.3.4
41 | 42 | 43 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/globals_defs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: File Member Index 4 | 5 | 6 | 7 | 8 | 9 | 10 |

11 |

25 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 26 | 27 | doxygen 28 | 1.3.4
29 | 30 | 31 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/globals_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: File Member Index 4 | 5 | 6 | 7 | 8 | 9 |
a | d | e | f | g | i | l | n | r
10 | 11 |

12 | 13 |

14 |

- a -

    15 |
  • add_5tuple() 16 | : lsd.c
  • angle_diff() 17 | : lsd.c
  • angle_diff_signed() 18 | : lsd.c
19 |

- d -

    20 |
  • dist() 21 | : lsd.c
  • double_equal() 22 | : lsd.c
23 |

- e -

    24 |
  • enlarge_ntuple_list() 25 | : lsd.c
  • error() 26 | : lsd.c
27 |

- f -

33 |

- g -

    34 |
  • gaussian_kernel() 35 | : lsd.c
  • gaussian_sampler() 36 | : lsd.c
  • get_theta() 37 | : lsd.c
38 |

- i -

    39 |
  • inter_hi() 40 | : lsd.c
  • inter_low() 41 | : lsd.c
  • isaligned() 42 | : lsd.c
43 |

- l -

51 |

- n -

61 |

- r -

74 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 75 | 76 | doxygen 77 | 1.3.4
78 | 79 | 80 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/globals_type.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: File Member Index 4 | 5 | 6 | 7 | 8 | 9 | 10 |

11 |

    12 |
  • image_char 13 | : lsd.h
  • image_double 14 | : lsd.h
  • image_int 15 | : lsd.h
  • ntuple_list 16 | : lsd.h
17 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 18 | 19 | doxygen 20 | 1.3.4
21 | 22 | 23 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/graph_legend.dot: -------------------------------------------------------------------------------- 1 | digraph G 2 | { 3 | edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10]; 4 | node [fontname="Helvetica",fontsize=10,shape=record]; 5 | Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"]; 6 | Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; 7 | Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; 8 | Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; 9 | Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; 10 | Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"]; 11 | Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; 12 | Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"]; 13 | Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; 14 | Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; 15 | Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; 16 | Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; 17 | Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; 18 | Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"]; 19 | Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; 20 | Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"]; 21 | Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; 22 | } 23 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/graph_legend.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: Graph Legend 4 | 5 | 6 | 7 | 8 |

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

9 | Consider the following example:

/*! Invisible class because of truncation */
10 | class Invisible { };
11 | 
12 | /*! Truncated class, inheritance relation is hidden */
13 | class Truncated : public Invisible { };
14 | 
15 | /* Class not documented with doxygen comments */
16 | class Undocumented { };
17 | 
18 | /*! Class that is inherited using public inheritance */
19 | class PublicBase : public Truncated { };
20 | 
21 | /*! A template class */
22 | template<class T> class Templ { };
23 | 
24 | /*! Class that is inherited using protected inheritance */
25 | class ProtectedBase { };
26 | 
27 | /*! Class that is inherited using private inheritance */
28 | class PrivateBase { };
29 | 
30 | /*! Class that is used by the Inherited class */
31 | class Used { };
32 | 
33 | /*! Super class that inherits a number of other classes */
34 | class Inherited : public PublicBase,
35 |                   protected ProtectedBase,
36 |                   private PrivateBase,
37 |                   public Undocumented
38 |                   public Templ<int>
39 | {
40 |   private:
41 |     Used *m_usedClass;
42 | };
43 | 
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

44 |

45 | graph_legend.png 46 |
47 |

48 | The boxes in the above graph have the following meaning:

    49 |
  • 50 | A filled black box represents the struct or class for which the graph is generated.
  • 51 |
  • 52 | A box with a black border denotes a documented struct or class.
  • 53 |
  • 54 | A box with a grey border denotes an undocumented struct or class.
  • 55 |
  • 56 | A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • 57 |
58 | The arrows have the following meaning:
    59 |
  • 60 | A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • 61 |
  • 62 | A dark green arrow is used for protected inheritance.
  • 63 |
  • 64 | A dark red arrow is used for private inheritance.
  • 65 |
  • 66 | A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • 67 |
  • 68 | A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • 69 |
70 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 71 | 72 | doxygen 73 | 1.3.4
74 | 75 | 76 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/graph_legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/graph_legend.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: LSD code documentation 4 | 5 | 6 | 7 | 8 |

LSD code documentation

9 |

10 | This is an implementation of the Line Segment Detector described in the paper:

11 | "LSD: A Fast Line Segment Detector with a False Detection Control" by Rafael Grompone von Gioi, Jeremie Jakubowicz, Jean-Michel Morel, and Gregory Randall, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 32, no. 4, pp. 722-732, April, 2010.

12 | and in more details in the CMLA Technical Report:

13 | "LSD: A Line Segment Detector, Technical Report", by Rafael Grompone von Gioi, Jeremie Jakubowicz, Jean-Michel Morel, Gregory Randall, CMLA, ENS Cachan, 2010.

14 | The version implemented here includes some further improvements described on the LSD page at www.ipol.im. That same page includes more information, including this code and an online demo version:

15 | http://www.ipol.im/pub/algo/gjmr_line_segment_detector

16 | The module's main function is lsd().

17 | The source code is contained in two files: lsd.h and lsd.c.

18 | HISTORY:

    19 |
  • version 1.5 - dic 2010: Changes in 'refine', -W option added, and more comments added.
  • version 1.4 - jul 2010: lsd_scale interface added and doxygen doc.
  • version 1.3 - feb 2010: Multiple bug correction and improved code.
  • version 1.2 - dic 2009: First full Ansi C Language version.
  • version 1.1 - sep 2009: Systematic subsampling to scale 0.8 and correction to partially handle"angle problem".
  • version 1.0 - jan 2009: First complete Megawave2 and Ansi C Language version.
20 |

21 |

Author:
rafael grompone von gioi (grompone@gmail.com)
22 |
Generated on Fri Dec 3 10:18:17 2010 for LSD by 23 | 24 | doxygen 25 | 1.3.4
26 | 27 | 28 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c__incl.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a15_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a15_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a16_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a16_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a17_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a17_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a18_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a18_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a19_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a19_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a20_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a20_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a21_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a21_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a22_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a22_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a23_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a23_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a24_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a24_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a25_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a25_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a26_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a26_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a27_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a27_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a28_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a28_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a29_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a29_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a30_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a30_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a31_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a31_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a36_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a36_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a37_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a37_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a38_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a38_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a39_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a39_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a40_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a40_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a41_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a41_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a42_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a42_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a43_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a43_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a44_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a44_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a45_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a45_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a46_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a46_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a47_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a47_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a48_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a48_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a49_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a49_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a50_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a50_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a51_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a51_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a52_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a52_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8c_a53_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8c_a53_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h__dep__incl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h__dep__incl.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a10_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a10_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a11_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a11_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a12_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a12_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a13_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a13_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a14_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a14_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a15_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a15_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a16_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a16_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a17_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a17_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a4_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a4_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a5_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a5_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a6_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a6_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a7_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a7_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a8_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a8_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/lsd_8h_a9_cgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/lsd_8h_a9_cgraph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/structcoorlist.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: coorlist struct Reference 4 | 5 | 6 | 7 | 8 |

coorlist Struct Reference

Collaboration diagram for coorlist:

Collaboration graph
9 |
[legend]

Detailed Description

10 | Chained list of coordinates. 11 |

12 | 13 |

14 | Definition at line 114 of file lsd.c. 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |

Data Fields

int x
int y
coorlistnext
24 |


Field Documentation

25 |

26 | 27 | 28 | 34 | 35 |
29 | 30 | 31 |
struct coorlist* coorlist::next 32 |
33 |
36 | 37 | 38 | 41 | 47 | 48 |
39 |   40 | 42 | 43 |

44 | 45 |

46 | Definition at line 117 of file lsd.c.

49 |

50 | 51 | 52 | 58 | 59 |
53 | 54 | 55 |
int coorlist::x 56 |
57 |
60 | 61 | 62 | 65 | 71 | 72 |
63 |   64 | 66 | 67 |

68 | 69 |

70 | Definition at line 116 of file lsd.c.

73 |

74 | 75 | 76 | 82 | 83 |
77 | 78 | 79 |
int coorlist::y 80 |
81 |
84 | 85 | 86 | 89 | 95 | 96 |
87 |   88 | 90 | 91 |

92 | 93 |

94 | Definition at line 116 of file lsd.c.

97 |


The documentation for this struct was generated from the following file: 99 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 100 | 101 | doxygen 102 | 1.3.4
103 | 104 | 105 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/structcoorlist__coll__graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSD/doc/structcoorlist__coll__graph.png -------------------------------------------------------------------------------- /thirdparty/LSD/doc/structimage__char__s.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: image_char_s struct Reference 4 | 5 | 6 | 7 | 8 |

image_char_s Struct Reference

#include <lsd.h> 9 |

10 |


Detailed Description

11 | char image data type 12 |

13 | The pixel value at (x,y) is accessed by:

14 | image->data[ x + y * image->xsize ]

15 | with x and y integer. 16 |

17 | 18 |

19 | Definition at line 80 of file lsd.h. 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |

Data Fields

unsigned char * data
unsigned int xsize
unsigned int ysize
29 |


Field Documentation

30 |

31 | 32 | 33 | 39 | 40 |
34 | 35 | 36 |
unsigned char* image_char_s::data 37 |
38 |
41 | 42 | 43 | 46 | 54 | 55 |
44 |   45 | 47 | 48 |

49 | 50 |

51 | Definition at line 82 of file lsd.h. 52 |

53 | Referenced by free_image_char(), LineSegmentDetection(), new_image_char(), new_image_char_ini(), reduce_region_radius(), refine(), and region_grow().

56 |

57 | 58 | 59 | 65 | 66 |
60 | 61 | 62 |
unsigned int image_char_s::xsize 63 |
64 |
67 | 68 | 69 | 72 | 80 | 81 |
70 |   71 | 73 | 74 |

75 | 76 |

77 | Definition at line 83 of file lsd.h. 78 |

79 | Referenced by LineSegmentDetection(), new_image_char(), reduce_region_radius(), refine(), and region_grow().

82 |

83 | 84 | 85 | 91 | 92 |
86 | 87 | 88 |
unsigned int image_char_s::ysize 89 |
90 |
93 | 94 | 95 | 98 | 106 | 107 |
96 |   97 | 99 | 100 |

101 | 102 |

103 | Definition at line 83 of file lsd.h. 104 |

105 | Referenced by new_image_char(), and region_grow().

108 |


The documentation for this struct was generated from the following file: 110 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 111 | 112 | doxygen 113 | 1.3.4
114 | 115 | 116 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/structimage__int__s.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: image_int_s struct Reference 4 | 5 | 6 | 7 | 8 |

image_int_s Struct Reference

#include <lsd.h> 9 |

10 |


Detailed Description

11 | int image data type 12 |

13 | The pixel value at (x,y) is accessed by:

14 | image->data[ x + y * image->xsize ]

15 | with x and y integer. 16 |

17 | 18 |

19 | Definition at line 100 of file lsd.h. 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |

Data Fields

int * data
unsigned int xsize
unsigned int ysize
29 |


Field Documentation

30 |

31 | 32 | 33 | 39 | 40 |
34 | 35 | 36 |
int* image_int_s::data 37 |
38 |
41 | 42 | 43 | 46 | 54 | 55 |
44 |   45 | 47 | 48 |

49 | 50 |

51 | Definition at line 102 of file lsd.h. 52 |

53 | Referenced by free_image_int(), new_image_int(), and new_image_int_ini().

56 |

57 | 58 | 59 | 65 | 66 |
60 | 61 | 62 |
unsigned int image_int_s::xsize 63 |
64 |
67 | 68 | 69 | 72 | 80 | 81 |
70 |   71 | 73 | 74 |

75 | 76 |

77 | Definition at line 103 of file lsd.h. 78 |

79 | Referenced by new_image_int().

82 |

83 | 84 | 85 | 91 | 92 |
86 | 87 | 88 |
unsigned int image_int_s::ysize 89 |
90 |
93 | 94 | 95 | 98 | 106 | 107 |
96 |   97 | 99 | 100 |

101 | 102 |

103 | Definition at line 103 of file lsd.h. 104 |

105 | Referenced by new_image_int().

108 |


The documentation for this struct was generated from the following file: 110 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 111 | 112 | doxygen 113 | 1.3.4
114 | 115 | 116 | -------------------------------------------------------------------------------- /thirdparty/LSD/doc/structpoint.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | LSD: point struct Reference 4 | 5 | 6 | 7 | 8 |

point Struct Reference


Detailed Description

9 | A point (or pixel). 10 |

11 | 12 |

13 | Definition at line 123 of file lsd.c. 14 | 15 | 16 | 17 | 18 | 19 | 20 |

Data Fields

int x
int y
21 |


Field Documentation

22 |

23 | 24 | 25 | 31 | 32 |
26 | 27 | 28 |
int point::x 29 |
30 |
33 | 34 | 35 | 38 | 46 | 47 |
36 |   37 | 39 | 40 |

41 | 42 |

43 | Definition at line 123 of file lsd.c. 44 |

45 | Referenced by get_theta(), reduce_region_radius(), refine(), region2rect(), and region_grow().

48 |

49 | 50 | 51 | 57 | 58 |
52 | 53 | 54 |
int point::y 55 |
56 |
59 | 60 | 61 | 64 | 72 | 73 |
62 |   63 | 65 | 66 |

67 | 68 |

69 | Definition at line 123 of file lsd.c. 70 |

71 | Referenced by get_theta(), reduce_region_radius(), refine(), region2rect(), and region_grow().

74 |


The documentation for this struct was generated from the following file: 76 |
Generated on Fri Dec 3 10:18:49 2010 for LSD by 77 | 78 | doxygen 79 | 1.3.4
80 | 81 | 82 | -------------------------------------------------------------------------------- /thirdparty/LSD/lsd_call_example.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "lsd.h" 3 | 4 | int main(void) 5 | { 6 | image_double image; 7 | ntuple_list out; 8 | unsigned int x,y,i,j; 9 | unsigned int X = 128; /* x image size */ 10 | unsigned int Y = 128; /* y image size */ 11 | 12 | /* create a simple image: left half black, right half gray */ 13 | image = new_image_double(X,Y); 14 | for(x=0;xdata[ x + y * image->xsize ] = xsize); 23 | for(i=0;isize;i++) 24 | { 25 | for(j=0;jdim;j++) 26 | printf("%f ",out->values[ i * out->dim + j ]); 27 | printf("\n"); 28 | } 29 | 30 | /* free memory */ 31 | free_image_double(image); 32 | free_ntuple_list(out); 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /thirdparty/LSWMS/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ############################## 2 | PROJECT( lineSegment ) 3 | ############################## 4 | cmake_minimum_required (VERSION 2.6) 5 | 6 | # Packages 7 | find_package( OpenCV REQUIRED ) 8 | 9 | 10 | # Includes 11 | include_directories( 12 | ${OPENCV_INCLUDE_DIR} 13 | ${PROJECT_BINARY_DIR} 14 | ) 15 | 16 | set(SOURCE_FILES 17 | main.cpp 18 | LSWMS.cpp 19 | LSWMS.h 20 | ) 21 | 22 | 23 | # Add executable and target link libraries 24 | ADD_EXECUTABLE( lineSegment ${SOURCE_FILES}) 25 | TARGET_LINK_LIBRARIES( lineSegment ${OpenCV_LIBS}) 26 | 27 | 28 | -------------------------------------------------------------------------------- /thirdparty/LSWMS/LSWMS.h: -------------------------------------------------------------------------------- 1 | #ifndef __LSWMS_H__ 2 | #define __LSWMS_H__ 3 | 4 | enum {RET_OK, RET_ERROR}; 5 | 6 | #include "opencv2/core/core.hpp" 7 | #include "opencv2/highgui/highgui.hpp" 8 | #include "opencv2/imgproc/imgproc.hpp" 9 | 10 | #include "float.h" 11 | 12 | #define PI_2 CV_PI/2 13 | 14 | typedef std::vector LSEG; 15 | typedef struct _DIR_POINT 16 | { 17 | cv::Point pt; 18 | float vx; 19 | float vy; 20 | 21 | _DIR_POINT(cv::Point _pt, float _vx, float _vy) 22 | { 23 | pt = _pt; 24 | vx = _vx; 25 | vy = _vy; 26 | }; 27 | _DIR_POINT() 28 | { 29 | pt = cv::Point(0,0); 30 | vx = 0; 31 | vy = 0; 32 | } 33 | }DIR_POINT; 34 | 35 | class LSWMS 36 | { 37 | 38 | private: 39 | //Verbose 40 | bool __verbose; 41 | 42 | // Sizes 43 | cv::Size __imSize, __imPadSize; 44 | int __imWidth, __imHeight; 45 | 46 | // Window parameters 47 | int __R, __N; 48 | 49 | // Line Segments 50 | LSEG __lSeg; 51 | int __numMaxLSegs; 52 | 53 | // Images and maps 54 | cv::Mat __img, __imgPad; 55 | cv::Rect __roiRect; 56 | cv::Mat __imgPadROI; 57 | cv::Mat __G, __Gx, __Gy; // Map of probability of line segments 58 | cv::Mat __M; // Map of visited pixels 59 | cv::Mat __A; // Map of angles 60 | 61 | cv::Mat __imAux; // For debugging 62 | 63 | // Thresholds and variables 64 | int __meanG; 65 | std::vector __sampleIterator; 66 | float __margin; 67 | 68 | // Mean-Shift central 69 | std::vector __seeds; 70 | 71 | // Functions 72 | void setPaddingToZero(cv::Mat &img, int NN); 73 | void updateMask(cv::Point pt1, cv::Point pt2); 74 | 75 | // SOBEL-specific functions 76 | int computeGradientMaps(const cv::Mat &img, cv::Mat &G, cv::Mat &Gx, cv::Mat &Gy); 77 | 78 | // General functions 79 | int findLineSegments(const cv::Mat &G, const cv::Mat &Gx, const cv::Mat &Gy, cv::Mat &A, cv::Mat &M, std::vector &lSegs, std::vector &errors); 80 | int lineSegmentGeneration(const DIR_POINT &dpOrig, LSEG &lSeg, float &error); 81 | 82 | // Growing and Mean-Shift 83 | float grow(const DIR_POINT &dpOrig, cv::Point &ptDst, int dir); 84 | int weightedMeanShift(const DIR_POINT &dpOrig, DIR_POINT &dpDst, const cv::Mat &M=cv::Mat()); 85 | 86 | public: 87 | LSWMS(const cv::Size imSize, const int R, const int numMaxLSegs=0, bool verbose=false); 88 | int run(const cv::Mat &img, std::vector &lSegs, std::vector &errors); 89 | void drawLSegs(cv::Mat &img, std::vector &lSegs, cv::Scalar color=CV_RGB(255,0,0), int thickness=1); 90 | void drawLSegs(cv::Mat &img, std::vector &lSegs, std::vector &errors, int thickness=1); 91 | 92 | }; 93 | 94 | #endif // __LSWMS_H__ 95 | -------------------------------------------------------------------------------- /thirdparty/LSWMS/PAA09_MNietoCCuevasLSalgadoNGarcia_v6.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/PAA09_MNietoCCuevasLSalgadoNGarcia_v6.0.pdf -------------------------------------------------------------------------------- /thirdparty/LSWMS/facade.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/facade.avi -------------------------------------------------------------------------------- /thirdparty/LSWMS/image110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/image110.jpg -------------------------------------------------------------------------------- /thirdparty/LSWMS/image205.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/image205.jpg -------------------------------------------------------------------------------- /thirdparty/LSWMS/image87.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/image87.jpg -------------------------------------------------------------------------------- /thirdparty/LSWMS/image9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/LSWMS/image9.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/Almazan_MCMLSD_A_Dynamic_CVPR_2017_paper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/Almazan_MCMLSD_A_Dynamic_CVPR_2017_paper.pdf -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Evaluation Code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Evaluation Code.zip -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Imgs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Imgs/.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Imgs/P1040779.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Imgs/P1040779.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Imgs/P1040812hr.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Imgs/P1040812hr.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Imgs/P1040823.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Imgs/P1040823.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Imgs/P1040823hr.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/Imgs/P1040823hr.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/Readme.txt: -------------------------------------------------------------------------------- 1 | many function in the line segmentation algorithm were mex file, if you are using 2 | windows or linux system, please recompile following c code into mex file. 3 | mexRemoveVotes_v3_scale.c 4 | mexVoteEdges_v3_scale.c 5 | the c code can be compiled by command 6 | mex xxxxxxxxx.c 7 | 8 | Please use matlab coder to compile following .m file into mex file: 9 | hmmParameters.m 10 | returnLines.m 11 | sampleLine.m 12 | the matlab coder is an app in matlab to automatically compile .m code into mex file, 13 | The entry point for the code is demo_start_v2.m. The instruction is in following 14 | select No for "Does this code use global variables?" 15 | 16 | The input variable type should be configurated in following 17 | sampleLine.m 18 | rho double(1x1) 19 | theta double(1x1) 20 | m double(1x1) 21 | n double(1x1) 22 | pp double(1x2) 23 | 24 | returnLines.m 25 | points_proj double(:infx2) 26 | final_labels double(1x:inf) 27 | 28 | hmmParameters.m 29 | exist_edge_on double(1x40) 30 | exist_edge_off double(1x40) 31 | ang_dev_on double(1x181) 32 | ang_dev_off double(1x181) 33 | node_idx double(:infx1) 34 | Psi_t double(2x2) 35 | pi_var double(2x1) 36 | y_h double(:infx1) 37 | distances double(:infx1) 38 | range_dis double(1x40) 39 | nexist_edge_on double(1x40) 40 | nexist_edge_off double(1x40) 41 | prob_on double(1x1) 42 | prob_off double(1x1) 43 | prob_stay_on double(1x1) 44 | prob_leave_off double(1x1) 45 | prob_leave_on double(1x1) 46 | prob_stay_off double(1x1) 47 | ang_dev double(:infx1) 48 | range_ang double(1x181) 49 | 50 | 4. Select MEX as output format also remove the _mex ending in the output file name section 51 | for example if you are compiling sampleLine.m, output the file name as sampleLine instead of sampleLine_mex 52 | 53 | the line segment detector has two steps 54 | 1. compute the kernel for the image size 55 | you only need to compute the kernal once for one an image size 56 | [kernels, kernels_flip, kernel_params] =kernelInitialization(img); 57 | the kernels, kernels_flip, kernel_params are the kernel parameter for the line segment algorithm below 58 | 2. line segment detection 59 | [lines, fullLines] =lineSegmentation_HighRes(img,kernels, kernels_flip, kernel_params); 60 | the lines variable contains the detected line segmentations it arranged as 61 | [x1 y1 x2 y2 probability] 62 | The fullLines are the detected lines. It is arranged as [rho theta probability] 63 | 64 | please run the demo_start_v2.m for demonstration 65 | 66 | the code in Evaluation Code.zip are line evaluation algorithms 67 | run_create_contours_MCMLSD.m is the algorithm to get line segment statistics for 68 | MCMLSD, you can modify it to process other line segment detection algorithms 69 | 70 | run_eval_PR_4Methods.m and run_eval_PR.m process the statistical information from 71 | the run_create_contours_MCMLSD.m result and perform evaluations 72 | 73 | run_plot_PR.m and run_plot_PR4Methods.m plot the results in a graph 74 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/checkInParam.m: -------------------------------------------------------------------------------- 1 | function [out] = checkInput(img1,g1_mag1,g1_dir1,g1_sc1,g2_mag1,g2_sc1,g2_all1,noise1,... 2 | EDGE_W1,subpixelflag1,maxscale1) 3 | 4 | load('input.mat'); 5 | out = 0; 6 | if ~isequal(img1, img) 7 | display('error img'); 8 | out = out + 1; 9 | end 10 | if ~isequal(g1_mag1, g1_mag) 11 | display('error g1_mag'); 12 | out = out + 1; 13 | end 14 | if ~isequal(g1_dir1, g1_dir) 15 | display('error g1_dir'); 16 | out = out + 1; 17 | end 18 | if ~isequal(g1_sc1, g1_sc) 19 | display('error g1_sc'); 20 | out = out + 1; 21 | end 22 | if ~isequal(g2_mag1, g2_mag) 23 | display('error g2_mag'); 24 | out = out + 1; 25 | end 26 | if ~isequal(g2_sc1, g2_sc) 27 | display('error g2_sc'); 28 | out = out + 1; 29 | end 30 | if ~isequal(g2_all1, g2_all) 31 | display('error g2_all'); 32 | out = out + 1; 33 | end 34 | if noise1 ~= noise 35 | display('error noise'); 36 | out = out + 1; 37 | end 38 | if EDGE_W1 ~= edgew 39 | display('error EDGE_W'); 40 | out = out + 1; 41 | end 42 | if subpixelflag1 ~= subpixelflag 43 | display('error subpixelflag'); 44 | out = out + 1; 45 | end 46 | if maxscale1 ~= scale 47 | display('error scale'); 48 | out = out + 1; 49 | end 50 | 51 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/checkOutParam.m: -------------------------------------------------------------------------------- 1 | function [out] = checkOutParam(edge_map1,blur_map1,dark_map1,light_map1,... 2 | xzero1_map1,yzero1_map1,xzero2_map1,yzero2_map1) 3 | 4 | load('output.mat'); 5 | out = 0; 6 | if ~isequal(edge_map1, edge_map) 7 | display('error edge_map'); 8 | out = out + 1; 9 | end 10 | if ~isequal(blur_map1, blur_map) 11 | display('error blur_map'); 12 | out = out + 1; 13 | end 14 | if ~isequal(dark_map1, dark_map) 15 | display('error dark_map'); 16 | out = out + 1; 17 | end 18 | if ~isequal(light_map1, light_map) 19 | display('error light_map'); 20 | out = out + 1; 21 | end 22 | if ~isequal(xzero1_map1, xzero1_map) 23 | display('error xzero1_map'); 24 | out = out + 1; 25 | end 26 | if ~isequal(yzero1_map1, yzero1_map) 27 | display('error yzero1_map'); 28 | out = out + 1; 29 | end 30 | if ~isequal(xzero2_map1, xzero2_map) 31 | display('error xzero2_map'); 32 | out = out + 1; 33 | end 34 | if ~isequal(yzero2_map1, yzero2_map) 35 | display('error yzero2_map'); 36 | out = out + 1; 37 | end 38 | 39 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/check_save_requirements.m: -------------------------------------------------------------------------------- 1 | function[sfilenames] = check_save_requirements(save_flags,outputdir,etype); 2 | 3 | name1 = ['edge',etype]; 4 | sfilenames = {name1,'blur.mat','dark.mat','light.mat',... 5 | 'g1mag.mat','g1dir.mat','g1scale.mat','g2mag.mat','g2scale.mat',... 6 | 'xzero1.mat','yzero1.mat','xzero2.mat','yzero2.mat'}; 7 | 8 | if any(save_flags) 9 | 10 | % Output directory does not exist: 11 | if ((exist(outputdir) ~= 7) & (length(outputdir) ~= 0)) 12 | mkdir(outputdir); % Create this directory 13 | mess1 = 'Requested output directory has been created.'; 14 | uiwait(msgbox(mess1,'Output Directory Creation','none','modal')); 15 | end; 16 | 17 | if (length(outputdir) == 0) 18 | outputdir = 'tmp_output'; 19 | opmessage = ['Output directory name not specified. ',... 20 | 'Files will be saved in directory "tmp_output".']; 21 | uiwait(msgbox(opmessage,'Output Directory Warning','warn','modal')); 22 | if (exist(outputdir) ~= 7) 23 | mkdir(outputdir); 24 | end; 25 | end; 26 | 27 | filestosave = sfilenames(find(save_flags)); 28 | 29 | x = dir(outputdir); 30 | xx = {x.name}'; 31 | commonfiles = intersect(filestosave,xx); 32 | 33 | if ~isempty(commonfiles) 34 | maxnumx = 0; 35 | for k = 1:1:length(xx) 36 | y = xx{k}; 37 | numx = 0; 38 | if (length(y)>4) 39 | if (y(end-4)=='x') 40 | numx = sum(y=='x'); 41 | end; 42 | end; 43 | if (numx > maxnumx) 44 | maxnumx = numx; 45 | end; 46 | end; 47 | assignin('base','maxnumx',maxnumx+1); 48 | assignin('base','commonfiles',commonfiles); 49 | 50 | % uiwait(outputdir_erase_info); % Call GUI 51 | % 52 | % changename_flag = evalin('base','changename_flag;'); 53 | % 54 | % if changename_flag 55 | % repx = repmat('x',1,maxnumx+1); 56 | % for k = 1:1:length(sfilenames) 57 | % s = sfilenames{k}; 58 | % s = [s(1:end-4),repx,s(end-3:end)]; 59 | % sfilenames{k} = s; 60 | % end; 61 | % end; 62 | 63 | evalin('base','clear changename_flag maxnumx commonfiles;'); 64 | end; 65 | end; 66 | 67 | for k = 1:1:length(sfilenames) 68 | s = sfilenames{k}; 69 | s = [outputdir,'/',s]; 70 | sfilenames{k} = s; 71 | end; 72 | 73 | return; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/convolve_2.m: -------------------------------------------------------------------------------- 1 | 2 | %############################################################## 3 | % 4 | % [cimg] = convolve_2(mimg,filt,bc) 5 | % 6 | % Convolution of two matrices with the boundaries handled 7 | % depending on the value of the boundary condition variable. 8 | % - 0 for extension convolution 9 | % - 1 for no overlap convolution 10 | % 11 | %############################################################## 12 | 13 | function[cimg] = convolve_2(mimg,filt,bc) 14 | 15 | if (bc == 0) 16 | 17 | pad_img = pad_matrix(mimg,size(filt)); 18 | cimg = conv2(pad_img,filt,'same'); 19 | cimg = trim_matrix(cimg,size(filt)); 20 | 21 | else 22 | 23 | cimg = conv2(mimg,filt,'same'); 24 | 25 | if (size(filt,1) < size(filt,2)) 26 | k = floor(0.5*length(filt)); 27 | cimg(:,1:k) = 0; 28 | cimg(:,end-k+1:end) = 0; 29 | else 30 | k = floor(0.5*length(filt)); 31 | cimg(1:k,:) = 0; 32 | cimg(end-k+1:end,:) = 0; 33 | end; 34 | 35 | end; 36 | 37 | return; 38 | 39 | 40 | %######################## 41 | % Function to pad matrix: 42 | %######################## 43 | function[r] = pad_matrix(m,d) 44 | 45 | if (d(1) < d(2)) 46 | k = floor(0.5*d(2)); 47 | ad1 = repmat(m(:,1),1,k); 48 | ad2 = repmat(m(:,end),1,k); 49 | r = [ad1 m ad2]; 50 | else 51 | k = floor(0.5*d(1)); 52 | ad1 = repmat(m(1,:),k,1); 53 | ad2 = repmat(m(end,:),k,1); 54 | r = [ad1; m; ad2]; 55 | end; 56 | 57 | return; 58 | 59 | 60 | %######################### 61 | % Function to trim matrix: 62 | %######################### 63 | function[r] = trim_matrix(m,d) 64 | 65 | if (d(1) < d(2)) 66 | k = floor(0.5*d(2)); 67 | r = m(:,k+1:end-k); 68 | else 69 | k = floor(0.5*d(1)); 70 | r = m(k+1:end-k,:); 71 | end; 72 | 73 | return; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/d2gauss.m: -------------------------------------------------------------------------------- 1 | %################################################################ 2 | % 3 | % d2gauss.m returns a 2-d Gaussian filter with kernal attributes: 4 | % size: n1*n2 5 | % theta: CCW-angle tkernat filter rotated 6 | % sigma1: standard deviation of 1st gaussian 7 | % sigma2: standard deviation of 2nd gaussian 8 | % 9 | %################################################################ 10 | 11 | function[kern] = d2gauss(n1,std1,n2,std2,theta,max1); 12 | 13 | [I,J] = meshgrid(1:1:n2,1:1:n1); 14 | It = I - (n2+1)/2; 15 | Jt = J - (n1+1)/2; 16 | 17 | u1 = cos(theta)*Jt' - sin(theta)*It'; 18 | u2 = sin(theta)*Jt' + cos(theta)*It'; 19 | 20 | kern = gauss(u1,std1) .* gauss(u2,std2); 21 | 22 | %############################################ 23 | % Normalise the kernal and confine to limits: 24 | %############################################ 25 | kern = kern / sqrt(sum(sum(kern.*kern))); 26 | max2 = max(max(kern)); 27 | kern = kern / (max2/max1); 28 | 29 | return; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/derivative2nd.m: -------------------------------------------------------------------------------- 1 | %############################################################ 2 | % 3 | % derivative2nd(g1dir,maxscale,noise,gauss_a,conv_type,fpath) 4 | % 5 | %############################################################ 6 | 7 | function[g2mag,g2sc,g2all] = derivative2nd(g1dir,maxscale,noise,... 8 | gauss_a,conv_type); 9 | 10 | fm2 = '.ascii'; 11 | 12 | %############ 13 | % Initialise: 14 | %############ 15 | g2mag = 0; 16 | g2sc = 0; 17 | nrows = size(g1dir,1); 18 | g2all = zeros(maxscale*nrows,size(g1dir,2)); 19 | 20 | for scale = 1:1:maxscale 21 | 22 | %############################# 23 | % Set scale value for filters: 24 | %############################# 25 | if (scale == 1) 26 | g2scaleval = '05'; 27 | else 28 | g2scaleval = '1'; 29 | end; 30 | 31 | mimg = gauss_a(:,:,scale); 32 | 33 | %kern1 = load(strcat(fpath,filesep,'gx',g2scaleval,fm2)); 34 | kern1 = load(strcat('gx',g2scaleval,fm2)); 35 | rc1 = convolve_2(mimg,kern1,conv_type); 36 | %kern2 = load(strcat(fpath,filesep,'g2y',g2scaleval,fm2)); 37 | kern2 = load(strcat('g2y',g2scaleval,fm2)); 38 | rc2 = convolve_2(rc1,kern2,conv_type); 39 | 40 | %kern3 = load(strcat(fpath,filesep,'gy',g2scaleval,fm2)); 41 | kern3 = load(strcat('gy',g2scaleval,fm2)); 42 | rc3 = convolve_2(mimg,kern3,conv_type); 43 | %kern4 = load(strcat(fpath,filesep,'g2x',g2scaleval,fm2)); 44 | kern4 = load(strcat('g2x',g2scaleval,fm2)); 45 | rc4 = convolve_2(rc3,kern4,conv_type); 46 | 47 | %kern5 = load(strcat(fpath,filesep,'g1x',g2scaleval,fm2)); 48 | kern5 = load(strcat('g1x',g2scaleval,fm2)); 49 | rc5 = convolve_2(mimg,kern5,conv_type); 50 | %kern6 = load(strcat(fpath,filesep,'g1y',g2scaleval,fm2)); 51 | kern6 = load(strcat('g1y',g2scaleval,fm2)); 52 | rc6 = convolve_2(rc5,kern6,conv_type); 53 | 54 | %####################################### 55 | % Calculate the 2nd Gaussian derivative: 56 | %####################################### 57 | g2 = g2steer(rc4,rc2,rc6,g1dir); 58 | 59 | g2all((scale-1)*nrows+1:scale*nrows,:) = g2; % For subpixel loc'n. 60 | 61 | %############################################################## 62 | % Augment multi-scale Gaussian directional 2nd derivative maps: 63 | %############################################################## 64 | [g2mag,g2sc] = g2scale(g2mag,g2,g2sc,scale,noise,0); 65 | 66 | end; 67 | 68 | return; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/elderEdge.m: -------------------------------------------------------------------------------- 1 | function [edgeStruct] = elderEdge() 2 | %Run local scale control edge detector on image (Elder & Zucker, 1998) 3 | 4 | noise = 1; %estimated SD of pixel noise 5 | imagefile='P1020177.jpg'; %name of image file. Most formats are handled. May be RGB or grayscale. 6 | maxscale=5; %maximum scale, must be positive integer. Scales increase exponentially from 0.5 to 2^{maxscale-2}. 7 | edgew=10; %maximum edge blur (distance in pixels between extrema in the 2nd derivative) 8 | conss=1; %boundary condition for scalespace computation. 0 for extension, 1 for no overlap 9 | congrd=0; %boundary condition for derivative computation. 0 for extension, 1 for no overlap 10 | subpixelflag=0; %generate subpixel-localized edges 11 | %run edge detection 12 | edgeStruct = main_edge(imagefile,maxscale,noise,edgew,conss,congrd,subpixelflag); -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/elderEdge.m~: -------------------------------------------------------------------------------- 1 | function elderEdge() 2 | %Run local scale control edge detector on image (Elder & Zucker, 1998) 3 | noise = 1; %estimated SD of pixel noise 4 | imagefile='img.jpg'; %name of image file 5 | maxscale=5; %maximum scale, must be positive integer. Scales increase exponentially from 0.5 to 2^{maxscale-2}. 6 | edgew=10; %maximum edge blur (distance in pixels between extrema in the 2nd derivative) 7 | conss=1; %boundary condition for scalespace computation. 0 for extension, 1 for no overlap 8 | congrd=0; %boundary condition for derivative computation. 0 for extension, 1 for no overlap 9 | save_v = zeros(0,11); %results to save 10 | view_v = zeros(0,11); %results to view 11 | 12 | save_v(1) = 1; %edge map 13 | save_v(2) = 1; %blur map 14 | save_v(3) = 1; %dark map 15 | save_v(4) = 1; %light map 16 | save_v(5) = 0; %gradient magnitude map 17 | save_v(6) = 1; %gradient direction map 18 | save_v(7) = 0; %gradient scale map 19 | save_v(8) = 0; %2nd derivative map 20 | save_v(9) = 0; %2nd derivativ scale map 21 | save_v(10) = 0; %X zero crossing offset 22 | save_v(11) = 0;%Y zero crossing offset 23 | 24 | view_v(1) = 0; %edge map 25 | view_v(2) = 0; %blur map 26 | view_v(3) = 0; %dark map 27 | view_v(4) = 0; %light map 28 | view_v(5) = 0; %gradient magnitude map 29 | view_v(6) = 0; %gradient direction map 30 | view_v(7) = 0; %gradient scale map 31 | view_v(8) = 0; %2nd derivative map 32 | view_v(9) = 0; %2nd derivativ scale map 33 | view_v(10) = 0; %X zero crossing offset 34 | view_v(11) = 0;%Y zero crossing offset 35 | 36 | %change this path to your own local directory for the filters 37 | filtpath='~/Dropbox/code/elderlab/edge/mar03/filters'; 38 | 39 | edgetype='.jpg'; %format for output edge map (.mat also allowed) 40 | edgelplotflag=0; %show edges on image 41 | imgplotflag=0; %view original image 42 | outputdir=pwd; 43 | 44 | sfilenames = check_save_requirements(view_v,outputdir,edgetype); 45 | subpixelflag=0; 46 | 47 | outputdata=main_edge(imagefile,maxscale,noise,edgew,... 48 | conss,congrd,view_v,view_v,filtpath,... 49 | edgetype,edgelplotflag,imgplotflag,sfilenames,... 50 | subpixelflag); 51 | 52 | reblur=uint8(imreconandblur(1,3)); 53 | 54 | img=imread(imagefile); 55 | if size(img,3)==3 56 | img=rgb2gray(img); 57 | end 58 | imwrite(img,strcat(resultdir,'img.jpg')); 59 | imwrite(outputdata.edge_map,strcat(resultdir,'edge.jpg')); 60 | imwrite(reblur,strcat(resultdir,'recon.jpg')); -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/find_edges.mexw64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/g1scale.m: -------------------------------------------------------------------------------- 1 | %########################################################################### 2 | % 3 | % g1scale(g1mag1,g1dir1,g1mag2,g1dir2,g1scale1,scale,noise,b_est) 4 | % 5 | % Purpose: Augments multi-scale Gaussian Gradient maps with significant 6 | % estimates at a new scale. Pixels for which the magnitude 7 | % of the Gaussian gradient is under threshold in the multi-scale 8 | % map (gradient magnitude input 1) but over threshold 9 | % at the new scale (gradient magnitude input 2) are updated 10 | % with the gradient magnitude, direction and scale value of 11 | % the new scale. 12 | % 13 | % Input: g1mag1 - Multi-scale Gaussian gradient magnitude image 14 | % g1dir1 - Multi-scale Gaussian gradient direction image 15 | % g1mag2 - Gaussian gradient magnitude image at new scale 16 | % g1dir2 - Gaussian gradient direction image at new scale 17 | % g1scale1 - Multi-scale scale map 18 | % g1scale2 - Scale of new gradient estimates 19 | % noise - Estimated sensor noise 20 | % b_est - Derivatives near boundary estimated by reflecting 21 | % intensity function. 22 | % Output: g1mag1 - Integrated multi-scale gradient magnitude map 23 | % g1dir1 - Integrated multi-scale gradient direction map 24 | % g1scale1 - Integrated multi-scale scale map 25 | % 26 | %########################################################################### 27 | 28 | function[g1mag1,g1dir1,g1sc1] = g1scale(g1mag1,g1dir1,g1mag2,g1dir2,g1sc1,... 29 | scale,noise,b_est) 30 | 31 | 32 | norms12 = [0.765, 0.199, 0.0499, 0.0125, 0.00312, 0.00078]; 33 | thresh = 5.6 * noise * norms12(scale); 34 | 35 | if ((scale<3) | b_est) 36 | krad = 1; 37 | else 38 | krad = ceil(4.6*sqrt(pow2(2*(scale-2))-1)); 39 | end 40 | 41 | 42 | if (scale == 1) 43 | 44 | g1mag1 = zeros(size(g1mag2)); 45 | g1dir1 = 4 * ones(size(g1mag2)); 46 | g1sc1 = zeros(size(g1mag2)); 47 | 48 | f = find(g1mag2 >= thresh); 49 | g1mag1(f) = g1mag2(f); 50 | g1dir1(f) = g1dir2(f); 51 | g1sc1(f) = scale; 52 | 53 | else 54 | sz = size(g1mag2); 55 | 56 | [i,j] = meshgrid(krad+1:1:sz(1)-krad,krad+1:1:sz(2)-krad); 57 | itrans = i'; 58 | jtrans = j'; 59 | if ~(isempty(itrans) | isempty(jtrans)) 60 | K = sub2ind(size(g1mag2),itrans(:),jtrans(:)); 61 | 62 | smat = g1sc1(krad+1:end-krad,krad+1:end-krad); 63 | mmat = g1mag2(krad+1:end-krad,krad+1:end-krad); 64 | 65 | f = find((smat==0) & (mmat>=thresh)); 66 | 67 | g1mag1(K(f)) = g1mag2(K(f)); 68 | g1dir1(K(f)) = g1dir2(K(f)); 69 | g1sc1(K(f)) = scale; 70 | end; 71 | end; 72 | 73 | return; 74 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/g1steer.m: -------------------------------------------------------------------------------- 1 | 2 | %###################################################################### 3 | % 4 | % g1steer - Computes magnitude and direction of the gradient of the 5 | % luminance function based on x and y basis functions for 1st Gaussian 6 | % derivative. 7 | % 8 | % 9 | % Input: g1x - X basis for Gaussian gradient 10 | % g1y - Y basis for Gaussian gradient 11 | % Output: g1mag - Gradient Magnitude Estimate 12 | % g1dir - Gradient Direction Estimate 13 | % 14 | %###################################################################### 15 | 16 | 17 | function[g1mag,g1dir] = g1steer(g1x,g1y) 18 | 19 | g1mag = zeros(size(g1x)); 20 | g1dir = 4 * ones(size(g1x)); 21 | 22 | f = find((g1x ~= 0) & (g1y ~= 0)); 23 | 24 | g1dir(f) = atan2(-g1y(f),g1x(f)); 25 | g1mag(f) = sqrt(g1y(f).^2 + g1x(f).^2); 26 | 27 | return; 28 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/g2scale.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % 3 | % g2scale - Augments multi-scale Gaussian directional 2nd derivative maps 4 | % with significant estimates at a new scale. Pixels for which the magnitude 5 | % of the 2nd derivative is under threshold in the multi-scale map 6 | % (2nd derivative input 1) but over threshold at the new scale (2nd derivative 7 | % input 2) are updated with the 2nd derivative magnitude and scale value of the 8 | % new scale. 9 | % 10 | % Input: g2mag1 - Multi-scale Gaussian directional 2nd derivative image 11 | % g2mag2 - Gaussian directional 2nd derivative image at new scale 12 | % g1scale1 - Multi-scale scale map 13 | % noise - Estimated sensor noise 14 | % b_est - Estimate derivatives near boundaries? 15 | % 16 | % Output: g2mag - Integrated multi-scale directional 2nd derivative map 17 | % g2scale - Integrated multi-scale 2nd derivative scale map 18 | % 19 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 20 | 21 | function[g2mag1,g2sc1] = g2scale(g2mag1,g2mag2,g2sc1,scale,noise,b_est) 22 | 23 | norms12 = [1.873 0.2443 0.0306 0.003817 0.00047715 0.0000596 0.000007455]; 24 | thresh = 5.2 * noise * norms12(scale); 25 | 26 | if ((scale<3) | b_est) 27 | krad = 1; 28 | else 29 | krad = ceil(4.6*sqrt(pow2(2*(scale-2))-1.0)); 30 | end; 31 | 32 | if (scale == 1) 33 | 34 | g2mag1 = zeros(size(g2mag2)); 35 | g2sc1 = zeros(size(g2mag2)); 36 | 37 | f = find(abs(g2mag2) >= thresh); 38 | g2sc1(f) = scale; 39 | g2mag1(f) = g2mag2(f); 40 | 41 | else 42 | 43 | sz = size(g2mag1); 44 | 45 | [i,j] = meshgrid(krad+1:sz(1)-krad,krad+1:sz(2)-krad); 46 | itrans = i'; 47 | jtrans = j'; 48 | if ~(isempty(itrans) | isempty(jtrans)) 49 | 50 | K = sub2ind(size(g2mag1),itrans(:),jtrans(:)); 51 | 52 | magmat1 = g2mag1(krad+1:end-krad,krad+1:end-krad); 53 | magmat2 = g2mag2(krad+1:end-krad,krad+1:end-krad); 54 | f = find(abs(magmat1) == 0 & abs(magmat2) >= thresh); 55 | 56 | g2mag1(K(f)) = g2mag2(K(f)); 57 | g2sc1(K(f)) = scale; 58 | end; 59 | end; 60 | 61 | return; 62 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/g2steer.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % 3 | % g2steer - Computes the second Gaussian derivative of the luminance function 4 | % in specified direction ( normally the Gradient direction). The three input 5 | % basis function are used to steer the derivative. The units of the direction 6 | % map are radians and the range is between -pi and pi. A value of -4 indicate 7 | % that no direction was measurable. The 2nd derivative is taken only for valid 8 | % directions. 9 | % 10 | % Input: g2x - Response map for 1st G2 basis function 11 | % g2y - Response map for 2nd G2 basis function 12 | % g2xy - Response map for 3rd G2 basis function 13 | % g1dir - Luminance gradient direction map 14 | % 15 | % Output: g2 - Second derivative response map 16 | % 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | 19 | function[g2] = g2steer(g2x,g2y,g2xy,g1dir) 20 | 21 | g2 = zeros(size(g2x)); 22 | 23 | f = find((g1dir ~= 4.0) & (g2x ~= 0) & (g2xy ~= 0) & (g2y ~= 0)); 24 | cdir = cos(2*g1dir); 25 | sdir = sin(2*g1dir); 26 | 27 | g2(f) = 0.5 * (1 + cdir(f)) .* g2x(f) - sdir(f) .* g2xy(f) + ... 28 | 0.5 * (1 - cdir(f)) .* g2y(f); 29 | 30 | return; 31 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/gauss.m: -------------------------------------------------------------------------------- 1 | % gauss.m: Calculates Gaussian pdf values. 2 | 3 | function[y] = gauss(x,std) 4 | 5 | y = exp(-x.^2/(2*std^2)) / (std*sqrt(2*pi)); 6 | 7 | return; 8 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/gradient.m: -------------------------------------------------------------------------------- 1 | %############################################################ 2 | % 3 | % gradient(maxscale,noise,gauss_a,conv_type,filtpath) 4 | % Computes non-zero gradient in the luminance function by 5 | % 6 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 7 | 8 | function[g1mag,g1dir,g1sc] = gradient(maxscale,noise,gauss_a,... 9 | conv_type) 10 | 11 | fm2 = '.ascii'; 12 | 13 | %############ 14 | % Initialise: 15 | %############ 16 | g1mag = 0; 17 | g1dir = 0; 18 | g1sc = 0; 19 | 20 | for scale = 1:1:maxscale 21 | 22 | % set scale values for filters 23 | if (scale == 1) 24 | g1scaleval = '05'; 25 | else 26 | g1scaleval = '1'; 27 | end; 28 | 29 | mimg = gauss_a(:,:,scale); 30 | 31 | %##################################################### 32 | % Compute response of first derivative Gaussian filter 33 | % to the blurred image in an arbitrary direction: 34 | %##################################################### 35 | %kern1 = load(strcat(filtpath,'/gy',g1scaleval,fm2)); 36 | kern1 = load(strcat('gy',g1scaleval,fm2)); 37 | rc1 = convolve_2(mimg,kern1,conv_type); 38 | %kern2 = load(strcat(filtpath,'/g1x',g1scaleval,fm2)); 39 | kern2 = load(strcat('g1x',g1scaleval,fm2)); 40 | rc2 = convolve_2(rc1,kern2,conv_type); % x basis input 41 | 42 | %kern3 = load(strcat(filtpath,'/gx',g1scaleval,fm2)); 43 | kern3 = load(strcat('gx',g1scaleval,fm2)); 44 | rc3 = convolve_2(mimg,kern3,conv_type); 45 | %kern4 = load(strcat(filtpath,'/g1y',g1scaleval,fm2)); 46 | kern4 = load(strcat('g1y',g1scaleval,fm2)); 47 | rc4 = convolve_2(rc3,kern4,conv_type); % y basis input 48 | 49 | %################################################### 50 | % Calculate magnitude and direction of the gradient: 51 | %################################################### 52 | [m2,d2] = g1steer(rc2,rc4); 53 | 54 | omag = g1mag; 55 | odir = g1dir; 56 | osc = g1sc; 57 | 58 | %############################################ 59 | % Augment multi-scale Gaussian Gradient maps: 60 | %############################################ 61 | [g1mag,g1dir,g1sc] = g1scale(g1mag,g1dir,m2,d2,g1sc,scale,noise,0); 62 | 63 | end; 64 | 65 | return; 66 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/main_edge.m: -------------------------------------------------------------------------------- 1 | %############################################################ 2 | % 3 | % main_edge.m: Main function called from edge GUI interface. 4 | % 5 | %############################################################ 6 | 7 | function[OutputData] = main_edge(img,scale,noise,edgew,... 8 | conss,congrd,subpixelflag) 9 | 10 | %############# 11 | % Input Image: 12 | %############# 13 | if (size(img,3)~=1) 14 | img = rgb2gray(img); 15 | end; 16 | img=double(img); 17 | 18 | 19 | %######################## 20 | % Compose blurred images: 21 | %######################## 22 | gauss_imgs = scalespace(img,scale,conss); 23 | 24 | %######################## 25 | % Calculate gradient map: 26 | %######################## 27 | [g1_mag,g1_dir,g1_sc] = gradient(scale,noise,gauss_imgs,congrd); 28 | 29 | %############################## 30 | % Calculate 2nd derivative map: 31 | %############################## 32 | [g2_mag,g2_sc,g2_all] = derivative2nd(g1_dir,scale,noise,gauss_imgs,congrd); 33 | 34 | 35 | % save input.mat img g1_mag g1_dir g1_sc g2_mag g2_sc g2_all noise edgew subpixelflag scale 36 | %inparTest = checkInParam(img,g1_mag,g1_dir,g1_sc,g2_mag,g2_sc,g2_all,noise,... 37 | % edgew,subpixelflag,scale); 38 | %if inparTest > 0 39 | % display('stop'); 40 | %end 41 | %#################### 42 | % Calculate edge map: 43 | %#################### 44 | clear find_edges 45 | [edge_map,blur_map,dark_map,light_map,xzero1_map,yzero1_map,xzero2_map,yzero2_map] = ... 46 | find_edges(img,g1_mag,g1_dir,g1_sc,g2_mag,g2_sc,g2_all,noise,... 47 | edgew,subpixelflag,scale); 48 | clear find_edges 49 | 50 | % outparTest = checkOutParam(edge_map,blur_map,dark_map,light_map,xzero1_map,yzero1_map,xzero2_map,yzero2_map); 51 | % if outparTest > 0 52 | % display('stop'); 53 | % end 54 | 55 | %save output.mat edge_map blur_map dark_map light_map xzero1_map yzero1_map xzero2_map yzero2_map 56 | % Branka's code leaves dark and light as double which need rounding: 57 | dark_map = round(dark_map); 58 | light_map = round(light_map); 59 | 60 | 61 | %####################### 62 | % Output data in struct: 63 | %####################### 64 | % OutputData = struct('edge',edge_map,'dark_map',dark_map,... 65 | % 'light_map',light_map,'blur_map',blur_map,... 66 | % 'g1mag',g1_mag,'g1dir',g1_dir,'g1scale',g1_sc,... 67 | % 'g2mag',g2_mag,'g2scale',g2_sc,... 68 | % 'x1zero',xzero1_map,'y1zero',yzero1_map,... 69 | % 'x2zero',xzero2_map,'y2zero',yzero2_map,... 70 | % 'noise',noise); 71 | 72 | OutputData = struct('edge',edge_map,'blur',blur_map,... 73 | 'dark',dark_map,'light',light_map,... 74 | 'g1mag',g1_mag,'g1dir',g1_dir,'g1scale',g1_sc,... 75 | 'g2mag',g2_mag,'g2scale',g2_sc,'g2_all',g2_all,... 76 | 'noise',noise,'xzero',xzero1_map,'yzero',yzero1_map); 77 | 78 | 79 | 80 | return; 81 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/mat2hough_scale.m: -------------------------------------------------------------------------------- 1 | function [ r, th] = mat2hough_scale(m, n, r_max, r_res, th_res) 2 | % MAT2HOUGH converts matrix coordinates to Hough map values 3 | % 4 | % Inputs: 5 | % r_max: Maximum value r can take 6 | % m: vertical matrix index 7 | % n: horizontal matrix index 8 | % 9 | % Output: 10 | % r: Hough domain r value equivalent to n 11 | % th: Hough domain \theta value equivalent to m 12 | % 13 | % Author: 14 | % Ron Tal 15 | % 16 | % Date: 17 | % February 16, 2009 18 | % 19 | % Description: 20 | % This function converts the coordinates of a matlab matrix 21 | % representing a Hough map, to the equivalent Hough domain 22 | % values 23 | % 24 | th = round2frac((m - 1) * th_res, th_res); 25 | r = round2frac((n - 1) * r_res - r_max, r_res); 26 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/plot_edgelmap.m: -------------------------------------------------------------------------------- 1 | 2 | % Function to plot gradient direction vectors at both pixel 3 | % and subpixel locations: 4 | 5 | function[] = plot_edgelmap(img,edgemap,xzeromap,yzeromap,g1dir,... 6 | newarrcol,leg1,leg2,imtitle); 7 | 8 | [M,N] = size(edgemap); 9 | 10 | [I,J] = find(edgemap==255); 11 | K = find(edgemap==255); 12 | 13 | X = J; 14 | Y = I; 15 | 16 | % Set arrowlength, then define: 17 | % (Uarrow,Varrow) = arrow lengths in (x,y) directions 18 | % (Xarrow,Yarrow) = arrow tail points 19 | arrowlen = 1; 20 | Graddir = g1dir(K) + pi/2; 21 | Uarrow = arrowlen * cos(Graddir); 22 | Varrow = -arrowlen * sin(Graddir); 23 | 24 | Xtp = X - 0.5*Uarrow; 25 | Ytp = Y - 0.5*Varrow; 26 | 27 | Xarrow = xzeromap(K) - 0.5*Uarrow; 28 | Yarrow = yzeromap(K) - 0.5*Varrow; 29 | 30 | figure; 31 | imagesc(img); 32 | axis image; 33 | colormap(gray); 34 | hold on; 35 | p1 = plot(0,0); 36 | set(p1,'Color',[0 0 1]); 37 | set(p1,'Visible','off'); 38 | p2 = plot(0,0); 39 | set(p2,'Color',newarrcol); 40 | set(p2,'Visible','off'); 41 | %q1 = quiver(Xtp,Ytp,Uarrow,Varrow,0); JE Jul08 - suppress pixel-localized 42 | %edges 43 | q2 = quiver(Xarrow,Yarrow,Uarrow,Varrow,0); % 44 | %set(q1,'Color',[0 0 1]); 45 | set(q2,'Color',newarrcol); 46 | L = legend([p1,p2],leg1,leg2,-1); 47 | set(L,'Fontsize',8); 48 | twords = ['Edgels for Image ',imtitle]; 49 | tt = title(twords); 50 | set(tt,'Interpreter','none'); 51 | hold off; 52 | 53 | return; 54 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/round2frac.m: -------------------------------------------------------------------------------- 1 | %% round2frac() Rounds the input data to the nearest fraction 2 | % 3 | % Description: 4 | % 5 | % Takes 'data' a matrix of floats and rounds it to the nearest 'frac' 6 | % 7 | % Author: 8 | % 9 | % Ron Tal 10 | % 11 | % Date Created: 12 | % 13 | % November 4, 2008 14 | % 15 | function [round_data] = round2frac(data, frac) 16 | % if frac > 1, error('Fraction must be smaller than 1'); end 17 | round_data = data.*(1/frac); 18 | round_data = round(round_data); 19 | round_data = round_data.*frac; 20 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/run_elderEdge.m: -------------------------------------------------------------------------------- 1 | clc 2 | clear 3 | close all 4 | for i = 1:9 5 | clear mex 6 | edgeStruct = elderEdge(); 7 | 8 | figure; 9 | imshow(edgeStruct.edge_map); 10 | i 11 | length(find(edgeStruct.edge_map)) 12 | diffs{i} = edgeStruct.edge_map; 13 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/scalespace.m: -------------------------------------------------------------------------------- 1 | %################################################################ 2 | % 3 | % r = scalescape(mimg,maxscale,conv_type) 4 | % 5 | % Create a series of Gaussian blurred images according to a 6 | % given maximum scale. 7 | % 8 | % Input: mimg: image for convolution w/ Gaussian filter 9 | % maxscale: maximum scale value 10 | % conv_type: convolution type flag 11 | % 12 | % Output: blurred_imgs: maxscale blurred images 13 | % 14 | %################################################################ 15 | 16 | function[blurred_imgs] = scalespace(mimg,maxscale,conv_type) 17 | 18 | for scale = 1:1:maxscale 19 | 20 | if (scale < 3) 21 | % Image is unblurred: 22 | blurred_imgs(:,:,scale) = mimg; 23 | 24 | else 25 | % Set values for generating Gaussian filter at given scale: 26 | [stdd,sizz] = setvalues(scale); 27 | kern = d2gauss(sizz,stdd,1,1,0,1/(stdd*sqrt(2*pi))); 28 | 29 | c1mimg = convolve_2(mimg,kern,conv_type); 30 | cres = convolve_2(c1mimg,rot90(kern,3),conv_type); 31 | 32 | blurred_imgs(:,:,scale) = cres; 33 | 34 | end; 35 | 36 | end; 37 | 38 | return; 39 | 40 | % Results differ to cantata output for scale >= 3 in the 4th d.p. -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/code/setvalues.m: -------------------------------------------------------------------------------- 1 | %########################################################################## 2 | % 3 | % [stdd,sizz] = setvalues(scale) 4 | % 5 | % Set values for generating 2d Gaussian filter according to 6 | % input scale. 7 | % 8 | % Input: scale 9 | % 10 | % Output: stdd: std dev'n along width (along height assumed to be 1) 11 | % size: width of output = #columns (height assumed to be 1) 12 | % 13 | %########################################################################## 14 | 15 | function[stdd,sizz] = setvalues(scale); 16 | 17 | if (scale < 3) 18 | stdd = 1; 19 | else 20 | stdd = sqrt((2^(scale-2))^2 - 1); 21 | end; 22 | 23 | sizz = 2 * ceil(4.6 * stdd) + 1; 24 | 25 | return; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/edge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/edge.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g1x05.ascii: -------------------------------------------------------------------------------- 1 | 0.750938 0 -0.750938 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g1x1.ascii: -------------------------------------------------------------------------------- 1 | 0.000535321 0.0132955 0.107982 0.241971 -0 -0.241971 -0.107982 -0.0132955 -0.000535321 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g1y05.ascii: -------------------------------------------------------------------------------- 1 | 0.750938 2 | 0 3 | -0.750938 4 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g1y1.ascii: -------------------------------------------------------------------------------- 1 | 0.000535321 2 | 0.0132955 3 | 0.107982 4 | 0.241971 5 | -0 6 | -0.241971 7 | -0.107982 8 | -0.0132955 9 | -0.000535321 10 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g2x05.ascii: -------------------------------------------------------------------------------- 1 | 0.0594001 1.02157 -2.16194 1.02157 0.0594001 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g2x1.ascii: -------------------------------------------------------------------------------- 1 | 0.00200744 0.0354546 0.161972 0 -0.39894 0 0.161972 0.0354546 0.00200744 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g2y05.ascii: -------------------------------------------------------------------------------- 1 | 0.0594002 2 | 1.02157 3 | -2.16194 4 | 1.02157 5 | 0.0594002 6 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/g2y1.ascii: -------------------------------------------------------------------------------- 1 | 0.00200744 2 | 0.0354546 3 | 0.161972 4 | 0 5 | -0.39894 6 | 0 7 | 0.161972 8 | 0.0354546 9 | 0.00200744 10 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/gx05.ascii: -------------------------------------------------------------------------------- 1 | 0.157727 0.684552 0.157727 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/gx1.ascii: -------------------------------------------------------------------------------- 1 | 0.00443185 0.053991 0.241971 0.398942 0.241971 0.053991 0.00443185 2 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/gy05.ascii: -------------------------------------------------------------------------------- 1 | 0.157726 2 | 0.68455 3 | 0.157726 4 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/filters/gy1.ascii: -------------------------------------------------------------------------------- 1 | 0.00443185 2 | 0.053991 3 | 0.241971 4 | 0.398942 5 | 0.241971 6 | 0.053991 7 | 0.00443185 8 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/images/P1020177.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/images/P1020177.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/images/peppers/img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/ElderZuckerEdgeDetector/images/peppers/img.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/computeKernel.m: -------------------------------------------------------------------------------- 1 | function [kern,ind]=computeKernel(e,r_max,SIGMA_X, SIGMA_TH, r_res, th_res) 2 | %computing the kernel for the probabilistic hough tranform 3 | r_th = e; 4 | C =[SIGMA_X^2 + (r_th^2) * (SIGMA_TH^2), r_th * (SIGMA_TH^2); r_th * (SIGMA_TH^2), SIGMA_TH^2]; 5 | 6 | C_inv = inv(C); 7 | C_det = det(C); 8 | N = 1 / (2*pi * sqrt(C_det)); 9 | R = -round2frac(3 *sqrt(C(1,1)), r_res):r_res:round2frac(3 *sqrt(C(1,1)), r_res); 10 | TH = -round2frac(3 * SIGMA_TH, th_res):th_res:round2frac(3 * SIGMA_TH, th_res); 11 | c=C_inv(1,1); 12 | d=C_inv(1,2); 13 | g=C_inv(2,1); 14 | f=C_inv(2,2); 15 | [a,b]=meshgrid(R,TH); 16 | vals=N * exp(-0.5*((a*c+b*g).*a+(a*d+b*f).*b)); 17 | [r, c] = find(vals > 0.05*max(vals(:))); 18 | m_c = min(c) - 1; 19 | m_r = min(r) - 1; 20 | linearInd = sub2ind([length(TH),length(R)], r, c); 21 | kern=[c- m_c,r- m_r, vals(linearInd)]; 22 | ind = e + r_max + 1; 23 | 24 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/determine_hough_lines_kernel_vote_remove.m: -------------------------------------------------------------------------------- 1 | function [ lines, edgeStruct ] = determine_hough_lines_kernel_vote_remove( im, pp, kernels, kernels_flip, num, kernel_params, r_res, th_res, sig_bound, frac,scale_factor) 2 | 3 | 4 | %edge detection 5 | edgeStruct = main_edge(im,5,1,10,1,0,1); 6 | 7 | %find the pixel location that has edge value 8 | edge_index = find(edgeStruct.edge); 9 | edge_img_locations = [edgeStruct.xzero(edge_index),edgeStruct.yzero(edge_index)]; 10 | edge_gradients = edgeStruct.g1dir(edge_index); 11 | %create a hough map 12 | 13 | map = mexVoteEdges_v3_scale(edge_img_locations, edge_gradients, kernels, kernels_flip, r_res,th_res, pp, kernel_params,scale_factor); 14 | 15 | %iteratively extract lines from hough map 16 | [P] = hough_find_peaks_vote_removal(map, num, r_res, th_res, edgeStruct, kernels, kernels_flip, pp, kernel_params, 0.0917, 0.3934, sig_bound, frac, scale_factor); 17 | %the lines consist of [rho, theta, strength] 18 | lines = P(:, 1:3); 19 | end 20 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/get_all_segments_assoc_edgeremoval.m: -------------------------------------------------------------------------------- 1 | function [ begin_points, end_points,ls_likelihoods] = get_all_segments_assoc_edgeremoval( line_data, edgeStruct, pp, LIKE_MODEL,scale_factor) 2 | 3 | begin_points = []; 4 | end_points = []; 5 | ls_likelihoods = []; 6 | for i = 1:size(line_data, 1) 7 | [~, begin_pointsi, end_pointsi, ~,~, ~, ~, ~, ~, likelihoods, edgeMap] = get_line_segment_DP_edgeremoval( edgeStruct, line_data(i,1), line_data(i,2), pp, LIKE_MODEL, scale_factor); 8 | for j = 1:size(likelihoods,2) 9 | begin_points = [begin_points; begin_pointsi(j,:)]; 10 | end_points = [end_points; end_pointsi(j,:)]; 11 | ls_likelihoods = [ls_likelihoods; likelihoods(j)]; 12 | end 13 | edgeStruct.edge = edgeMap; 14 | end 15 | 16 | end 17 | 18 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/hough_find_peaks_vote_removal.m: -------------------------------------------------------------------------------- 1 | %% Function P = hough_find_peaks_with_near_peak_supression(map, num_lines, NHOOD) 2 | % Input 3 | % map Hough Map 4 | % num_lines Maximum number of lines 5 | % NHOOD [R, TH] neighborhood to be 6 | % surpressed 7 | % 8 | % Output 9 | % P Hough Peaks 10 | % 11 | % 12 | function [P] = hough_find_peaks_vote_removal(map, num, r_res, th_res, edgeStruct, kernels, kernels_flip, pp, kernel_params, sig_th, sig_r, sig_bound, frac, scale_factor) 13 | 14 | % Loop until no more peaks or number of desired peaks have been 15 | % selected 16 | COUNT = 0; 17 | MAX_R = 400*scale_factor; 18 | P =[]; 19 | edgeMap = edgeStruct.edge; 20 | iter = 1; 21 | [m,n]=size(edgeMap); 22 | while 1 23 | iter = iter + 1; 24 | % Find max peak: 25 | [maxmap,ind]=max(map(:)); 26 | [r,c] = ind2sub(size(map), ind); 27 | if length(r) > 1, r = r(1); c = c(1); end 28 | %here are some stopping criteria 29 | if isempty(r) 30 | return; 31 | end 32 | [rho, theta] = mat2hough_scale(r, c, MAX_R, r_res, th_res); 33 | if ismember([rho, theta, maxmap], P, 'rows', 'legacy') 34 | return; 35 | end 36 | if COUNT > 0 37 | if (maxmap/P(1,3)) < frac 38 | return; 39 | end 40 | end 41 | % Save max peak 42 | P = [P; [rho theta maxmap]]; 43 | COUNT = COUNT + 1; 44 | 45 | % If reached number of lines, return 46 | if size(P, 1) == num 47 | return; 48 | end 49 | 50 | %there following block of code identify the location of edges that 51 | %need to be removed from the hough map and edge map 52 | indexXY=sampleLine(rho,theta,n,m,pp); 53 | yy=ceil(indexXY(:,2)+pp(2)); 54 | xx=ceil(indexXY(:,1)+pp(1)); 55 | edge_index = sub2ind([m,n],yy,xx); 56 | X_1 = rho * cos(theta) - 2000*cos(theta+pi/2) + pp(1); 57 | X_2 = rho * cos(theta) + 2000*cos(theta+pi/2) + pp(1); 58 | Y_1 = rho * sin(theta) - 2000*sin(theta+pi/2) + pp(2); 59 | Y_2 = rho * sin(theta) + 2000*sin(theta+pi/2) + pp(2); 60 | M = (Y_2-Y_1)/(X_2-X_1+1e-7); 61 | b = Y_2 - X_2*M; 62 | line_eq = [M, -1, b]; 63 | 64 | edge_img_locations = [edgeStruct.xzero(edge_index),edgeStruct.yzero(edge_index), ones(length(edge_index(:)),1)]; 65 | edge_gradients = edgeStruct.g1dir(edge_index); 66 | 67 | edge_gradients2 = edge_gradients; 68 | indexless0=edge_gradients2 < 0; 69 | indexgreaterpi=edge_gradients2>pi; 70 | edge_gradients2(indexless0) = edge_gradients2(indexless0) + pi; 71 | edge_gradients2(indexgreaterpi)= edge_gradients2(indexgreaterpi)-pi; 72 | 73 | edge_gradients2 = pi - edge_gradients2; 74 | edgetetalesspi=edge_gradients2 - theta<-pi/2; 75 | edge_gradients2(edgetetalesspi)= edge_gradients2(edgetetalesspi)+pi; 76 | edgethetagreaterpi=edge_gradients2-theta>pi/2; 77 | edge_gradients2(edgethetagreaterpi)= edge_gradients2(edgethetagreaterpi)-pi; 78 | orientationDiff = abs(edge_gradients2 - theta); 79 | distances = (abs(line_eq*edge_img_locations')'/norm(line_eq(1:2))); 80 | 81 | distanceBoundary=(distances <= sig_bound*sig_r); 82 | edge_img_locations_remove = edge_img_locations(distanceBoundary, 1:2); 83 | edge_gradients_remove = edge_gradients(distanceBoundary); 84 | 85 | orientationDiff = orientationDiff(distanceBoundary); 86 | edge_index = edge_index(distanceBoundary); 87 | orientatinDiffboundary=orientationDiff <=sig_bound*sig_th; 88 | edge_img_locations_remove = edge_img_locations_remove(orientatinDiffboundary, :); 89 | edge_gradients_remove = edge_gradients_remove(orientatinDiffboundary); 90 | edge_index = edge_index(orientatinDiffboundary); 91 | 92 | if isempty(edge_img_locations_remove) 93 | break; 94 | end 95 | edgeMap(edge_index) = 0; 96 | %remove the detected lines from the hough map 97 | map=mexRemoveVotes_v3_scale(edge_img_locations_remove, edge_gradients_remove, kernels, kernels_flip, r_res, th_res, pp, kernel_params, map, scale_factor); 98 | 99 | %map = mexRemoveVotes_v3_scale(edge_img_locations_remove, edge_gradients_remove, kernels, kernels_flip, r_res, th_res, pp, kernel_params, map, scale_factor); 100 | 101 | end 102 | end 103 | 104 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/kernelInitialization.m: -------------------------------------------------------------------------------- 1 | function [kernels, kernels_flip, kernel_params] =kernelInitialization(img) 2 | [m,n,~]=size(img); 3 | scale_factor = sqrt(m^2+n^2)/800; %800 is the diagnal length of 640x480 image 4 | maxr = floor(400*scale_factor); 5 | sigmax = 0.4; 6 | r_res = 0.2; 7 | th_res = 0.002; 8 | sigmatheta = 5.4*(pi/180); 9 | [kernels, kernels_flip, kernel_params] = precompute_kernels_sparse_res2(maxr, sigmax, sigmatheta, r_res, th_res); 10 | end 11 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/lineSegmentation_HighRes.m: -------------------------------------------------------------------------------- 1 | function [lines, fullLines] =lineSegmentation_HighRes(img,kernels, kernels_flip, kernel_params) 2 | %use 640x480 image as a reference. the diagonal size of this image is 800 3 | %if image size 640x480 scale factor = 1 4 | %if image size 1280x960 scale factor = 2 ... etc. 5 | %the lines variable contains the detected line segmentations it arranged as 6 | %[x1 y1 x2 y2 probability] 7 | %The fullLines are the detected lines. It is arranged as [rho theta probability] 8 | pp=[307.551305282635,251.454244960136]; %principle point 9 | sig_bound = 3; %threshold for the line detection 10 | r_res = 0.2; %the theshold for the rho 11 | th_res = 0.002; %the threshold for theta 12 | [m,n,~]=size(img); 13 | scale_factor = sqrt(m^2+n^2)/800; %800 is the diagnal length of 640x480 image 14 | %the kernel of the algorithm is calibrated on 640x480 image 15 | %rescale the principle point 16 | pp(1)=pp(1)*n/640; 17 | pp(2)=pp(2)*m/480; 18 | [lines, fullLines] = run_lineSegmentAlgorithm(kernels, kernels_flip, kernel_params, sig_bound, r_res, th_res, img, scale_factor,pp); 19 | 20 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/hmmParameters.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/hmmParameters.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/hmmParameters.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/hmmParameters.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexRemoveVotes_v3_scale.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexRemoveVotes_v3_scale.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexRemoveVotes_v3_scale.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexRemoveVotes_v3_scale.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexVoteEdges_v3_scale.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexVoteEdges_v3_scale.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexVoteEdges_v3_scale.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/mexVoteEdges_v3_scale.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/returnLines.m: -------------------------------------------------------------------------------- 1 | function [begin_points,end_points,lslength,startpositions,endpositions]=returnLines(points_proj,final_labels) 2 | count = 0; 3 | on_seg = false; 4 | begin_pointsT = zeros(20,2); 5 | counter_begin_points=1; 6 | end_pointsT = zeros(20,2); 7 | counter_end_points=1; 8 | lslengthT = zeros(20,1); 9 | counter_lslength=1; 10 | startpos = 0; 11 | startpositionsT = zeros(20,1); 12 | counter_startpositions=1; 13 | endpositionsT = zeros(20,1); 14 | counter_endpositions=1; 15 | 16 | for i = 1:length(final_labels); 17 | if ~on_seg 18 | if final_labels(i) == 1 19 | begin_pointsT(counter_begin_points,:)=points_proj(i,:); 20 | counter_begin_points=counter_begin_points+1; 21 | startpositionsT(counter_startpositions) = i; 22 | counter_startpositions=counter_startpositions+1; 23 | startpos = i; 24 | on_seg = true; 25 | count = count + 1; 26 | end 27 | elseif i == length(final_labels) 28 | end_pointsT(counter_end_points,:) =points_proj(i,:); 29 | counter_end_points=counter_end_points+1; 30 | endpositionsT(counter_endpositions) = i; 31 | counter_endpositions=counter_endpositions+1; 32 | lslengthT(counter_lslength) = i-startpos; 33 | counter_lslength=counter_lslength+1; 34 | on_seg = false; 35 | elseif final_labels(i) == 0 36 | end_pointsT(counter_end_points,:) = points_proj(i-1,:); 37 | counter_end_points=counter_end_points+1; 38 | endpositionsT(counter_endpositions) = i-1; 39 | counter_endpositions=counter_endpositions+1; 40 | lslengthT(counter_lslength) = i-startpos; 41 | counter_lslength=counter_lslength+1; 42 | on_seg = false; 43 | end 44 | end 45 | 46 | begin_points = begin_pointsT(1:counter_begin_points-1,:); 47 | end_points =end_pointsT(1:counter_end_points-1,:); 48 | lslength =lslengthT(1:counter_lslength-1); 49 | startpositions =startpositionsT(1:counter_startpositions); 50 | endpositions =endpositionsT(1:counter_endpositions-1); 51 | 52 | end 53 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/returnLines.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/returnLines.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/returnLines.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/returnLines.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/sampleLine.m: -------------------------------------------------------------------------------- 1 | function L = sampleLine(rho,theta,m,n,pp) 2 | %Returns locations of line samples together with the locations 3 | %of the associated pixels in the image. 4 | %(rho, theta) represents the line as per Fig. 1 of Tal (2012): 5 | %rho = x*cos(theta) + y*sin(theta) <--> ax + by + c = 0 where 6 | %a = cos(theta), b = sin(theta), c = -rho. 7 | %pp is the principal point, in pixels. 8 | %(m, n) is the width and height of the image in pixels. 9 | %The returned matrix L is N x 4, where N is the number of 10 | %samples on the line. The 4 columns represent (x,y,xp,yp) 11 | %where (x,y) indicates the real-valued location of the line 12 | %sample and (xp,yp) represents the integer-valued location 13 | %of the associated pixel. Note that the y index increases down. 14 | 15 | %Translate to standard representation of line 16 | a = cos(theta); 17 | b = sin(theta); 18 | c = -rho; 19 | 20 | %Location of centre of image 21 | x0 = pp(1); 22 | y0 = pp(2); 23 | 24 | %Find image bounds 25 | left = 1 - x0; 26 | right = m - x0; 27 | top = 1 - y0; 28 | bottom = n - y0; 29 | 30 | %Identify pixels within 2 pixels of line 31 | maxpts = round(5*sqrt(m^2+n^2)); 32 | %Pre-allocate for efficiency 33 | xp = zeros(maxpts,1);yp = zeros(maxpts,1); 34 | idx = 1; 35 | %Closer to horizontal - march along x. 36 | if theta > pi/4 && theta < 3*pi/4 37 | x = left:right; 38 | yu = floor(min(bottom,(-c+2 - x*a)/b)); 39 | yl = ceil(max(top,(-c-2 - x*a)/b)); 40 | for i = 1:m 41 | npts = max(0,yu(i)-yl(i) + 1); 42 | xp(idx:idx + npts-1) = x(i); 43 | yp(idx:idx + npts-1) = yl(i):yu(i); 44 | idx = idx + npts; 45 | end 46 | else %Closer to vertical - march along y 47 | y = top:bottom; 48 | %if theta pi/4 & theta < 3*pi/4 71 | % [x,idx] = sort(x); 72 | % else 73 | % [y,idx] = sort(y); 74 | % end 75 | % L = L(idx,:); 76 | % npts = size(L,1); 77 | % npts; 78 | % figure; 79 | % eps = endpoints(rho,theta,left,right,top,bottom); 80 | % plot(eps(:,1),eps(:,2),'r'); 81 | % hold on; 82 | % plot(xp,yp,'.'); 83 | % axis ij; 84 | % axis equal; 85 | % axis([left,right,top,bottom]); 86 | 87 | 88 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/sampleLine.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/sampleLine.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/mexfiles/sampleLine.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/mexfiles/sampleLine.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/parameters/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/parameters/.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/parameters/likelihood_model.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/MCMLSD/code/parameters/likelihood_model.mat -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/precompute_kernels_sparse_res2.m: -------------------------------------------------------------------------------- 1 | function [ kernels, kernels_flip, kernel_params] = precompute_kernels_sparse_res2(r_max, SIGMA_X, SIGMA_TH, r_res, th_res) 2 | %PRECOMPUTE_KERNELS Precomputes the kernels for Hough Transform 3 | % 4 | % Inputs: 5 | % r_max: Maximum value r_th can take 6 | % SIGMA_X: Variance of the distribution of position 7 | % SIGMA_TH: Variance of the distribution of angular 8 | % uncertainty 9 | % 10 | % Output: 11 | % kernels: Precomputed kernels for the ranges 12 | % 13 | % Author: 14 | % Ron Tal 15 | % 16 | % Date: 17 | % January 18, 2009 18 | % 19 | % Description: 20 | % This function precomputes the kernels to be used in the 21 | % Hough Transform method. The kernels are computed for the 22 | % given range at the given resolutions, using the given sigma 23 | % values. 24 | % 25 | % Recommended value for SIGMA_TH: 0.1308 26 | % Recommended value for SIGMA_X: 0.3933 27 | % 28 | kernels = cell(1, r_max); 29 | kernels_flip = cell(1, r_max); 30 | kernel_params = cell(1, r_max); 31 | for e = -r_max:1:r_max 32 | [kern,ind]=computeKernel(e,r_max,SIGMA_X, SIGMA_TH, r_res, th_res); 33 | kernels(1, ind) = {kern}; 34 | kernels_flip(1, ind) = {kern}; 35 | kernel_params(1, ind) = {max(kern)}; 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/project_point_to_line_segment_vec.m: -------------------------------------------------------------------------------- 1 | function [q, d] = project_point_to_line_segment_vec(A,B,p) 2 | % returns q the closest point to p on the line segment from A to B 3 | % q = zeros(size(p)); 4 | % vector from A to B 5 | % Vectorize input 6 | [m, n] = size(p); 7 | A_v = repmat(A,m,1); 8 | B_v = repmat(B, m,1); 9 | AB = (B_v-A_v); 10 | % squared distance from A to B 11 | AB_squared = dot(AB(1,:),AB(1,:)); 12 | if(AB_squared == 0) 13 | % A and B are the same point 14 | q = A_v; 15 | else 16 | % vector from A to p 17 | Ap = (p-A_v); 18 | t = dot(Ap,AB, 2)/AB_squared; 19 | q = A_v + repmat(t,1,2).* AB; 20 | q(t < 0.0,:) = A_v(t < 0.0,:); 21 | q(t > 1.0,:) = B_v(t > 1.0,:); 22 | end 23 | diff = q-p; 24 | d = sqrt(diff(:,1).^2 + diff(:,2).^2); 25 | end -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/run_lineSegmentAlgorithm.m: -------------------------------------------------------------------------------- 1 | function [out, P] = run_lineSegmentAlgorithm(kernels, kernels_flip, kernel_params, sig_bound, r_res, th_res, img,scale_factor,pp) 2 | 3 | 4 | 5 | frac = 0.05; 6 | %the maximum number of lines that could be extract from the algorithm 7 | maxLine=5000; 8 | LIKE_MODEL = load(['parameters', filesep, 'likelihood_model.mat']); 9 | [P, edgeStruct] = determine_hough_lines_kernel_vote_remove(img, pp, kernels, kernels_flip, maxLine, kernel_params, r_res, th_res, sig_bound, frac,scale_factor); 10 | [begin_points, end_points,ls_likelihoods] = get_all_segments_assoc_edgeremoval( P, edgeStruct, pp, LIKE_MODEL, scale_factor); 11 | ttlLS = size(begin_points,1); 12 | out = zeros(ttlLS,5); 13 | for dd = 1:ttlLS 14 | out(dd,:) = [begin_points(dd,1), begin_points(dd,2), end_points(dd,1), end_points(dd,2),ls_likelihoods(dd)]; %E.A. 15 | end 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/trace_Back.m: -------------------------------------------------------------------------------- 1 | function [ lsjoint, lslogz, final_labels, on_nodes, likelihoods ] = trace_Back(DP_table, aux_table, z, node_idx, obsLike) 2 | % It traces back the dinamic programming results assigning labels to each 3 | % position (On, Off). It also computes the joint probability and the log 4 | % evidenct for each line segment. Additionally computes the sum of the 5 | % marginals of all locations along the detected segments 6 | % 7 | % Input 8 | % - DP_Table: Table that contains the partial results of the Dynamic 9 | % programing solution 10 | % - aux_table: table that contains the labels and it will be used to 11 | % unbound the results 12 | % - z: Normalization constant 13 | % - gamma: Marginals at each position along the line 14 | % - node_idx: Locations along the line to be considered 15 | % 16 | % Output: 17 | % - lsjoint: Joint probabilty at segment level 18 | % - lslogz: Evidence of line segments 19 | % - lsgamma: Sum of the marginals of the positions along segments 20 | % - final_labels: labels associated with the positions along the line 21 | % - on_nodes: list of indeces associated with a segment 22 | 23 | final_labels = zeros(1, length(node_idx)); 24 | [~, final_labels(1,end)] = max(DP_table(:,end)); 25 | on_nodes = []; 26 | lsjoint = []; 27 | lslogz = []; 28 | likelihoods = []; 29 | prev = 2; %control start and end line segments -- E.A. 30 | logz_tmp = 0; 31 | ctrl = 0; % used to control end of the line cases 32 | lsId = 1; 33 | for i = length(node_idx)-1:-1:1 34 | ind = final_labels(i+1); 35 | final_labels(i) = aux_table(ind, i+1); 36 | %sum the log of the partial evidences. 37 | if ctrl == 1 && ind == 1 38 | logz_tmp = logz_tmp + log(z(i+1)); 39 | % lsgamma(:,lsId) = lsgamma(:,lsId) + gamma(:,i+1); 40 | likelihoods(lsId) = likelihoods(lsId) + obsLike(1,i+1); 41 | on_nodes = [on_nodes; node_idx(i+1)]; 42 | end 43 | if ind == 1 && prev == 2 %begining of a segment 44 | endProb = DP_table(ind,i+1); 45 | logz_tmp = log(z(i+1)); 46 | % lsgamma(:,lsId) = gamma(:,i+1); 47 | likelihoods(lsId) = obsLike(1,i+1); 48 | on_nodes = [on_nodes; node_idx(i+1)]; 49 | ctrl = 1; 50 | elseif ind == 2 && prev == 1 51 | startProb = DP_table(ind, i+1); 52 | lsjoint = [lsjoint; endProb - startProb]; 53 | lslogz = [lslogz; logz_tmp]; 54 | lsId = lsId + 1; 55 | logz_tmp = 0; 56 | ctrl = 0; 57 | elseif ind == 1 && i == 1 58 | lsjoint = [lsjoint; endProb]; 59 | lslogz = [lslogz; logz_tmp]; 60 | 61 | end 62 | prev = ind; 63 | %% 64 | end 65 | 66 | %% E.A. Posterior prob. 67 | lsjoint = flipud(lsjoint); %E.A. To match the line segment output 68 | lslogz = flipud(lslogz); %E.A. To match the line segment output 69 | 70 | likelihoods = fliplr(likelihoods); 71 | 72 | end 73 | 74 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/getDebug.m: -------------------------------------------------------------------------------- 1 | function r = getDebug 2 | global debug 3 | r = debug; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/getImg.m: -------------------------------------------------------------------------------- 1 | function r = getImg 2 | global origImg 3 | r = origImg; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/getLegend.m: -------------------------------------------------------------------------------- 1 | function r = getLegend 2 | global legendStr 3 | r = legendStr; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/setDebug.m: -------------------------------------------------------------------------------- 1 | function setDebug(val) 2 | global debug 3 | debug = val; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/setImg.m: -------------------------------------------------------------------------------- 1 | function setImg(img) 2 | global origImg 3 | origImg = img; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/code/utils/setLegend.m: -------------------------------------------------------------------------------- 1 | function setLegend(val) 2 | global legendStr 3 | legendStr = val; -------------------------------------------------------------------------------- /thirdparty/MCMLSD/MCMLSD/demo_start_v2.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | close all 4 | 5 | addpath(genpath('code/')); 6 | addpath('Imgs/'); 7 | img = imread(['Imgs', filesep, 'P1040823hr.jpg']); 8 | img = imresize(img, [round(size(img,1)/4), round(size(img,2)/4)]); 9 | 10 | %compute the kernel for the image size 11 | %you only need to compute the kernal once for one an image size 12 | [kernels, kernels_flip, kernel_params] =kernelInitialization(img); 13 | ticId = tic; 14 | %the lines variable contains the detected line segmentations it arranged as 15 | %[x1 y1 x2 y2 probability] 16 | %The fullLines are the detected lines. It is arranged as [rho theta probability] 17 | [lines, fullLines] =lineSegmentation_HighRes(img,kernels, kernels_flip, kernel_params); 18 | display('Total time'); 19 | toc(ticId) 20 | fig = figure; 21 | imshow(img); 22 | hold all 23 | %Order lines by probability 24 | lines = sortrows(lines, -5); 25 | ttlLines = size(lines,1); 26 | for i = 1:90 27 | %plot the top 90 lines 28 | line([lines(i,1) lines(i,3)], [lines(i,2) lines(i,4)],'Color', rand(1,3), 'LineWidth', 3); 29 | end 30 | 31 | %please use code in Evaluation code.zip to evaluate the performance of the line segmentation algorithm 32 | -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/._MCMLSD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/._MCMLSD -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._Evaluation Code.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/._Evaluation Code.zip -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._Imgs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/._Imgs -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._Readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/._Readme.txt -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._code: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/._code -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/._demo_start_v2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/._demo_start_v2.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040779.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040779.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040812hr.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040812hr.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040823.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040823.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040823hr.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/Imgs/._P1040823hr.JPG -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._ElderZuckerEdgeDetector: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._ElderZuckerEdgeDetector -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._computeKernel.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._computeKernel.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._determine_hough_lines_kernel_vote_remove.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._determine_hough_lines_kernel_vote_remove.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._get_all_segments_assoc_edgeremoval.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._get_all_segments_assoc_edgeremoval.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._get_line_segment_DP_edgeremoval.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._get_line_segment_DP_edgeremoval.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._hough_find_peaks_vote_removal.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._hough_find_peaks_vote_removal.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._kernelInitialization.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._kernelInitialization.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._lineSegmentation_HighRes.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._lineSegmentation_HighRes.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._mexfiles: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._mexfiles -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._parameters: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._parameters -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._precompute_kernels_sparse_res2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._precompute_kernels_sparse_res2.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._project_point_to_line_segment_vec.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._project_point_to_line_segment_vec.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._run_lineSegmentAlgorithm.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._run_lineSegmentAlgorithm.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._trace_Back.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._trace_Back.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._utils: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/._utils -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._code: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._code -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._edge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._edge.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._filters: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._filters -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._images: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/._images -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._checkInParam.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._checkInParam.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._checkOutParam.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._checkOutParam.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._check_save_requirements.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._check_save_requirements.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._convolve_2.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._convolve_2.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._d2gauss.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._d2gauss.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._derivative2nd.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._derivative2nd.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._elderEdge.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._elderEdge.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._elderEdge.m~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._elderEdge.m~ -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.c -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexw64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._find_edges.mexw64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g1scale.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g1scale.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g1steer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g1steer.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g2scale.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g2scale.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g2steer.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._g2steer.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._gauss.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._gauss.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._gradient.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._gradient.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._main_edge.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._main_edge.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._mat2hough_scale.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._mat2hough_scale.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._plot_edgelmap.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._plot_edgelmap.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._round2frac.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._round2frac.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._run_elderEdge.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._run_elderEdge.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._scalespace.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._scalespace.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._setvalues.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/code/._setvalues.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1x05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1x05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1x1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1x1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1y05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1y05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1y1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g1y1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2x05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2x05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2x1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2x1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2y05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2y05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2y1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._g2y1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gx05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gx05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gx1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gx1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gy05.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gy05.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gy1.ascii: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._gy1.ascii -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._resource.frk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/filters/._resource.frk -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/._P1020177.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/._P1020177.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/._peppers: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/._peppers -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/peppers/._img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/ElderZuckerEdgeDetector/images/peppers/._img.jpg -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._.DS_Store: -------------------------------------------------------------------------------- 1 | Mac OS X  2Fx ATTRxx -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.prj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._hmmParameters.prj -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.c -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexRemoveVotes_v3_scale.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.c -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._mexVoteEdges_v3_scale.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.prj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._returnLines.prj -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.mexa64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.mexa64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.mexmaci64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.mexmaci64 -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.prj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/mexfiles/._sampleLine.prj -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/parameters/._.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/parameters/._.DS_Store -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/parameters/._likelihood_model.mat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/parameters/._likelihood_model.mat -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getDebug.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getDebug.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getImg.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getImg.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getLegend.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._getLegend.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setDebug.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setDebug.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setImg.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setImg.m -------------------------------------------------------------------------------- /thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setLegend.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vincentqyw/LineSegmentsDetection/b6ae4fd086433ab3d13a535ecce8ded414e4dfb5/thirdparty/MCMLSD/__MACOSX/MCMLSD/code/utils/._setLegend.m --------------------------------------------------------------------------------