Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv_contrib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv_contrib
Commits
eb8451c1
Commit
eb8451c1
authored
Oct 17, 2018
by
Alexander Alekhin
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1851 from berak:face_mace_cleanup
parents
f58493d0
bf49c437
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
13 additions
and
23 deletions
+13
-23
mace.cpp
modules/face/src/mace.cpp
+13
-23
No files found.
modules/face/src/mace.cpp
View file @
eb8451c1
...
...
@@ -119,9 +119,9 @@ struct MACEImpl CV_FINAL : MACE {
int
IMGSIZE_2X
=
IMGSIZE
*
2
;
int
TOTALPIXEL
=
IMGSIZE_2X
*
IMGSIZE_2X
;
Mat_
<
Vec2d
>
D
(
TOTALPIXEL
,
1
,
0.0
);
Mat_
<
Vec2d
>
S
(
TOTALPIXEL
,
size
,
0.0
);
Mat_
<
Vec2d
>
SPLUS
(
size
,
TOTALPIXEL
,
0.0
);
Mat_
<
double
>
D
(
TOTALPIXEL
,
1
,
0.0
);
Mat_
<
Vec2d
>
S
(
TOTALPIXEL
,
size
,
Vec2d
(
0
,
0
)
);
Mat_
<
Vec2d
>
SPLUS
(
size
,
TOTALPIXEL
,
Vec2d
(
0
,
0
)
);
for
(
int
i
=
0
;
i
<
size
;
i
++
)
{
Mat_
<
Vec2d
>
dftImg
=
isdft
?
images
[
i
]
:
dftImage
(
images
[
i
]);
for
(
int
l
=
0
;
l
<
IMGSIZE_2X
;
l
++
)
{
...
...
@@ -130,35 +130,24 @@ struct MACEImpl CV_FINAL : MACE {
Vec2d
s
=
dftImg
(
l
,
m
);
S
(
j
,
i
)
=
s
;
SPLUS
(
i
,
j
)
=
Vec2d
(
s
[
0
],
-
s
[
1
]);
D
(
j
,
0
)
[
0
]
+=
(
s
[
0
]
*
s
[
0
])
+
(
s
[
1
]
*
s
[
1
]);
D
(
j
,
0
)
+=
(
s
[
0
]
*
s
[
0
])
+
(
s
[
1
]
*
s
[
1
]);
}
}
}
Mat_
<
double
>
DSQ
;
cv
::
sqrt
(
D
,
DSQ
);
Mat_
<
double
>
DINV
=
TOTALPIXEL
*
size
/
DSQ
;
#if 0 // https://github.com/opencv/opencv_contrib/issues/1848
// FIXIT What is expected here? complex numbers math?
// D(,)[1] is 0 (always)
Mat sq; cv::sqrt(D, sq); // Per-element sqrt(): sq(,)[1] is 0 (always)
Mat_<Vec2d> DINV = TOTALPIXEL * size / sq; // "per-element" division which provides "Inf"
#else
Mat
sq
;
cv
::
sqrt
(
D
.
reshape
(
1
).
col
(
0
),
sq
);
Mat_
<
Vec2d
>
DINV
(
TOTALPIXEL
,
1
,
Vec2d
(
0
,
0
));
DINV
.
reshape
(
1
).
col
(
0
)
=
TOTALPIXEL
*
size
/
sq
;
#endif
Mat_
<
Vec2d
>
DINV_S
(
TOTALPIXEL
,
size
,
0.0
);
Mat_
<
Vec2d
>
SPLUS_DINV
(
size
,
TOTALPIXEL
,
0.0
);
Mat_
<
Vec2d
>
DINV_S
(
TOTALPIXEL
,
size
);
Mat_
<
Vec2d
>
SPLUS_DINV
(
size
,
TOTALPIXEL
);
for
(
int
l
=
0
;
l
<
size
;
l
++
)
{
for
(
int
m
=
0
;
m
<
TOTALPIXEL
;
m
++
)
{
SPLUS_DINV
(
l
,
m
)[
0
]
=
SPLUS
(
l
,
m
)[
0
]
*
DINV
(
m
,
0
)[
0
];
SPLUS_DINV
(
l
,
m
)[
1
]
=
SPLUS
(
l
,
m
)[
1
]
*
DINV
(
m
,
0
)[
1
];
// FIXIT: DINV(,)[1] is 0 (always)
DINV_S
(
m
,
l
)[
0
]
=
S
(
m
,
l
)[
0
]
*
DINV
(
m
,
0
)[
0
];
DINV_S
(
m
,
l
)[
1
]
=
S
(
m
,
l
)[
1
]
*
DINV
(
m
,
0
)[
1
];
DINV_S
(
m
,
l
)
=
S
(
m
,
l
)
*
DINV
(
m
,
0
);
SPLUS_DINV
(
l
,
m
)
=
SPLUS
(
l
,
m
)
*
DINV
(
m
,
0
);
}
}
Mat_
<
Vec2d
>
SPLUS_DINV_S
=
SPLUS_DINV
*
S
;
Mat_
<
Vec2d
>
SPLUS_DINV_S_INV
(
size
,
size
);
Mat_
<
double
>
SPLUS_DINV_S_INV_1
(
2
*
size
,
2
*
size
);
Mat_
<
double
>
SPLUS_DINV_S_INV_1
(
2
*
size
,
2
*
size
,
0.0
);
for
(
int
l
=
0
;
l
<
size
;
l
++
)
{
for
(
int
m
=
0
;
m
<
size
;
m
++
)
{
Vec2d
s
=
SPLUS_DINV_S
(
l
,
m
);
...
...
@@ -170,6 +159,7 @@ struct MACEImpl CV_FINAL : MACE {
}
invert
(
SPLUS_DINV_S_INV_1
,
SPLUS_DINV_S_INV_1
);
Mat_
<
Vec2d
>
SPLUS_DINV_S_INV
(
size
,
size
);
for
(
int
l
=
0
;
l
<
size
;
l
++
)
{
for
(
int
m
=
0
;
m
<
size
;
m
++
)
{
SPLUS_DINV_S_INV
(
l
,
m
)
=
Vec2d
(
SPLUS_DINV_S_INV_1
(
l
,
m
),
SPLUS_DINV_S_INV_1
(
l
,
m
+
size
));
...
...
@@ -177,7 +167,7 @@ struct MACEImpl CV_FINAL : MACE {
}
Mat_
<
Vec2d
>
Hmace
=
DINV_S
*
SPLUS_DINV_S_INV
;
Mat_
<
Vec2d
>
C
(
size
,
1
,
Vec2d
(
1
,
0
));
Mat_
<
Vec2d
>
C
(
size
,
1
,
Vec2d
(
1
,
0
));
maceFilter
=
Mat
(
Hmace
*
C
).
reshape
(
2
,
IMGSIZE_2X
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment