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

34 Commits

Author SHA1 Message Date
Alexander Smorkalov 0ccbd21c0a Relax remap relative test to handle the case when HAL implements not remap options. 2025-06-03 11:24:07 +03:00
_Ayaka 4dd54bbec9 Merge pull request #25898 from Octopus136:issue-25853
Add a check for src == dst in ocl warpTransform #25898

As mentioned in #25853, when doing WarpAffine with Mat and UMat respectively, if you force the use of the in-place operation (so that src and dst are passed the same variables), Mat produces the correct results, but UMat produces unexpected results.

Obviously in-place operations are not possible with this transformation. When Mat performs the operation, if dst and src are the same variable, the function inherently makes a copy of src without telling the user. 

https://github.com/opencv/opencv/blob/74b50c7af05c91194469a1f059f971dff00ef889/modules/imgproc/src/imgwarp.cpp#L2831-L2834

So I did the same check in UMat, but I'm not sure if it's appropriate, should we just do a copy operation without telling the user (even if the user thinks he's doing an in-place operation), or should we throw an exception to indicate that we shouldn't pass in two same variables here?

The possible reason for this problem is that there is a create function here, so it gives the developer the false impression that this create function has allocated new memory for dst, however it does not.

https://github.com/opencv/opencv/blob/74b50c7af05c91194469a1f059f971dff00ef889/modules/imgproc/src/imgwarp.cpp#L2607-L2609

Because by the time the check is done here, the function has returned back.

https://github.com/opencv/opencv/blob/74b50c7af05c91194469a1f059f971dff00ef889/modules/core/src/umatrix.cpp#L668-L675

### 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
- [x] 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.
- [x] The feature is well documented and sample code can be built with the project CMake
2024-07-19 09:08:19 +03:00
Pierre Chatelier 5e5a035c5b Merge pull request #24621 from chacha21:remap_relative
First proposal of cv::remap with relative displacement field (#24603) #24621

Implements #24603

Currently, `remap()` is applied as `dst(x, y) <- src(mapX(x, y), mapY(x, y))` It means that the maps must be filled with absolute coordinates.

However, if one wants to remap something according to a displacement field ("warp"), the operation should be `dst(x, y) <- src(x+displacementX(x, y), y+displacementY(x, y))`

It is trivial to build a mapping from a displacement field, but it is an undesirable overhead for CPU and memory.

This PR implements the feature as an experimental option, through the optional flag WARP_RELATIVE_MAP than can be ORed to the interpolation mode.

Since the xy maps might be const, there is no attempt to add the coordinate offset to those maps, and everything is postponed on-the-fly to the very last coordinate computation before fetching `src`. Interestingly, this let `cv::convertMaps()` unchanged since the fractional part of interpolation does not care of the integer coordinate offset.

### 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
- [X] 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
2024-02-28 17:20:33 +03:00
Alexander Alekhin 659cf7249e imgproc(ocl): fix resizeLN, avoid integer overflow 2021-12-09 20:30:26 +00:00
tompollok 0b77600718 change area() emptiness checks to empty() 2018-10-13 21:35:10 +02:00
Tomoaki Teshima 98d9369a38 add new comparison to tolerate with rounding error
* restore resize of carotene
  * clean up the source code
  * remove unused member function (Near)
  * add strict test on the border
2018-04-19 17:31:42 +09:00
Tomoaki Teshima 06babf90a5 let the test OCL_ImgprocWarp/Resize.Mat pass on ARM/Aarch64
* disable carotenete when calling resize on ARM/Aarch64
  * loosen eps on Aarch64
2018-03-22 21:35:34 +09: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
Vitaly Tuzov 51cb56ef2c Implementation of bit-exact resize. Internal calls to linear resize updated to use bit-exact version. (#9468) 2017-12-13 15:00:38 +03:00
Alexander Alekhin a4a47b538c build: detect Android via '__ANDROID__' macro
https://sourceforge.net/p/predef/wiki/OperatingSystems
2017-07-10 12:43:59 +03:00
Li Peng 2ca5a7e862 more optimization for warpAffine and warpPerspective
Add new OpenCL kernels for bicubic interploation, it is 20% faster
than current warp image kernel with bicubic interploation.

Signed-off-by: Li Peng <peng.li@intel.com>
2016-11-30 15:43:41 +08:00
Li Peng b72d196753 optimization for warpAffine and warpPerspective
Add new ocl kernels for warpAffine and warpPerspective,
The average performance improvemnt is about 30%. The new
ocl kernels require CV_8UC1 format and support nearest
neighbor and bilinear interpolation.

Signed-off-by: Li Peng <peng.li@intel.com>
2016-11-29 14:55:58 +08:00
Ilya Lavrenov cf4c79ebdd disabled some kernels for Android && NVidia 2015-03-04 14:46:49 +03:00
ElenaGvozdeva 7dd059c084 fixed test for ocl WarpAffine 2014-11-06 17:19:45 +03:00
Alexander Alekhin b7d1a70919 Merge pull request #3063 from akarsakov:ocl_warps_check 2014-08-11 13:20:11 +00:00
Alexander Karsakov 7849c35de1 Changed check condition in tests for warpAffine and warpPerspective 2014-08-08 17:14:38 +04:00
Elena Gvozdeva b7899c3d5c small fix for ocl_resize 2014-08-08 16:12:10 +04:00
Alexander Alekhin 55188fe991 world fix 2014-08-05 20:12:35 +04:00
Ilya Lavrenov 87f4b47a4f optimized INTER_LINEAR mode 2014-06-23 16:25:05 +04:00
Alexander Karsakov b046210296 Changed epsilon for hog test, because hog detector is sensible to resize accuracy. 2014-04-28 11:37:46 +04:00
Aaron Kunze ebbac3c66d Optimizes OpenCL resize and optical flow to use image extension. 2014-04-14 16:09:17 -07:00
Ilya Lavrenov 31f864a22b integer cv::resize (INTER_LINEAR && CV_8UC(cn)) 2014-03-31 20:25:53 +04:00
Ilya Lavrenov b73490f86c eliminated restriction src[i].channels() == 1 in cv::merge 2014-03-19 13:56:31 +04:00
Alexander Alekhin e7475bff68 TAPI: remap 3-channel 2014-03-10 20:35:10 +04:00
Ilya Lavrenov 5566d31468 more strict checks outside ROI 2013-12-10 19:30:14 +04:00
Ilya Lavrenov e2b99a32b2 added cv::threshold to T-API 2013-12-04 13:45:44 +04:00
Andrey Pavlenko f9190cc662 Merge pull request #1909 from alalek:ocl_tapi_perf 2013-12-04 11:35:11 +04:00
Ilya Lavrenov 803672feea added cv::remap to T-API 2013-12-04 00:43:43 +04:00
Ilya Lavrenov 55af7857b9 added cv::warpPerspective to T-API 2013-12-04 00:43:42 +04:00
Alexander Alekhin 7d9150460a core/ocl: added perf test infra + "Add" perf test 2013-12-03 18:43:50 +04:00
Roman Donchenko b27d7d2a61 Merge pull request #1886 from ilya-lavrenov:tapi_lut 2013-12-02 12:28:18 +04:00
Ilya Lavrenov 09795e3265 added cv::resize INTER_AREA to T-API 2013-11-29 17:57:37 +04:00
Ilya Lavrenov 4eba74ee19 added cv::LUT to T-API 2013-11-28 12:31:04 +04:00
Ilya Lavrenov 6679aed61e fixed ocl::resize (INTER_LINEAR) and added an accuracy test 2013-11-27 02:52:02 +04:00