1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-26 13:53:03 +04:00

12 Commits

Author SHA1 Message Date
Alexander Smorkalov f8de2e06e6 Merge branch 4.x 2025-05-07 13:17:42 +03:00
Yuantao Feng 1b3db545a3 Merge pull request #27145 from fengyuentau:4x/core/copyMask-simd
core: further vectorize copyTo with mask #27145

Merge with https://github.com/opencv/opencv_extra/pull/1247.

### Pull Request Readiness Checklist

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
- [ ] 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
2025-04-07 10:56:02 +03:00
Yuantao Feng 603b1cafdf Merge pull request #26821 from fengyuentau:core/transform_simd
Core: vectorize cv::transform in terms of all data types #26821

## Performance

### i7-12700K

```
Geometric mean (ms)

                      Name of Test                       base  patch   patch
                                                                         vs
                                                                        base
                                                                     (x-factor)
Mat_Transform::Size_MatType::(127x61, 8SC3)              0.017 0.004    4.64
Mat_Transform::Size_MatType::(127x61, 16SC3)             0.015 0.004    3.78
Mat_Transform::Size_MatType::(127x61, 32SC3)             0.015 0.007    2.03
Mat_Transform::Size_MatType::(127x61, 64FC3)             0.007 0.004    1.78
Mat_Transform::Size_MatType::(640x480, 8SC3)             0.673 0.140    4.80
Mat_Transform::Size_MatType::(640x480, 16SC3)            0.618 0.158    3.90
Mat_Transform::Size_MatType::(640x480, 32SC3)            0.579 0.278    2.08
Mat_Transform::Size_MatType::(640x480, 64FC3)            0.290 0.266    1.09
Mat_Transform::Size_MatType::(1280x720, 8SC3)            1.919 0.414    4.63
Mat_Transform::Size_MatType::(1280x720, 16SC3)           1.811 0.488    3.71
Mat_Transform::Size_MatType::(1280x720, 32SC3)           1.736 0.917    1.89
Mat_Transform::Size_MatType::(1280x720, 64FC3)           2.310 2.030    1.14
Mat_Transform::Size_MatType::(1920x1080, 8SC3)           4.339 0.924    4.70
Mat_Transform::Size_MatType::(1920x1080, 16SC3)          4.095 1.288    3.18
Mat_Transform::Size_MatType::(1920x1080, 32SC3)          4.267 3.191    1.34
Mat_Transform::Size_MatType::(1920x1080, 64FC3)          6.641 5.481    1.21
Mat_Transform_Diagonal::Size_MatType::(640x480, 8SC3)    0.415 0.104    3.98
Mat_Transform_Diagonal::Size_MatType::(640x480, 16SC3)   0.385 0.128    3.00
Mat_Transform_Diagonal::Size_MatType::(640x480, 32SC3)   0.389 0.225    1.72
Mat_Transform_Diagonal::Size_MatType::(640x480, 64FC3)   0.279 0.275    1.01
Mat_Transform_Diagonal::Size_MatType::(1280x720, 8SC3)   1.223 0.313    3.91
Mat_Transform_Diagonal::Size_MatType::(1280x720, 16SC3)  1.118 0.387    2.89
Mat_Transform_Diagonal::Size_MatType::(1280x720, 32SC3)  1.215 0.801    1.52
Mat_Transform_Diagonal::Size_MatType::(1280x720, 64FC3)  2.198 1.900    1.16
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 8SC3)  2.772 0.705    3.93
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 16SC3) 2.572 1.134    2.27
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 32SC3) 3.477 3.276    1.06
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 64FC3) 5.984 5.186    1.15
```

### A311D

