1
+ @startuml
2
+ skinparam classAttributeIconSize 0
3
+ scale 1.5
4
+ title 图分割算法
5
+
6
+ ' 泛化
7
+ GraphSegmentation <|-- GraphSegmentationImpl
8
+ ' 依赖
9
+ PointSet <.. GraphSegmentationImpl
10
+ Edge <.. GraphSegmentationImpl
11
+ ' 聚合
12
+ PointSetElement o-- PointSet
13
+
14
+ class GraphSegmentation {
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
23
+ }
24
+
25
+ class GraphSegmentationImpl {
26
+ ' 属性
27
+ - sigma : double
28
+ - k : float
29
+ - min_size : int
30
+ - name_ : string
31
+ ' 方法
32
+ + 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
47
+ }
48
+
49
+ class Edge {
50
+ ' 属性
51
+ + from : int
52
+ + to : int
53
+ + weight : float
54
+ ' 方法
55
+ + operator<(const Edge &e): bool
56
+ }
57
+
58
+ class PointSet {
59
+ ' 属性
60
+ + nb_elements : int
61
+ ' 方法
62
+ + PointSet(int nb_elements_)
63
+ + ~PointSet()
64
+
65
+ + getBasePoint(int p): int
66
+ + joinPoints(int p_a, int p_b): int
67
+ + size(unsigned int p): int
68
+ }
69
+
70
+ class PointSetElement {
71
+ ' 属性
72
+ + p : int
73
+ + size : int
74
+ ' 方法
75
+ + PointSetElement ()
76
+ + PointSetElement(int p_)
77
+ }
78
+ @enduml
0 commit comments