~paparazzi-uav/paparazzi/v5.0-manual

« back to all changes in this revision

Viewing changes to sw/ext/opencv_bebop/opencv/modules/imgproc/misc/java/src/java/imgproc+Moments.java

  • Committer: Paparazzi buildbot
  • Date: 2016-05-18 15:00:29 UTC
  • Revision ID: felix.ruess+docbot@gmail.com-20160518150029-e8lgzi5kvb4p7un9
Manual import commit 4b8bbb730080dac23cf816b98908dacfabe2a8ec from v5.0 branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.opencv.imgproc;
 
2
 
 
3
import java.lang.Math;
 
4
 
 
5
//javadoc:Moments
 
6
public class Moments {
 
7
 
 
8
    public double m00;
 
9
    public double m10;
 
10
    public double m01;
 
11
    public double m20;
 
12
    public double m11;
 
13
    public double m02;
 
14
    public double m30;
 
15
    public double m21;
 
16
    public double m12;
 
17
    public double m03;
 
18
 
 
19
    public double mu20;
 
20
    public double mu11;
 
21
    public double mu02;
 
22
    public double mu30;
 
23
    public double mu21;
 
24
    public double mu12;
 
25
    public double mu03;
 
26
 
 
27
    public double nu20;
 
28
    public double nu11;
 
29
    public double nu02;
 
30
    public double nu30;
 
31
    public double nu21;
 
32
    public double nu12;
 
33
    public double nu03;
 
34
 
 
35
    public Moments(
 
36
        double m00,
 
37
        double m10,
 
38
        double m01,
 
39
        double m20,
 
40
        double m11,
 
41
        double m02,
 
42
        double m30,
 
43
        double m21,
 
44
        double m12,
 
45
        double m03)
 
46
    {
 
47
        this.m00 = m00;
 
48
        this.m10 = m10;
 
49
        this.m01 = m01;
 
50
        this.m20 = m20;
 
51
        this.m11 = m11;
 
52
        this.m02 = m02;
 
53
        this.m30 = m30;
 
54
        this.m21 = m21;
 
55
        this.m12 = m12;
 
56
        this.m03 = m03;
 
57
        this.completeState();
 
58
    }
 
59
 
 
60
    public Moments() {
 
61
        this(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
 
62
    }
 
63
 
 
64
    public Moments(double[] vals) {
 
65
        set(vals);
 
66
    }
 
67
 
 
68
    public void set(double[] vals) {
 
69
        if (vals != null) {
 
70
            m00 = vals.length > 0 ? (int) vals[0] : 0;
 
71
            m10 = vals.length > 1 ? (int) vals[1] : 0;
 
72
            m01 = vals.length > 2 ? (int) vals[2] : 0;
 
73
            m20 = vals.length > 3 ? (int) vals[3] : 0;
 
74
            m11 = vals.length > 4 ? (int) vals[4] : 0;
 
75
            m02 = vals.length > 5 ? (int) vals[5] : 0;
 
76
            m30 = vals.length > 6 ? (int) vals[6] : 0;
 
77
            m21 = vals.length > 7 ? (int) vals[7] : 0;
 
78
            m12 = vals.length > 8 ? (int) vals[8] : 0;
 
79
            m03 = vals.length > 9 ? (int) vals[9] : 0;
 
80
            this.completeState();
 
81
        } else {
 
82
            m00 = 0;
 
83
            m10 = 0;
 
84
            m01 = 0;
 
85
            m20 = 0;
 
86
            m11 = 0;
 
87
            m02 = 0;
 
88
            m30 = 0;
 
89
            m21 = 0;
 
90
            m12 = 0;
 
91
            m03 = 0;
 
92
            mu20 = 0;
 
93
            mu11 = 0;
 
94
            mu02 = 0;
 
95
            mu30 = 0;
 
96
            mu21 = 0;
 
97
            mu12 = 0;
 
98
            mu03 = 0;
 
99
            nu20 = 0;
 
100
            nu11 = 0;
 
101
            nu02 = 0;
 
102
            nu30 = 0;
 
103
            nu21 = 0;
 
104
            nu12 = 0;
 
105
            nu03 = 0;
 
106
        }
 
107
    }
 
108
 
 
109
    @Override
 
110
    public String toString() {
 
111
        return "Moments [ " +
 
112
            "\n" +
 
113
            "m00=" + m00 + ", " +
 
114
            "\n" +
 
115
            "m10=" + m10 + ", " +
 
116
            "m01=" + m01 + ", " +
 
117
            "\n" +
 
118
            "m20=" + m20 + ", " +
 
119
            "m11=" + m11 + ", " +
 
120
            "m02=" + m02 + ", " +
 
121
            "\n" +
 
122
            "m30=" + m30 + ", " +
 
123
            "m21=" + m21 + ", " +
 
124
            "m12=" + m12 + ", " +
 
125
            "m03=" + m03 + ", " +
 
126
            "\n" +
 
127
            "mu20=" + mu20 + ", " +
 
128
            "mu11=" + mu11 + ", " +
 
129
            "mu02=" + mu02 + ", " +
 
130
            "\n" +
 
131
            "mu30=" + mu30 + ", " +
 
132
            "mu21=" + mu21 + ", " +
 
133
            "mu12=" + mu12 + ", " +
 
134
            "mu03=" + mu03 + ", " +
 
135
            "\n" +
 
136
            "nu20=" + nu20 + ", " +
 
137
            "nu11=" + nu11 + ", " +
 
138
            "nu02=" + nu02 + ", " +
 
139
            "\n" +
 
140
            "nu30=" + nu30 + ", " +
 
141
            "nu21=" + nu21 + ", " +
 
142
            "nu12=" + nu12 + ", " +
 
143
            "nu03=" + nu03 + ", " +
 
144
            "\n]";
 
145
    }
 
146
 
 
147
    protected void completeState()
 
148
    {
 
149
        double cx = 0, cy = 0;
 
150
        double mu20, mu11, mu02;
 
151
        double inv_m00 = 0.0;
 
152
 
 
153
        if( Math.abs(this.m00) > 0.00000001 )
 
154
        {
 
155
            inv_m00 = 1. / this.m00;
 
156
            cx = this.m10 * inv_m00;
 
157
            cy = this.m01 * inv_m00;
 
158
        }
 
159
 
 
160
        // mu20 = m20 - m10*cx
 
161
        mu20 = this.m20 - this.m10 * cx;
 
162
        // mu11 = m11 - m10*cy
 
163
        mu11 = this.m11 - this.m10 * cy;
 
164
        // mu02 = m02 - m01*cy
 
165
        mu02 = this.m02 - this.m01 * cy;
 
166
 
 
167
        this.mu20 = mu20;
 
168
        this.mu11 = mu11;
 
169
        this.mu02 = mu02;
 
170
 
 
171
        // mu30 = m30 - cx*(3*mu20 + cx*m10)
 
172
        this.mu30 = this.m30 - cx * (3 * mu20 + cx * this.m10);
 
173
        mu11 += mu11;
 
174
        // mu21 = m21 - cx*(2*mu11 + cx*m01) - cy*mu20
 
175
        this.mu21 = this.m21 - cx * (mu11 + cx * this.m01) - cy * mu20;
 
176
        // mu12 = m12 - cy*(2*mu11 + cy*m10) - cx*mu02
 
177
        this.mu12 = this.m12 - cy * (mu11 + cy * this.m10) - cx * mu02;
 
178
        // mu03 = m03 - cy*(3*mu02 + cy*m01)
 
179
        this.mu03 = this.m03 - cy * (3 * mu02 + cy * this.m01);
 
180
 
 
181
 
 
182
        double inv_sqrt_m00 = Math.sqrt(Math.abs(inv_m00));
 
183
        double s2 = inv_m00*inv_m00, s3 = s2*inv_sqrt_m00;
 
184
 
 
185
        this.nu20 = this.mu20*s2;
 
186
        this.nu11 = this.mu11*s2;
 
187
        this.nu02 = this.mu02*s2;
 
188
        this.nu30 = this.mu30*s3;
 
189
        this.nu21 = this.mu21*s3;
 
190
        this.nu12 = this.mu12*s3;
 
191
        this.nu03 = this.mu03*s3;
 
192
 
 
193
    }
 
194
 
 
195
    public double get_m00() { return this.m00; }
 
196
    public double get_m10() { return this.m10; }
 
197
    public double get_m01() { return this.m01; }
 
198
    public double get_m20() { return this.m20; }
 
199
    public double get_m11() { return this.m11; }
 
200
    public double get_m02() { return this.m02; }
 
201
    public double get_m30() { return this.m30; }
 
202
    public double get_m21() { return this.m21; }
 
203
    public double get_m12() { return this.m12; }
 
204
    public double get_m03() { return this.m03; }
 
205
    public double get_mu20() { return this.mu20; }
 
206
    public double get_mu11() { return this.mu11; }
 
207
    public double get_mu02() { return this.mu02; }
 
208
    public double get_mu30() { return this.mu30; }
 
209
    public double get_mu21() { return this.mu21; }
 
210
    public double get_mu12() { return this.mu12; }
 
211
    public double get_mu03() { return this.mu03; }
 
212
    public double get_nu20() { return this.nu20; }
 
213
    public double get_nu11() { return this.nu11; }
 
214
    public double get_nu02() { return this.nu02; }
 
215
    public double get_nu30() { return this.nu30; }
 
216
    public double get_nu21() { return this.nu21; }
 
217
    public double get_nu12() { return this.nu12; }
 
218
    public double get_nu03() { return this.nu03; }
 
219
 
 
220
    public void set_m00(double m00) { this.m00 = m00; }
 
221
    public void set_m10(double m10) { this.m10 = m10; }
 
222
    public void set_m01(double m01) { this.m01 = m01; }
 
223
    public void set_m20(double m20) { this.m20 = m20; }
 
224
    public void set_m11(double m11) { this.m11 = m11; }
 
225
    public void set_m02(double m02) { this.m02 = m02; }
 
226
    public void set_m30(double m30) { this.m30 = m30; }
 
227
    public void set_m21(double m21) { this.m21 = m21; }
 
228
    public void set_m12(double m12) { this.m12 = m12; }
 
229
    public void set_m03(double m03) { this.m03 = m03; }
 
230
    public void set_mu20(double mu20) { this.mu20 = mu20; }
 
231
    public void set_mu11(double mu11) { this.mu11 = mu11; }
 
232
    public void set_mu02(double mu02) { this.mu02 = mu02; }
 
233
    public void set_mu30(double mu30) { this.mu30 = mu30; }
 
234
    public void set_mu21(double mu21) { this.mu21 = mu21; }
 
235
    public void set_mu12(double mu12) { this.mu12 = mu12; }
 
236
    public void set_mu03(double mu03) { this.mu03 = mu03; }
 
237
    public void set_nu20(double nu20) { this.nu20 = nu20; }
 
238
    public void set_nu11(double nu11) { this.nu11 = nu11; }
 
239
    public void set_nu02(double nu02) { this.nu02 = nu02; }
 
240
    public void set_nu30(double nu30) { this.nu30 = nu30; }
 
241
    public void set_nu21(double nu21) { this.nu21 = nu21; }
 
242
    public void set_nu12(double nu12) { this.nu12 = nu12; }
 
243
    public void set_nu03(double nu03) { this.nu03 = nu03; }
 
244
}