Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
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
Commits
43d5988d
Commit
43d5988d
authored
Jun 04, 2016
by
k-shinotsuka
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
improve to calculate norm
parent
e1ba4399
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
16 deletions
+12
-16
canny.cpp
modules/imgproc/src/canny.cpp
+12
-16
No files found.
modules/imgproc/src/canny.cpp
View file @
43d5988d
...
...
@@ -408,14 +408,12 @@ public:
__m128i
v_dx
=
_mm_loadu_si128
((
const
__m128i
*
)(
_dx
+
j
));
__m128i
v_dy
=
_mm_loadu_si128
((
const
__m128i
*
)(
_dy
+
j
));
__m128i
v_dx_ml
=
_mm_mullo_epi16
(
v_dx
,
v_dx
),
v_dx_mh
=
_mm_mulhi_epi16
(
v_dx
,
v_dx
);
__m128i
v_dy_ml
=
_mm_mullo_epi16
(
v_dy
,
v_dy
),
v_dy_mh
=
_mm_mulhi_epi16
(
v_dy
,
v_dy
);
__m128i
v_norm
=
_mm_add_epi32
(
_mm_unpacklo_epi16
(
v_dx_ml
,
v_dx_mh
),
_mm_unpacklo_epi16
(
v_dy_ml
,
v_dy_mh
));
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
),
v_norm
);
v_norm
=
_mm_add_epi32
(
_mm_unpackhi_epi16
(
v_dx_ml
,
v_dx_mh
),
_mm_unpackhi_epi16
(
v_dy_ml
,
v_dy_mh
));
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
+
4
),
v_norm
);
__m128i
v_dx_dy_ml
=
_mm_unpacklo_epi16
(
v_dx
,
v_dy
);
__m128i
v_dx_dy_mh
=
_mm_unpackhi_epi16
(
v_dx
,
v_dy
);
__m128i
v_norm_ml
=
_mm_madd_epi16
(
v_dx_dy_ml
,
v_dx_dy_ml
);
__m128i
v_norm_mh
=
_mm_madd_epi16
(
v_dx_dy_mh
,
v_dx_dy_mh
);
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
),
v_norm_ml
);
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
+
4
),
v_norm_mh
);
}
}
#elif CV_NEON
...
...
@@ -799,14 +797,12 @@ while (borderPeaks.try_pop(m))
__m128i
v_dx
=
_mm_loadu_si128
((
const
__m128i
*
)(
_dx
+
j
));
__m128i
v_dy
=
_mm_loadu_si128
((
const
__m128i
*
)(
_dy
+
j
));
__m128i
v_dx_ml
=
_mm_mullo_epi16
(
v_dx
,
v_dx
),
v_dx_mh
=
_mm_mulhi_epi16
(
v_dx
,
v_dx
);
__m128i
v_dy_ml
=
_mm_mullo_epi16
(
v_dy
,
v_dy
),
v_dy_mh
=
_mm_mulhi_epi16
(
v_dy
,
v_dy
);
__m128i
v_norm
=
_mm_add_epi32
(
_mm_unpacklo_epi16
(
v_dx_ml
,
v_dx_mh
),
_mm_unpacklo_epi16
(
v_dy_ml
,
v_dy_mh
));
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
),
v_norm
);
v_norm
=
_mm_add_epi32
(
_mm_unpackhi_epi16
(
v_dx_ml
,
v_dx_mh
),
_mm_unpackhi_epi16
(
v_dy_ml
,
v_dy_mh
));
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
+
4
),
v_norm
);
__m128i
v_dx_dy_ml
=
_mm_unpacklo_epi16
(
v_dx
,
v_dy
);
__m128i
v_dx_dy_mh
=
_mm_unpackhi_epi16
(
v_dx
,
v_dy
);
__m128i
v_norm_ml
=
_mm_madd_epi16
(
v_dx_dy_ml
,
v_dx_dy_ml
);
__m128i
v_norm_mh
=
_mm_madd_epi16
(
v_dx_dy_mh
,
v_dx_dy_mh
);
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
),
v_norm_ml
);
_mm_storeu_si128
((
__m128i
*
)(
_norm
+
j
+
4
),
v_norm_mh
);
}
}
#elif CV_NEON
...
...
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