Skip to content

core: improve norm of hal rvv#26991

Merged
asmorkalov merged 9 commits intoopencv:4.xfrom
fengyuentau:4x/core/norm2hal_rvv
Mar 18, 2025
Merged

core: improve norm of hal rvv#26991
asmorkalov merged 9 commits intoopencv:4.xfrom
fengyuentau:4x/core/norm2hal_rvv

Conversation

@fengyuentau
Copy link
Copy Markdown
Member

@fengyuentau fengyuentau commented Feb 28, 2025

Merge with opencv/opencv_extra#1241

Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

  • I agree to contribute to the project under Apache 2 License.
  • To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
  • The PR is proposed to the proper branch
  • There is a reference to the original bug report and related work
  • There is accuracy test, performance test and test data in opencv_extra repository, if applicable
    Patch to opencv_extra has the same branch name.
  • The feature is well documented and sample code can be built with the project CMake

@fengyuentau

This comment was marked as outdated.

@fengyuentau

This comment was marked as outdated.

@fengyuentau fengyuentau force-pushed the 4x/core/norm2hal_rvv branch from 99b991f to 23a8915 Compare March 8, 2025 16:21
@fengyuentau
Copy link
Copy Markdown
Member Author

Conflicts are resolved. Feel free to review @asmorkalov

@fengyuentau

This comment was marked as outdated.

@fengyuentau
Copy link
Copy Markdown
Member Author

Updated perf results: perf-norm.zip

Comment on lines -324 to -325
inline int hal_ni_norm(const uchar* src, size_t src_step, const uchar* mask, size_t mask_step, int width,
int height, int type, int norm_type, double* result) { return CV_HAL_ERROR_NOT_IMPLEMENTED; }
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FastCV HAL implements the old API too.

#include "precomp.hpp"

#if CV_RVV
#include "norm.rvv1p0.hpp"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is replacement for these removed optimizations? (added by #26885)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All moved to hal rvv.

@fengyuentau fengyuentau changed the title core: introduced cv_hal_getNormFunc as a better solution and added all implementations for norm core: improve norm of hal rvv Mar 14, 2025
@fengyuentau fengyuentau force-pushed the 4x/core/norm2hal_rvv branch from ef8787e to dc31c5d Compare March 17, 2025 06:34
@fengyuentau fengyuentau requested a review from asmorkalov March 18, 2025 06:04
@fengyuentau
Copy link
Copy Markdown
Member Author

I refactored this PR with the same handling of overflow accumulator.

@asmorkalov
Copy link
Copy Markdown
Contributor

The patch birngs speedup for many cases, but there are some strange regressions against current 4.x:

