![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
#include <ecvIsolines.h>
Public Member Functions | |
| Isolines (int w, int h) | |
| Default constructor. More... | |
| void | setThreshold (T t) |
| Sets isoline value to trace. More... | |
| int | find (const T *in) |
| Find isolines. More... | |
| int | getNumContours () const |
| Returns the number of found contours. More... | |
| int | getContourLength (int contour) const |
| Returns the length of a given contour. More... | |
| bool | isContourClosed (int contour) const |
| Returns whether a given contour is closed or not. More... | |
| void | getContourPoint (int contour, size_t index, double &x, double &y) const |
| Returns the given point (x,y) of a given contour. More... | |
| double | measureArea (int contour) const |
| Measures the area delineated by a given contour. More... | |
| double | measurePerimeter (int contour) const |
| Measures the perimeter of a given contour. More... | |
| void | createOnePixelBorder (T *in, T borderval) const |
| Creates a single pixel, 0-valued border around the grid. More... | |
| double | getContourX (int contour, int v) const |
| double | getContourY (int contour, int v) const |
| double | measureCurvature (int contour, int i) const |
| void | findAreas (int window, std::vector< double > &tips) |
| void | findRoundedCorners (int window, std::vector< double > &tips) |
| int | getMaxContour () const |
| bool | computeBoundingBoxes () |
| double | getBBMinX (int contour) const |
| double | getBBMaxX (int contour) const |
| double | getBBMinY (int contour) const |
| double | getBBMaxY (int contour) const |
| bool | contains (int k, double x, double y) const |
| bool | containsContour (int k1, int k2) |
| bool | containsBoundingBox (int k, double minx, double miny, double maxx, double maxy) const |
| bool | contains (const std::vector< double > &polyx, const std::vector< double > &polyy, double x, double y) const |
| bool | bbIntersect (int k1, int k2) const |
| bool | bbContainsBB (int k1, int k2) const |
| double | bbArea (int k) const |
| double | getBBCenterX (int k) const |
| double | getBBCenterY (int k) const |
Protected Types | |
| enum | ConfigurationCodes { CASE0 = 0 , CASE1 = 1 , CASE2 = 2 , CASE3 = 3 , CASE4 = 4 , CASE5 = 5 , CASE6 = 6 , CASE7 = 7 , CASE8 = 8 , CASE9 = 9 , CASE10 = 10 , CASE11 = 11 , CASE12 = 12 , CASE13 = 13 , CASE14 = 14 , CASE15 = 15 , VISITED = 16 } |
| 2x2 cell configuration codes More... | |
| enum | Edges { NONE = -1 , TOP = 0 , RIGHT = 1 , BOTTOM = 2 , LEFT = 3 } |
| Entry/exit edges. More... | |
Protected Member Functions | |
| void | preCodeImage (const T *in) |
| Computes a code for each group of 4x4 cells. More... | |
| void | endContour (bool closed, bool alternatePath) |
| int | findIsolines (const T *in) |
| Searches image for contours from topleft to bottomright corners. More... | |
| double | LERP (T A, T B) const |
| LERP between two values. More... | |
| int | getLastIndex () const |
| void | setContourX (int contour, int v, double x) |
| void | setContourY (int contour, int v, double y) |
| int | getValidIndex (int contour, int v) const |
| double | measureArea (int contour, int first, int last) const |
| double | measureMeanX (int contour) const |
| double | measureMeanY (int contour) const |
| double | measurePerimeter (int contour, int first, int last) const |
| double | measureNormalX (int contour, int i) const |
| double | measureNormalY (int contour, int i) const |
| double | measureNormalY (int contour, int first, int last) const |
| double | measureNormalX (int contour, int first, int last) const |
| double | measureAngleChange (int contour, int first, int last) const |
| int | ixy (int x, int y) const |
| double | measureDistance (int contour, int first, int second) const |
| double | measureLength (int contour, int i) const |
| double | measureAngle (int contour, int i) const |
Static Protected Member Functions | |
| static int | wrap (int i, int lo, int hi) |
Protected Attributes | |
| std::vector< double > | m_minx |
| std::vector< double > | m_miny |
| std::vector< double > | m_maxx |
| std::vector< double > | m_maxy |
| std::vector< int > | m_cd |
| std::vector< double > | m_contourX |
| std::vector< double > | m_contourY |
| std::vector< int > | m_contourLength |
| std::vector< int > | m_contourOrigin |
| std::vector< int > | m_contourIndexes |
| std::vector< bool > | m_contourClosed |
| int | m_w |
| int | m_h |
| int | m_numContours |
| T | m_threshold |
Transcription of FindIsolines.java for C++
Fast implementation of marching squares
AUTHOR: Murphy Stein, Greg Borenstein New York University CREATED: Jan-Sept 2012 MODIFIED: Dec 2014 (DGM)
LICENSE: BSD
Copyright (c) 2012 New York University. All rights reserved.
Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by New York Univserity. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED `‘AS IS’' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. This is a fast implementation of the marching squares algorithm for finding isolines (lines of equal color) in an image.
Definition at line 55 of file ecvIsolines.h.
|
protected |
2x2 cell configuration codes
| Enumerator | |
|---|---|
| CASE0 | |
| CASE1 | |
| CASE2 | |
| CASE3 | |
| CASE4 | |
| CASE5 | |
| CASE6 | |
| CASE7 | |
| CASE8 | |
| CASE9 | |
| CASE10 | |
| CASE11 | |
| CASE12 | |
| CASE13 | |
| CASE14 | |
| CASE15 | |
| VISITED | |
Definition at line 177 of file ecvIsolines.h.
|
protected |
Entry/exit edges.
| Enumerator | |
|---|---|
| NONE | |
| TOP | |
| RIGHT | |
| BOTTOM | |
| LEFT | |
Definition at line 198 of file ecvIsolines.h.
|
inline |
Definition at line 992 of file ecvIsolines.h.
References Isolines< T >::getBBMaxX(), Isolines< T >::getBBMaxY(), Isolines< T >::getBBMinX(), and Isolines< T >::getBBMinY().
|
inline |
Definition at line 978 of file ecvIsolines.h.
References Isolines< T >::getBBMaxX(), Isolines< T >::getBBMaxY(), Isolines< T >::getBBMinX(), and Isolines< T >::getBBMinY().
|
inline |
Definition at line 960 of file ecvIsolines.h.
References Isolines< T >::getBBMaxX(), Isolines< T >::getBBMaxY(), Isolines< T >::getBBMinX(), and Isolines< T >::getBBMinY().
Referenced by Isolines< T >::containsContour().
|
inline |
Definition at line 852 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), Isolines< T >::getNumContours(), Isolines< T >::m_contourOrigin, Isolines< T >::m_contourX, Isolines< T >::m_contourY, Isolines< T >::m_maxx, Isolines< T >::m_maxy, Isolines< T >::m_minx, and Isolines< T >::m_miny.
|
inline |
Definition at line 936 of file ecvIsolines.h.
|
inline |
Definition at line 899 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), Isolines< T >::getContourX(), and Isolines< T >::getContourY().
Referenced by Isolines< T >::containsBoundingBox(), and Isolines< T >::containsContour().
|
inline |
Definition at line 930 of file ecvIsolines.h.
References Isolines< T >::contains().
|
inline |
Definition at line 918 of file ecvIsolines.h.
References Isolines< T >::bbIntersect(), Isolines< T >::contains(), Isolines< T >::getBBMaxX(), Isolines< T >::getBBMaxY(), Isolines< T >::getBBMinX(), and Isolines< T >::getBBMinY().
|
inline |
Creates a single pixel, 0-valued border around the grid.
Definition at line 135 of file ecvIsolines.h.
Referenced by ccRasterizeTool::generateContours().
|
inlineprotected |
Definition at line 200 of file ecvIsolines.h.
References length(), Isolines< T >::m_contourClosed, Isolines< T >::m_contourIndexes, Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourX, and Isolines< T >::m_contourY.
|
inline |
Find isolines.
Definition at line 94 of file ecvIsolines.h.
Referenced by ccRasterizeTool::generateContours().
|
inline |
Definition at line 810 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), Isolines< T >::getValidIndex(), Isolines< T >::m_h, Isolines< T >::m_numContours, Isolines< T >::m_w, and Isolines< T >::measureArea().
|
inlineprotected |
Searches image for contours from topleft to bottomright corners.
Definition at line 270 of file ecvIsolines.h.
|
inline |
Definition at line 823 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), Isolines< T >::getValidIndex(), Isolines< T >::m_h, Isolines< T >::m_numContours, Isolines< T >::m_w, Isolines< T >::measureArea(), and Isolines< T >::measurePerimeter().
|
inline |
Definition at line 998 of file ecvIsolines.h.
References Isolines< T >::getBBMaxX(), and Isolines< T >::getBBMinX().
|
inline |
Definition at line 1001 of file ecvIsolines.h.
References Isolines< T >::getBBMaxY(), and Isolines< T >::getBBMinY().
|
inline |
Definition at line 895 of file ecvIsolines.h.
References Isolines< T >::m_maxx.
Referenced by Isolines< T >::bbArea(), Isolines< T >::bbContainsBB(), Isolines< T >::bbIntersect(), Isolines< T >::containsContour(), and Isolines< T >::getBBCenterX().
|
inline |
Definition at line 897 of file ecvIsolines.h.
References Isolines< T >::m_maxy.
Referenced by Isolines< T >::bbArea(), Isolines< T >::bbContainsBB(), Isolines< T >::bbIntersect(), Isolines< T >::containsContour(), and Isolines< T >::getBBCenterY().
|
inline |
Definition at line 894 of file ecvIsolines.h.
References Isolines< T >::m_minx.
Referenced by Isolines< T >::bbArea(), Isolines< T >::bbContainsBB(), Isolines< T >::bbIntersect(), Isolines< T >::containsContour(), and Isolines< T >::getBBCenterX().
|
inline |
Definition at line 896 of file ecvIsolines.h.
References Isolines< T >::m_miny.
Referenced by Isolines< T >::bbArea(), Isolines< T >::bbContainsBB(), Isolines< T >::bbIntersect(), Isolines< T >::containsContour(), and Isolines< T >::getBBCenterY().
|
inline |
Returns the length of a given contour.
Definition at line 105 of file ecvIsolines.h.
References Isolines< T >::m_contourLength.
Referenced by Isolines< T >::computeBoundingBoxes(), Isolines< T >::contains(), Isolines< T >::findAreas(), Isolines< T >::findRoundedCorners(), ccRasterizeTool::generateContours(), Isolines< T >::getContourPoint(), Isolines< T >::getMaxContour(), Isolines< T >::measureArea(), Isolines< T >::measureMeanX(), Isolines< T >::measureMeanY(), and Isolines< T >::measurePerimeter().
|
inline |
Returns the given point (x,y) of a given contour.
Definition at line 115 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), Isolines< T >::getContourX(), and Isolines< T >::getContourY().
|
inline |
Definition at line 796 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourX, and Isolines< T >::wrap().
Referenced by Isolines< T >::contains(), ccRasterizeTool::generateContours(), Isolines< T >::getContourPoint(), Isolines< T >::measureAngle(), Isolines< T >::measureArea(), Isolines< T >::measureDistance(), Isolines< T >::measureMeanX(), and Isolines< T >::measureNormalY().
|
inline |
Definition at line 801 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourY, and Isolines< T >::wrap().
Referenced by Isolines< T >::contains(), ccRasterizeTool::generateContours(), Isolines< T >::getContourPoint(), Isolines< T >::measureAngle(), Isolines< T >::measureArea(), Isolines< T >::measureDistance(), Isolines< T >::measureMeanY(), and Isolines< T >::measureNormalX().
|
inlineprotected |
Definition at line 629 of file ecvIsolines.h.
References Isolines< T >::getNumContours(), Isolines< T >::m_contourLength, and Isolines< T >::m_contourOrigin.
|
inline |
Definition at line 837 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), and Isolines< T >::m_numContours.
|
inline |
Returns the number of found contours.
Definition at line 102 of file ecvIsolines.h.
References Isolines< T >::m_numContours.
Referenced by Isolines< T >::computeBoundingBoxes(), and Isolines< T >::getLastIndex().
|
inlineprotected |
Definition at line 644 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, and Isolines< T >::wrap().
Referenced by Isolines< T >::findAreas(), Isolines< T >::findRoundedCorners(), Isolines< T >::measureArea(), and Isolines< T >::measurePerimeter().
|
inline |
Returns whether a given contour is closed or not.
Definition at line 110 of file ecvIsolines.h.
References Isolines< T >::m_contourClosed.
Referenced by ccRasterizeTool::generateContours().
|
inlineprotected |
Definition at line 744 of file ecvIsolines.h.
References Isolines< T >::m_w.
|
inlineprotected |
LERP between two values.
Definition at line 624 of file ecvIsolines.h.
References Isolines< T >::m_threshold.
|
inlineprotected |
Definition at line 769 of file ecvIsolines.h.
References dot(), Isolines< T >::getContourX(), and Isolines< T >::getContourY().
Referenced by Isolines< T >::measureCurvature().
|
inlineprotected |
Definition at line 716 of file ecvIsolines.h.
|
inline |
Measures the area delineated by a given contour.
Definition at line 125 of file ecvIsolines.h.
References Isolines< T >::getContourLength().
Referenced by Isolines< T >::findAreas(), and Isolines< T >::findRoundedCorners().
|
inlineprotected |
Definition at line 649 of file ecvIsolines.h.
References Isolines< T >::getContourX(), Isolines< T >::getContourY(), and Isolines< T >::getValidIndex().
|
inline |
Definition at line 806 of file ecvIsolines.h.
References Isolines< T >::measureAngle(), and Isolines< T >::measureLength().
|
inlineprotected |
Definition at line 746 of file ecvIsolines.h.
References Isolines< T >::getContourX(), and Isolines< T >::getContourY().
Referenced by Isolines< T >::measurePerimeter().
|
inlineprotected |
Definition at line 753 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourX, Isolines< T >::m_contourY, and Isolines< T >::wrap().
Referenced by Isolines< T >::measureCurvature(), Isolines< T >::measureNormalX(), Isolines< T >::measureNormalY(), and Isolines< T >::measurePerimeter().
|
inlineprotected |
Definition at line 667 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), and Isolines< T >::getContourX().
|
inlineprotected |
Definition at line 674 of file ecvIsolines.h.
References Isolines< T >::getContourLength(), and Isolines< T >::getContourY().
|
inlineprotected |
Definition at line 710 of file ecvIsolines.h.
References Isolines< T >::measureNormalX().
|
inlineprotected |
Definition at line 692 of file ecvIsolines.h.
References Isolines< T >::getContourY(), and Isolines< T >::measureLength().
Referenced by Isolines< T >::measureNormalX().
|
inlineprotected |
Definition at line 704 of file ecvIsolines.h.
References Isolines< T >::measureNormalY().
|
inlineprotected |
Definition at line 698 of file ecvIsolines.h.
References Isolines< T >::getContourX(), and Isolines< T >::measureLength().
Referenced by Isolines< T >::measureNormalY().
|
inline |
Measures the perimeter of a given contour.
Definition at line 130 of file ecvIsolines.h.
References Isolines< T >::getContourLength().
Referenced by Isolines< T >::findRoundedCorners().
|
inlineprotected |
Definition at line 681 of file ecvIsolines.h.
References Isolines< T >::getValidIndex(), Isolines< T >::measureDistance(), and Isolines< T >::measureLength().
|
inlineprotected |
Computes a code for each group of 4x4 cells.
The code depends only on whether each of four corners is above or below threshold.
Definition at line 156 of file ecvIsolines.h.
|
inlineprotected |
Definition at line 634 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourX, and Isolines< T >::wrap().
|
inlineprotected |
Definition at line 639 of file ecvIsolines.h.
References Isolines< T >::m_contourLength, Isolines< T >::m_contourOrigin, Isolines< T >::m_contourY, and Isolines< T >::wrap().
|
inline |
Sets isoline value to trace.
Definition at line 91 of file ecvIsolines.h.
References Isolines< T >::m_threshold.
Referenced by ccRasterizeTool::generateContours().
|
inlinestaticprotected |
Definition at line 722 of file ecvIsolines.h.
Referenced by Isolines< T >::getContourX(), Isolines< T >::getContourY(), Isolines< T >::getValidIndex(), Isolines< T >::measureLength(), Isolines< T >::setContourX(), and Isolines< T >::setContourY().
|
protected |
Definition at line 62 of file ecvIsolines.h.
Referenced by Isolines< T >::Isolines().
|
protected |
Definition at line 68 of file ecvIsolines.h.
Referenced by Isolines< T >::endContour(), and Isolines< T >::isContourClosed().
|
protected |
Definition at line 67 of file ecvIsolines.h.
Referenced by Isolines< T >::endContour().
|
protected |
Definition at line 65 of file ecvIsolines.h.
Referenced by Isolines< T >::endContour(), Isolines< T >::getContourLength(), Isolines< T >::getContourX(), Isolines< T >::getContourY(), Isolines< T >::getLastIndex(), Isolines< T >::getValidIndex(), Isolines< T >::measureLength(), Isolines< T >::setContourX(), and Isolines< T >::setContourY().
|
protected |
Definition at line 66 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), Isolines< T >::endContour(), Isolines< T >::getContourX(), Isolines< T >::getContourY(), Isolines< T >::getLastIndex(), Isolines< T >::getValidIndex(), Isolines< T >::measureLength(), Isolines< T >::setContourX(), and Isolines< T >::setContourY().
|
protected |
Definition at line 63 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), Isolines< T >::endContour(), Isolines< T >::getContourX(), Isolines< T >::measureLength(), and Isolines< T >::setContourX().
|
protected |
Definition at line 64 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), Isolines< T >::endContour(), Isolines< T >::getContourY(), Isolines< T >::measureLength(), and Isolines< T >::setContourY().
|
protected |
Definition at line 71 of file ecvIsolines.h.
Referenced by Isolines< T >::findAreas(), and Isolines< T >::findRoundedCorners().
|
protected |
Definition at line 59 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), and Isolines< T >::getBBMaxX().
|
protected |
Definition at line 60 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), and Isolines< T >::getBBMaxY().
|
protected |
Definition at line 57 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), and Isolines< T >::getBBMinX().
|
protected |
Definition at line 58 of file ecvIsolines.h.
Referenced by Isolines< T >::computeBoundingBoxes(), and Isolines< T >::getBBMinY().
|
protected |
Definition at line 72 of file ecvIsolines.h.
Referenced by Isolines< T >::findAreas(), Isolines< T >::findRoundedCorners(), Isolines< T >::getMaxContour(), and Isolines< T >::getNumContours().
|
protected |
Definition at line 74 of file ecvIsolines.h.
Referenced by Isolines< T >::LERP(), and Isolines< T >::setThreshold().
|
protected |
Definition at line 70 of file ecvIsolines.h.
Referenced by Isolines< T >::findAreas(), Isolines< T >::findRoundedCorners(), and Isolines< T >::ixy().