|
1 | 1 | @startuml
|
2 | 2 | skinparam classAttributeIconSize 0
|
3 |
| -scale 1.5 |
| 3 | +scale 4096 width |
4 | 4 | title 图分割算法
|
5 | 5 |
|
6 | 6 | ' 泛化
|
7 |
| -GraphSegmentation <|-- GraphSegmentationImpl |
| 7 | +segmentation.GraphSegmentation <|-- segmentation.GraphSegmentationImpl |
8 | 8 | ' 依赖
|
9 |
| -PointSet <.. GraphSegmentationImpl |
10 |
| -Edge <.. GraphSegmentationImpl |
| 9 | +segmentation.PointSet <.. segmentation.GraphSegmentationImpl |
| 10 | +segmentation.Edge <.. segmentation.GraphSegmentationImpl |
11 | 11 | ' 聚合
|
12 |
| -PointSetElement o-- PointSet |
| 12 | +segmentation.PointSetElement o-- segmentation.PointSet |
13 | 13 |
|
14 |
| -class GraphSegmentation { |
| 14 | +class segmentation.GraphSegmentation { |
15 | 15 | ' 方法
|
16 |
| - + processImage(cv::InputArray src, cv::OutputArray dst): void |
17 |
| - +setSigma(double sigma): void |
18 |
| - + getSigma() double |
19 |
| - + setK(float k) void |
20 |
| - + getK() float |
21 |
| - + setMinSize(int min_size): void |
22 |
| - + getMinSize(): int |
| 16 | + + virtual void processImage(cv::InputArray src, cv::OutputArray dst) = 0 |
| 17 | + .. Setter .. |
| 18 | + +virtual void setSigma(double sigma) = 0 |
| 19 | + + virtual void setK(float k) = 0 |
| 20 | + + virtual void setMinSize(int min_size) = 0 |
| 21 | + .. Getter .. |
| 22 | + + virtual double getSigma() = 0 |
| 23 | + + virtual float getK() = 0 |
| 24 | + + virtual int getMinSize() = 0 |
23 | 25 | }
|
24 | 26 |
|
25 |
| -class GraphSegmentationImpl { |
26 |
| - ' 属性 |
27 |
| - - sigma: double |
28 |
| - - k: float |
29 |
| - - min_size: int |
30 |
| - - name_: string |
31 |
| - ' 方法 |
| 27 | +class segmentation.GraphSegmentationImpl { |
| 28 | + ' __ 字段 __ |
| 29 | + - double sigma |
| 30 | + - float k |
| 31 | + - int min_size |
| 32 | + - string name_ |
| 33 | + ____ |
| 34 | + - void filter(const Mat &img, Mat &img_filtered) |
| 35 | + - void buildGraph(Edge **edges, int &nb_edges, const Mat &img_filtered) |
| 36 | + - void segmentGraph(Edge *edges, const int &nb_edges, const Mat &img_filtered, PointSet **es) |
| 37 | + - void filterSmallAreas(Edge *edges, const int &nb_edges, PointSet *es) |
| 38 | + - void finalMapping(PointSet *es, Mat &output) |
| 39 | + .. constructor .. |
32 | 40 | + GraphSegmentationImpl()
|
33 |
| - |
34 |
| - + processImage(cv::InputArray src, cv::OutputArray dst): void |
35 |
| - +setSigma(double sigma): void |
36 |
| - + getSigma() double |
37 |
| - + setK(float k) void |
38 |
| - + getK() float |
39 |
| - + setMinSize(int min_size): void |
40 |
| - + getMinSize(): int |
41 |
| - |
42 |
| - - filter(const Mat &img, Mat &img_filtered): void |
43 |
| - - buildGraph(Edge **edges, int &nb_edges, const Mat &img_filtered): void |
44 |
| - - segmentGraph(Edge *edges, const int &nb_edges, const Mat &img_filtered, PointSet **es): void |
45 |
| - - filterSmallAreas(Edge *edges, const int &nb_edges, PointSet *es): void |
46 |
| - - finalMapping(PointSet *es, Mat &output): void |
| 41 | + .. override .. |
| 42 | + + virtual void processImage(cv::InputArray src, cv::OutputArray dst) override |
| 43 | + +virtual void setSigma(double sigma) override |
| 44 | + + virtual void setK(float k) override |
| 45 | + + virtual void setMinSize(int min_size) override |
| 46 | + + virtual double getSigma() override |
| 47 | + + virtual float getK() override |
| 48 | + + virtual int getMinSize() override |
47 | 49 | }
|
48 | 50 |
|
49 |
| -class Edge { |
| 51 | +class segmentation.Edge { |
50 | 52 | ' 属性
|
51 |
| - + from: int |
52 |
| - + to: int |
53 |
| - + weight: float |
| 53 | + + int from |
| 54 | + + in to |
| 55 | + + float weight |
54 | 56 | ' 方法
|
55 |
| - + operator<(const Edge &e): bool |
| 57 | + + bool operator<(const Edge &e) const |
56 | 58 | }
|
57 | 59 |
|
58 |
| -class PointSet { |
| 60 | +class segmentation.PointSet { |
59 | 61 | ' 属性
|
60 |
| - + nb_elements: int |
| 62 | + - PointSetElement *mapping |
| 63 | + + int nb_elements |
61 | 64 | ' 方法
|
62 | 65 | + PointSet(int nb_elements_)
|
63 | 66 | + ~PointSet()
|
64 |
| - |
65 |
| - + getBasePoint(int p): int |
66 |
| - + joinPoints(int p_a, int p_b): int |
67 |
| - + size(unsigned int p): int |
| 67 | + + int getBasePoint(int p) |
| 68 | + + void joinPoints(int p_a, int p_b) |
| 69 | + + int size(unsigned int p) |
68 | 70 | }
|
69 | 71 |
|
70 |
| -class PointSetElement { |
| 72 | +class segmentation.PointSetElement { |
71 | 73 | ' 属性
|
72 |
| - + p: int |
73 |
| - + size: int |
| 74 | + + int p |
| 75 | + + int size |
74 | 76 | ' 方法
|
75 | 77 | + PointSetElement()
|
76 | 78 | + PointSetElement(int p_)
|
|
0 commit comments