```
Geometric mean (ms)

                      Name of Test                        base  patch    patch
                                                                           vs
                                                                          base
                                                                       (x-factor)
Mat_Transform::Size_MatType::(127x61, 8SC3)              0.143  0.035     4.05
Mat_Transform::Size_MatType::(127x61, 16SC3)             0.135  0.037     3.67
Mat_Transform::Size_MatType::(127x61, 32SC3)             0.110  0.062     1.77
Mat_Transform::Size_MatType::(127x61, 64FC3)             0.034  0.039     0.89
Mat_Transform::Size_MatType::(640x480, 8SC3)             5.673  1.395     4.07
Mat_Transform::Size_MatType::(640x480, 16SC3)            5.331  1.439     3.70
Mat_Transform::Size_MatType::(640x480, 32SC3)            4.329  2.472     1.75
Mat_Transform::Size_MatType::(640x480, 64FC3)            1.560  2.316     0.67
Mat_Transform::Size_MatType::(1280x720, 8SC3)            17.002 4.139     4.11
Mat_Transform::Size_MatType::(1280x720, 16SC3)           15.996 4.308     3.71
Mat_Transform::Size_MatType::(1280x720, 32SC3)           12.948 7.241     1.79
Mat_Transform::Size_MatType::(1280x720, 64FC3)           4.742  7.376     0.64
Mat_Transform::Size_MatType::(1920x1080, 8SC3)           38.253 9.384     4.08
Mat_Transform::Size_MatType::(1920x1080, 16SC3)          35.913 9.750     3.68
Mat_Transform::Size_MatType::(1920x1080, 32SC3)          29.145 16.528    1.76
Mat_Transform::Size_MatType::(1920x1080, 64FC3)          10.606 20.968    0.51
Mat_Transform_Diagonal::Size_MatType::(640x480, 8SC3)    4.439  1.086     4.09
Mat_Transform_Diagonal::Size_MatType::(640x480, 16SC3)   4.251  1.136     3.74
Mat_Transform_Diagonal::Size_MatType::(640x480, 32SC3)   3.786  1.999     1.89
Mat_Transform_Diagonal::Size_MatType::(640x480, 64FC3)   1.555  1.551     1.00
Mat_Transform_Diagonal::Size_MatType::(1280x720, 8SC3)   13.319 3.243     4.11
Mat_Transform_Diagonal::Size_MatType::(1280x720, 16SC3)  12.828 3.398     3.78
Mat_Transform_Diagonal::Size_MatType::(1280x720, 32SC3)  11.336 5.989     1.89
Mat_Transform_Diagonal::Size_MatType::(1280x720, 64FC3)  4.707  4.690     1.00
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 8SC3)  29.952 7.293     4.11
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 16SC3) 28.817 7.656     3.76
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 32SC3) 25.476 13.388    1.90
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 64FC3) 10.533 10.509    1.00
```

### M2

```
Geometric mean (ms)

                      Name of Test                       base  patch   patch
                                                                         vs
                                                                        base
                                                                     (x-factor)
Mat_Transform::Size_MatType::(127x61, 8SC3)              0.020 0.004    4.45
Mat_Transform::Size_MatType::(127x61, 16SC3)             0.016 0.004    4.48
Mat_Transform::Size_MatType::(127x61, 32SC3)             0.016 0.007    2.23
Mat_Transform::Size_MatType::(127x61, 64FC3)             0.007 0.006    1.20
Mat_Transform::Size_MatType::(640x480, 8SC3)             0.793 0.197    4.03
Mat_Transform::Size_MatType::(640x480, 16SC3)            0.626 0.154    4.08
Mat_Transform::Size_MatType::(640x480, 32SC3)            0.627 0.306    2.05
Mat_Transform::Size_MatType::(640x480, 64FC3)            0.273 0.253    1.08
Mat_Transform::Size_MatType::(1280x720, 8SC3)            2.350 0.540    4.35
Mat_Transform::Size_MatType::(1280x720, 16SC3)           1.875 0.415    4.52
Mat_Transform::Size_MatType::(1280x720, 32SC3)           1.893 0.844    2.24
Mat_Transform::Size_MatType::(1280x720, 64FC3)           0.830 0.808    1.03
Mat_Transform::Size_MatType::(1920x1080, 8SC3)           5.302 1.178    4.50
Mat_Transform::Size_MatType::(1920x1080, 16SC3)          4.475 0.946    4.73
Mat_Transform::Size_MatType::(1920x1080, 32SC3)          4.409 1.864    2.37
Mat_Transform::Size_MatType::(1920x1080, 64FC3)          1.853 1.512    1.23
Mat_Transform_Diagonal::Size_MatType::(640x480, 8SC3)    0.586 0.110    5.32
Mat_Transform_Diagonal::Size_MatType::(640x480, 16SC3)   0.518 0.110    4.69
Mat_Transform_Diagonal::Size_MatType::(640x480, 32SC3)   0.430 0.220    1.95
Mat_Transform_Diagonal::Size_MatType::(640x480, 64FC3)   0.228 0.178    1.28
Mat_Transform_Diagonal::Size_MatType::(1280x720, 8SC3)   1.768 0.336    5.26
Mat_Transform_Diagonal::Size_MatType::(1280x720, 16SC3)  1.514 0.335    4.52
Mat_Transform_Diagonal::Size_MatType::(1280x720, 32SC3)  1.292 0.670    1.93
Mat_Transform_Diagonal::Size_MatType::(1280x720, 64FC3)  0.681 0.579    1.18
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 8SC3)  3.998 0.747    5.35
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 16SC3) 3.392 0.757    4.48
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 32SC3) 2.956 1.491    1.98
Mat_Transform_Diagonal::Size_MatType::(1920x1080, 64FC3) 1.546 1.476    1.05
```


### Pull Request Readiness Checklist

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
2025-02-06 13:38:16 +03:00
Hamdi Sahloul a39e0daacf Utilize CV_UNUSED macro 2018-09-07 20:33:52 +09:00
Alexander Alekhin b0ee5d9023 core: CV_NODISCARD macro with semantic of [[nodiscard]] attr
[[nodiscard]] is defined in C++17.
There is fallback alias for modern GCC / Clang compilers.
2018-07-16 18:03:32 +03:00
Alexander Alekhin 65726e4244 core(hal): improve v_select() SSE4.1+
v_select 'mask' is restricted to these values only: 0 or ~0 (0xff/0xffff/etc)
mask in accuracy test is updated.
2018-04-23 13:17:53 +03:00
Vadim Pisarevsky 53661d55ae Merge pull request #10406 from seiko2plus:coreUnvintrinCopy 2018-02-20 14:50:17 +00:00
Alexander Alekhin 4a297a2443 ts: refactor OpenCV tests
- removed tr1 usage (dropped in C++17)
- moved includes of vector/map/iostream/limits into ts.hpp
- require opencv_test + anonymous namespace (added compile check)
- fixed norm() usage (must be from cvtest::norm for checks) and other conflict functions
- added missing license headers
2018-02-03 19:39:47 +00:00
Sayed Adel fd0ac962fb core: replace raw intrinsics with universal intrinsics in copy.cpp
- use universal intrinsic instead of raw intrinsic
- add performance check for Mat::copyTo/setTo with mask
2017-12-26 05:30:32 +02:00
Tomoaki Teshima 3cbe60cca2 Merge pull request #9753 from tomoaki0705:universalMatmul
* add accuracy test and performance check for matmul
  * add performance tests for transform and dotProduct
  * add test Core_TransformLargeTest for 8u version of transform

* remove raw SSE2/NEON implementation from matmul.cpp
  * use universal intrinsic instead of raw intrinsic
  * remove unused templated function
  * add v_matmuladd which multiply 3x3 matrix and add 3x1 vector
  * add v_rotate_left/right in universal intrinsic
  * suppress intrinsic on some function and platform
  * add pure SW implementation of new universal intrinsics
  * add test for new universal intrinsics

* core: prevent memory access after the end of buffer

* fix perf tests
2017-11-20 15:56:53 +03:00
Anna Kogan a567c03fdf Switched to TEST_CYCLE_MULTIRUN for fast tests 2013-02-20 17:05:54 +04:00
Daniil Osokin 45c49a9088 Added perf test 2012-08-10 17:37:48 +04:00