Details
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_INF) 	0.004 	0.003 	1.11
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_INF|NORM_RELATIVE) 	0.004 	0.004 	1.21
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_L1) 	0.004 	0.004 	1.02
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_L1|NORM_RELATIVE) 	0.006 	0.005 	1.15
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_L2) 	0.005 	0.005 	1.01
norm2::Size_MatType_NormType::(127x61, 8UC1, NORM_L2|NORM_RELATIVE) 	0.009 	0.007 	1.31
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_INF) 	0.004 	0.003 	1.05
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_INF|NORM_RELATIVE) 	0.007 	0.005 	1.28
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_L1) 	0.006 	0.005 	1.07
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_L1|NORM_RELATIVE) 	0.009 	0.008 	1.16
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_L2) 	0.006 	0.005 	1.06
norm2::Size_MatType_NormType::(127x61, 8SC1, NORM_L2|NORM_RELATIVE) 	0.008 	0.008 	1.05
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_INF) 	0.007 	0.006 	1.14
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_INF|NORM_RELATIVE) 	0.010 	0.009 	1.07
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_L1) 	0.008 	0.007 	1.07
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_L1|NORM_RELATIVE) 	0.011 	0.010 	1.09
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_L2) 	0.012 	0.037 	0.32
norm2::Size_MatType_NormType::(127x61, 16UC1, NORM_L2|NORM_RELATIVE) 	0.019 	0.043 	0.45
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_INF) 	0.009 	0.008 	1.08
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_INF|NORM_RELATIVE) 	0.013 	0.012 	1.16
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_L1) 	0.009 	0.009 	1.06
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_L1|NORM_RELATIVE) 	0.013 	0.013 	1.01
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_L2) 	0.013 	0.037 	0.35
norm2::Size_MatType_NormType::(127x61, 16SC1, NORM_L2|NORM_RELATIVE) 	0.021 	0.043 	0.48
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_INF) 	0.014 	0.014 	1.00
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_INF|NORM_RELATIVE) 	0.022 	0.020 	1.15
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_L1) 	0.012 	0.035 	0.35
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_L1|NORM_RELATIVE) 	0.022 	0.044 	0.49
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_L2) 	0.012 	0.036 	0.34
norm2::Size_MatType_NormType::(127x61, 32SC1, NORM_L2|NORM_RELATIVE) 	0.029 	0.044 	0.66
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_INF) 	0.010 	0.009 	1.04
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_INF|NORM_RELATIVE) 	0.013 	0.013 	1.03
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_L1) 	0.011 	0.010 	1.06
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_L1|NORM_RELATIVE) 	0.017 	0.016 	1.09
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_L2) 	0.010 	0.010 	1.02
norm2::Size_MatType_NormType::(127x61, 32FC1, NORM_L2|NORM_RELATIVE) 	0.016 	0.015 	1.08
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_INF) 	0.018 	0.091 	0.20
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_INF|NORM_RELATIVE) 	0.030 	0.099 	0.30
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_L1) 	0.018 	0.032 	0.55
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_L1|NORM_RELATIVE) 	0.028 	0.041 	0.69
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_L2) 	0.019 	0.033 	0.57
norm2::Size_MatType_NormType::(127x61, 64FC1, NORM_L2|NORM_RELATIVE) 	0.029 	0.043 	0.69
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_INF) 	0.010 	0.010 	1.00
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_INF|NORM_RELATIVE) 	0.013 	0.013 	1.01
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_L1) 	0.015 	0.015 	0.99
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_L1|NORM_RELATIVE) 	0.023 	0.019 	1.19
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_L2) 	0.017 	0.016 	1.02
norm2::Size_MatType_NormType::(127x61, 8UC4, NORM_L2|NORM_RELATIVE) 	0.028 	0.023 	1.21
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_INF) 	0.125 	0.125 	1.00
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_INF|NORM_RELATIVE) 	0.168 	0.168 	1.00
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_L1) 	0.129 	0.132 	0.98
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_L1|NORM_RELATIVE) 	0.210 	0.180 	1.16
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_L2) 	0.152 	0.153 	1.00
norm2::Size_MatType_NormType::(640x480, 8UC1, NORM_L2|NORM_RELATIVE) 	0.258 	0.215 	1.20
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_INF) 	0.122 	0.121 	1.00
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_INF|NORM_RELATIVE) 	0.205 	0.170 	1.21
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_L1) 	0.183 	0.179 	1.02
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_L1|NORM_RELATIVE) 	0.284 	0.254 	1.12
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_L2) 	0.182 	0.178 	1.03
norm2::Size_MatType_NormType::(640x480, 8SC1, NORM_L2|NORM_RELATIVE) 	0.248 	0.242 	1.03
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_INF) 	0.186 	0.183 	1.02
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_INF|NORM_RELATIVE) 	0.274 	0.273 	1.01
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_L1) 	0.215 	0.213 	1.01
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_L1|NORM_RELATIVE) 	0.309 	0.299 	1.03
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_L2) 	0.316 	1.377 	0.23
norm2::Size_MatType_NormType::(640x480, 16UC1, NORM_L2|NORM_RELATIVE) 	0.552 	1.594 	0.35
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_INF) 	0.231 	0.232 	1.00
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_INF|NORM_RELATIVE) 	0.396 	0.329 	1.20
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_L1) 	0.274 	0.270 	1.01
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_L1|NORM_RELATIVE) 	0.403 	0.386 	1.04
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_L2) 	0.370 	1.377 	0.27
norm2::Size_MatType_NormType::(640x480, 16SC1, NORM_L2|NORM_RELATIVE) 	0.607 	1.587 	0.38
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_INF) 	0.542 	0.542 	1.00
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_INF|NORM_RELATIVE) 	0.794 	0.739 	1.08
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_L1) 	0.550 	1.333 	0.41
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_L1|NORM_RELATIVE) 	0.879 	1.615 	0.54
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_L2) 	0.548 	1.377 	0.40
norm2::Size_MatType_NormType::(640x480, 32SC1, NORM_L2|NORM_RELATIVE) 	1.137 	1.630 	0.70
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_INF) 	0.573 	0.574 	1.00
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_INF|NORM_RELATIVE) 	0.734 	0.733 	1.00
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_L1) 	0.556 	0.539 	1.03
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_L1|NORM_RELATIVE) 	0.778 	0.755 	1.03
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_L2) 	0.549 	0.542 	1.01
norm2::Size_MatType_NormType::(640x480, 32FC1, NORM_L2|NORM_RELATIVE) 	0.768 	0.723 	1.06
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_INF) 	0.790 	3.581 	0.22
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_INF|NORM_RELATIVE) 	1.193 	3.936 	0.30
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_L1) 	0.790 	1.229 	0.64
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_L1|NORM_RELATIVE) 	1.163 	1.570 	0.74
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_L2) 	0.792 	1.281 	0.62
norm2::Size_MatType_NormType::(640x480, 64FC1, NORM_L2|NORM_RELATIVE) 	1.151 	1.614 	0.71
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_INF) 	0.567 	0.574 	0.99
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_INF|NORM_RELATIVE) 	0.734 	0.733 	1.00
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_L1) 	0.569 	0.575 	0.99
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_L1|NORM_RELATIVE) 	0.898 	0.752 	1.19
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_L2) 	0.591 	0.596 	0.99
norm2::Size_MatType_NormType::(640x480, 8UC4, NORM_L2|NORM_RELATIVE) 	1.010 	0.827 	1.22
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_INF) 	0.359 	0.357 	1.01
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_INF|NORM_RELATIVE) 	0.467 	0.472 	0.99
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_L1) 	0.369 	0.381 	0.97
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_L1|NORM_RELATIVE) 	0.610 	0.515 	1.18
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_L2) 	0.434 	0.439 	0.99
norm2::Size_MatType_NormType::(1280x720, 8UC1, NORM_L2|NORM_RELATIVE) 	0.754 	0.613 	1.23
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_INF) 	0.349 	0.344 	1.02
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_INF|NORM_RELATIVE) 	0.583 	0.485 	1.20
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_L1) 	0.523 	0.514 	1.02
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_L1|NORM_RELATIVE) 	0.831 	0.728 	1.14
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_L2) 	0.525 	0.509 	1.03
norm2::Size_MatType_NormType::(1280x720, 8SC1, NORM_L2|NORM_RELATIVE) 	0.714 	0.695 	1.03
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_INF) 	0.563 	0.575 	0.98
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_INF|NORM_RELATIVE) 	0.822 	0.836 	0.98
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_L1) 	0.657 	0.647 	1.01
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_L1|NORM_RELATIVE) 	0.931 	0.936 	0.99
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_L2) 	0.928 	4.125 	0.22
norm2::Size_MatType_NormType::(1280x720, 16UC1, NORM_L2|NORM_RELATIVE) 	1.633 	4.736 	0.34
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_INF) 	0.683 	0.690 	0.99
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_INF|NORM_RELATIVE) 	1.165 	0.971 	1.20
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_L1) 	0.805 	0.806 	1.00
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_L1|NORM_RELATIVE) 	1.185 	1.136 	1.04
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_L2) 	1.092 	4.122 	0.27
norm2::Size_MatType_NormType::(1280x720, 16SC1, NORM_L2|NORM_RELATIVE) 	1.791 	4.719 	0.38
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_INF) 	1.486 	1.374 	1.08
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_INF|NORM_RELATIVE) 	2.300 	2.020 	1.14
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_L1) 	1.464 	3.971 	0.37
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_L1|NORM_RELATIVE) 	2.350 	4.827 	0.49
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_L2) 	1.482 	4.131 	0.36
norm2::Size_MatType_NormType::(1280x720, 32SC1, NORM_L2|NORM_RELATIVE) 	3.169 	4.820 	0.66
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_INF) 	1.521 	1.526 	1.00
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_INF|NORM_RELATIVE) 	2.014 	2.031 	0.99
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_L1) 	1.619 	1.287 	1.26
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_L1|NORM_RELATIVE) 	2.275 	1.937 	1.17
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_L2) 	1.646 	1.296 	1.27
norm2::Size_MatType_NormType::(1280x720, 32FC1, NORM_L2|NORM_RELATIVE) 	2.287 	1.881 	1.22
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_INF) 	2.436 	10.621 	0.23
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_INF|NORM_RELATIVE) 	3.652 	11.623 	0.31
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_L1) 	2.418 	3.659 	0.66
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_L1|NORM_RELATIVE) 	3.530 	4.680 	0.75
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_L2) 	2.389 	3.815 	0.63
norm2::Size_MatType_NormType::(1280x720, 64FC1, NORM_L2|NORM_RELATIVE) 	3.457 	4.845 	0.71
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_INF) 	1.495 	1.503 	0.99
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_INF|NORM_RELATIVE) 	2.010 	2.003 	1.00
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_L1) 	1.545 	1.577 	0.98
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_L1|NORM_RELATIVE) 	2.509 	2.217 	1.13
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_L2) 	1.739 	1.767 	0.98
norm2::Size_MatType_NormType::(1280x720, 8UC4, NORM_L2|NORM_RELATIVE) 	3.010 	2.503 	1.20
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_INF) 	0.602 	0.621 	0.97
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_INF|NORM_RELATIVE) 	0.872 	0.894 	0.98
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L1) 	0.866 	0.926 	0.93
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L1|NORM_RELATIVE) 	1.411 	1.233 	1.14
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L2) 	0.970 	0.982 	0.99
norm2::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L2|NORM_RELATIVE) 	1.684 	1.388 	1.21
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_INF) 	0.773 	0.788 	0.98
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_INF|NORM_RELATIVE) 	1.318 	1.112 	1.18
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L1) 	1.180 	1.149 	1.03
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L1|NORM_RELATIVE) 	1.858 	1.621 	1.15
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L2) 	1.177 	1.148 	1.03
norm2::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L2|NORM_RELATIVE) 	1.604 	1.563 	1.03
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_INF) 	1.313 	1.260 	1.04
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_INF|NORM_RELATIVE) 	1.893 	1.842 	1.03
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L1) 	1.519 	1.451 	1.05
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L1|NORM_RELATIVE) 	2.168 	2.035 	1.07
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L2) 	2.195 	9.267 	0.24
norm2::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L2|NORM_RELATIVE) 	3.729 	10.621 	0.35
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_INF) 	1.627 	1.567 	1.04
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_INF|NORM_RELATIVE) 	2.713 	2.172 	1.25
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L1) 	1.907 	1.846 	1.03
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L1|NORM_RELATIVE) 	2.822 	2.591 	1.09
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L2) 	2.545 	9.266 	0.27
norm2::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L2|NORM_RELATIVE) 	4.095 	10.607 	0.39
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_INF) 	3.255 	3.064 	1.06
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_INF|NORM_RELATIVE) 	5.028 	4.524 	1.11
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L1) 	3.365 	8.909 	0.38
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L1|NORM_RELATIVE) 	5.393 	10.817 	0.50
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L2) 	3.392 	9.241 	0.37
norm2::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L2|NORM_RELATIVE) 	7.168 	10.806 	0.66
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_INF) 	3.453 	3.516 	0.98
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_INF|NORM_RELATIVE) 	4.587 	4.629 	0.99
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L1) 	3.894 	3.268 	1.19
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L1|NORM_RELATIVE) 	5.361 	4.725 	1.13
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L2) 	3.923 	3.392 	1.16
norm2::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L2|NORM_RELATIVE) 	5.326 	4.612 	1.15
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_INF) 	5.179 	23.924 	0.22
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_INF|NORM_RELATIVE) 	7.949 	26.060 	0.31
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L1) 	5.201 	8.201 	0.63
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L1|NORM_RELATIVE) 	7.606 	10.436 	0.73
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L2) 	5.181 	8.539 	0.61
norm2::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L2|NORM_RELATIVE) 	7.599 	10.700 	0.71
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_INF) 	3.454 	3.491 	0.99
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_INF|NORM_RELATIVE) 	4.533 	4.569 	0.99
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L1) 	3.787 	3.636 	1.04
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L1|NORM_RELATIVE) 	5.941 	4.851 	1.22
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L2) 	3.873 	3.948 	0.98
norm2::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L2|NORM_RELATIVE) 	6.692 	5.516 	1.21
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_INF) 	0.008 	0.008 	1.01
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_INF|NORM_RELATIVE) 	0.010 	0.009 	1.15
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_L1) 	0.006 	0.006 	1.01
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_L1|NORM_RELATIVE) 	0.010 	0.008 	1.23
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_L2) 	0.008 	0.008 	1.01
norm2_mask::Size_MatType_NormType::(127x61, 8UC1, NORM_L2|NORM_RELATIVE) 	0.013 	0.011 	1.23
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_INF) 	0.181 	0.181 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_INF|NORM_RELATIVE) 	0.337 	0.189 	1.78
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_L1) 	0.200 	0.200 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_L1|NORM_RELATIVE) 	0.378 	0.209 	1.81
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_L2) 	0.190 	0.191 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 8SC1, NORM_L2|NORM_RELATIVE) 	0.343 	0.199 	1.72
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_INF) 	0.178 	0.178 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_INF|NORM_RELATIVE) 	0.306 	0.186 	1.64
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_L1) 	0.205 	0.205 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_L1|NORM_RELATIVE) 	0.352 	0.214 	1.64
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_L2) 	0.173 	0.146 	1.19
norm2_mask::Size_MatType_NormType::(127x61, 16UC1, NORM_L2|NORM_RELATIVE) 	0.330 	0.160 	2.06
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_INF) 	0.177 	0.177 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_INF|NORM_RELATIVE) 	0.335 	0.188 	1.78
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_L1) 	0.205 	0.205 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_L1|NORM_RELATIVE) 	0.376 	0.215 	1.75
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_L2) 	0.173 	0.145 	1.19
norm2_mask::Size_MatType_NormType::(127x61, 16SC1, NORM_L2|NORM_RELATIVE) 	0.236 	0.160 	1.47
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_INF) 	0.182 	0.182 	1.00
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_INF|NORM_RELATIVE) 	0.329 	0.196 	1.68
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_L1) 	0.176 	0.155 	1.14
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_L1|NORM_RELATIVE) 	0.325 	0.172 	1.88
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_L2) 	0.173 	0.151 	1.15
norm2_mask::Size_MatType_NormType::(127x61, 32SC1, NORM_L2|NORM_RELATIVE) 	0.315 	0.168 	1.87
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_INF) 	0.012 	0.011 	1.05
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_INF|NORM_RELATIVE) 	0.017 	0.016 	1.06
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_L1) 	0.014 	0.013 	1.04
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_L1|NORM_RELATIVE) 	0.022 	0.021 	1.03
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_L2) 	0.013 	0.012 	1.04
norm2_mask::Size_MatType_NormType::(127x61, 32FC1, NORM_L2|NORM_RELATIVE) 	0.020 	0.019 	1.04
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_INF) 	0.124 	0.118 	1.05
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_INF|NORM_RELATIVE) 	0.220 	0.133 	1.65
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_L1) 	0.153 	0.134 	1.14
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_L1|NORM_RELATIVE) 	0.217 	0.149 	1.46
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_L2) 	0.159 	0.139 	1.14
norm2_mask::Size_MatType_NormType::(127x61, 64FC1, NORM_L2|NORM_RELATIVE) 	0.225 	0.156 	1.44
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_INF) 	0.017 	0.017 	1.03
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_INF|NORM_RELATIVE) 	0.023 	0.022 	1.03
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_L1) 	0.023 	0.021 	1.08
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_L1|NORM_RELATIVE) 	0.039 	0.029 	1.35
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_L2) 	0.027 	0.026 	1.06
norm2_mask::Size_MatType_NormType::(127x61, 8UC4, NORM_L2|NORM_RELATIVE) 	0.048 	0.038 	1.25
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_INF) 	0.184 	0.183 	1.01
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_INF|NORM_RELATIVE) 	0.268 	0.266 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_L1) 	0.202 	0.198 	1.02
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_L1|NORM_RELATIVE) 	0.336 	0.287 	1.17
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_L2) 	0.228 	0.226 	1.01
norm2_mask::Size_MatType_NormType::(640x480, 8UC1, NORM_L2|NORM_RELATIVE) 	0.394 	0.335 	1.17
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_INF) 	7.176 	7.200 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_INF|NORM_RELATIVE) 	13.255 	7.503 	1.77
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_L1) 	7.907 	7.895 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_L1|NORM_RELATIVE) 	14.895 	8.249 	1.81
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_L2) 	7.513 	7.526 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 8SC1, NORM_L2|NORM_RELATIVE) 	13.568 	7.879 	1.72
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_INF) 	7.012 	6.998 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_INF|NORM_RELATIVE) 	12.042 	7.338 	1.64
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_L1) 	8.105 	8.112 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_L1|NORM_RELATIVE) 	13.878 	8.472 	1.64
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_L2) 	6.825 	5.732 	1.19
norm2_mask::Size_MatType_NormType::(640x480, 16UC1, NORM_L2|NORM_RELATIVE) 	13.041 	6.263 	2.08
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_INF) 	7.005 	7.007 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_INF|NORM_RELATIVE) 	13.215 	7.382 	1.79
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_L1) 	8.094 	8.104 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_L1|NORM_RELATIVE) 	14.857 	8.482 	1.75
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_L2) 	6.814 	5.721 	1.19
norm2_mask::Size_MatType_NormType::(640x480, 16SC1, NORM_L2|NORM_RELATIVE) 	9.322 	6.274 	1.49
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_INF) 	7.203 	7.203 	1.00
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_INF|NORM_RELATIVE) 	13.017 	7.686 	1.69
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_L1) 	6.994 	6.126 	1.14
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_L1|NORM_RELATIVE) 	12.831 	6.755 	1.90
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_L2) 	6.829 	5.948 	1.15
norm2_mask::Size_MatType_NormType::(640x480, 32SC1, NORM_L2|NORM_RELATIVE) 	12.483 	6.572 	1.90
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_INF) 	0.646 	0.547 	1.18
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_INF|NORM_RELATIVE) 	0.870 	0.769 	1.13
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_L1) 	0.622 	0.494 	1.26
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_L1|NORM_RELATIVE) 	0.933 	0.795 	1.17
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_L2) 	0.622 	0.466 	1.33
norm2_mask::Size_MatType_NormType::(640x480, 32FC1, NORM_L2|NORM_RELATIVE) 	0.907 	0.734 	1.23
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_INF) 	4.909 	4.681 	1.05
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_INF|NORM_RELATIVE) 	8.663 	5.239 	1.65
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_L1) 	6.082 	5.300 	1.15
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_L1|NORM_RELATIVE) 	8.604 	5.872 	1.47
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_L2) 	6.295 	5.499 	1.14
norm2_mask::Size_MatType_NormType::(640x480, 64FC1, NORM_L2|NORM_RELATIVE) 	8.612 	6.128 	1.41
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_INF) 	0.643 	0.577 	1.12
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_INF|NORM_RELATIVE) 	0.878 	0.808 	1.09
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_L1) 	0.869 	0.805 	1.08
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_L1|NORM_RELATIVE) 	1.502 	1.108 	1.36
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_L2) 	1.001 	0.948 	1.06
norm2_mask::Size_MatType_NormType::(640x480, 8UC4, NORM_L2|NORM_RELATIVE) 	1.802 	1.445 	1.25
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_INF) 	0.510 	0.467 	1.09
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_INF|NORM_RELATIVE) 	0.720 	0.731 	0.99
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_L1) 	0.575 	0.582 	0.99
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_L1|NORM_RELATIVE) 	0.992 	0.837 	1.19
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_L2) 	0.659 	0.664 	0.99
norm2_mask::Size_MatType_NormType::(1280x720, 8UC1, NORM_L2|NORM_RELATIVE) 	1.163 	0.993 	1.17
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_INF) 	21.514 	21.520 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_INF|NORM_RELATIVE) 	39.737 	22.418 	1.77
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_L1) 	23.680 	23.704 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_L1|NORM_RELATIVE) 	44.721 	24.692 	1.81
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_L2) 	22.540 	22.573 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 8SC1, NORM_L2|NORM_RELATIVE) 	40.657 	23.586 	1.72
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_INF) 	21.020 	21.037 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_INF|NORM_RELATIVE) 	36.126 	21.955 	1.65
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_L1) 	24.288 	24.306 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_L1|NORM_RELATIVE) 	41.622 	25.382 	1.64
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_L2) 	20.425 	17.198 	1.19
norm2_mask::Size_MatType_NormType::(1280x720, 16UC1, NORM_L2|NORM_RELATIVE) 	39.087 	18.785 	2.08
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_INF) 	21.013 	21.000 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_INF|NORM_RELATIVE) 	39.581 	22.078 	1.79
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_L1) 	24.283 	24.333 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_L1|NORM_RELATIVE) 	44.556 	25.432 	1.75
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_L2) 	20.435 	17.174 	1.19
norm2_mask::Size_MatType_NormType::(1280x720, 16SC1, NORM_L2|NORM_RELATIVE) 	27.900 	18.773 	1.49
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_INF) 	21.602 	21.611 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_INF|NORM_RELATIVE) 	38.980 	23.013 	1.69
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_L1) 	20.926 	18.365 	1.14
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_L1|NORM_RELATIVE) 	38.464 	20.171 	1.91
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_L2) 	20.427 	17.860 	1.14
norm2_mask::Size_MatType_NormType::(1280x720, 32SC1, NORM_L2|NORM_RELATIVE) 	37.362 	19.666 	1.90
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_INF) 	1.605 	1.656 	0.97
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_INF|NORM_RELATIVE) 	2.301 	2.374 	0.97
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_L1) 	1.510 	1.479 	1.02
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_L1|NORM_RELATIVE) 	2.486 	2.465 	1.01
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_L2) 	1.462 	1.501 	0.97
norm2_mask::Size_MatType_NormType::(1280x720, 32FC1, NORM_L2|NORM_RELATIVE) 	2.301 	2.309 	1.00
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_INF) 	14.681 	14.000 	1.05
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_INF|NORM_RELATIVE) 	25.911 	15.634 	1.66
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_L1) 	18.212 	15.894 	1.15
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_L1|NORM_RELATIVE) 	25.735 	17.489 	1.47
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_L2) 	18.809 	16.477 	1.14
norm2_mask::Size_MatType_NormType::(1280x720, 64FC1, NORM_L2|NORM_RELATIVE) 	25.857 	18.246 	1.42
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_INF) 	1.796 	1.734 	1.04
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_INF|NORM_RELATIVE) 	2.487 	2.451 	1.01
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_L1) 	2.600 	2.421 	1.07
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_L1|NORM_RELATIVE) 	4.469 	3.348 	1.33
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_L2) 	2.997 	2.851 	1.05
norm2_mask::Size_MatType_NormType::(1280x720, 8UC4, NORM_L2|NORM_RELATIVE) 	5.398 	4.331 	1.25
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_INF) 	1.111 	1.096 	1.01
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_INF|NORM_RELATIVE) 	1.704 	1.704 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L1) 	1.341 	1.318 	1.02
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L1|NORM_RELATIVE) 	2.265 	1.944 	1.16
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L2) 	1.522 	1.496 	1.02
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC1, NORM_L2|NORM_RELATIVE) 	2.638 	2.270 	1.16
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_INF) 	48.440 	48.384 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_INF|NORM_RELATIVE) 	89.501 	50.480 	1.77
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L1) 	53.285 	53.284 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L1|NORM_RELATIVE) 	100.549 	55.397 	1.82
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L2) 	50.694 	50.715 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 8SC1, NORM_L2|NORM_RELATIVE) 	91.528 	52.998 	1.73
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_INF) 	47.299 	47.223 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_INF|NORM_RELATIVE) 	81.259 	49.382 	1.65
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L1) 	54.660 	54.675 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L1|NORM_RELATIVE) 	93.558 	57.010 	1.64
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L2) 	46.021 	38.645 	1.19
norm2_mask::Size_MatType_NormType::(1920x1080, 16UC1, NORM_L2|NORM_RELATIVE) 	87.919 	42.216 	2.08
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_INF) 	47.296 	47.237 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_INF|NORM_RELATIVE) 	89.059 	49.667 	1.79
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L1) 	54.653 	54.703 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L1|NORM_RELATIVE) 	100.194 	57.131 	1.75
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L2) 	46.041 	38.634 	1.19
norm2_mask::Size_MatType_NormType::(1920x1080, 16SC1, NORM_L2|NORM_RELATIVE) 	62.815 	42.247 	1.49
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_INF) 	48.454 	48.512 	1.00
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_INF|NORM_RELATIVE) 	87.543 	51.687 	1.69
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L1) 	47.068 	41.233 	1.14
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L1|NORM_RELATIVE) 	86.458 	45.337 	1.91
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L2) 	45.875 	40.183 	1.14
norm2_mask::Size_MatType_NormType::(1920x1080, 32SC1, NORM_L2|NORM_RELATIVE) 	83.970 	44.243 	1.90
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_INF) 	3.642 	3.831 	0.95
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_INF|NORM_RELATIVE) 	5.212 	5.414 	0.96
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L1) 	3.369 	3.317 	1.02
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L1|NORM_RELATIVE) 	5.513 	5.565 	0.99
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L2) 	3.257 	3.387 	0.96
norm2_mask::Size_MatType_NormType::(1920x1080, 32FC1, NORM_L2|NORM_RELATIVE) 	5.123 	5.348 	0.96
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_INF) 	33.009 	31.492 	1.05
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_INF|NORM_RELATIVE) 	58.249 	35.050 	1.66
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L1) 	41.048 	35.677 	1.15
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L1|NORM_RELATIVE) 	57.869 	39.275 	1.47
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L2) 	42.356 	37.063 	1.14
norm2_mask::Size_MatType_NormType::(1920x1080, 64FC1, NORM_L2|NORM_RELATIVE) 	58.261 	40.990 	1.42
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_INF) 	3.783 	3.726 	1.02
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_INF|NORM_RELATIVE) 	5.472 	5.388 	1.02
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L1) 	5.777 	5.415 	1.07
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L1|NORM_RELATIVE) 	9.980 	7.457 	1.34
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L2) 	6.698 	6.404 	1.05
norm2_mask::Size_MatType_NormType::(1920x1080, 8UC4, NORM_L2|NORM_RELATIVE) 	12.074 	9.688 	1.25 

@fengyuentau
Copy link
Copy Markdown
Member Author

The patch birngs speedup for many cases, but there are some strange regressions against current 4.x:

@asmorkalov Your results are about norm2. Norm2 should not be affected by this patch. I will also improve norm2 after this patch is merged.

@asmorkalov asmorkalov merged commit 8207549 into opencv:4.x Mar 18, 2025
43 of 55 checks passed
@fengyuentau fengyuentau deleted the 4x/core/norm2hal_rvv branch March 18, 2025 07:37
fengyuentau added a commit to fengyuentau/opencv that referenced this pull request Apr 27, 2025
core: improve norm of hal rvv opencv#26991

Merge with opencv/opencv_extra#1241

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [x] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
asmorkalov pushed a commit that referenced this pull request Apr 28, 2025
5.x merge 4.x: merge changes of norm and norm_diff in hal rvv from 4.x #27261

Merge with opencv/opencv_extra#1251

No related changes in contrib

#26991 from fengyuentau:4x/core/norm2hal_rvv
#27045 from fengyuentau:4x/hal_rvv/normDiff

Previous "Merge 4.x" on norm_diff vectorization: #27068
@asmorkalov asmorkalov mentioned this pull request Apr 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants