Commit Graph

3227 Commits

Author SHA1 Message Date
Vadim Pisarevsky
e50acb923e
Merge pull request #16495 from vpisarev:drawing_aa_border_fix
* fixed antialiased line rendering to process image border correctly

* fixed warning on Windows

* imgproc(test): circle drawing regression
2020-02-04 19:37:33 +03:00
Alexander Alekhin
f67c8e37d6 imgproc(resize): drop optimization for channels>4 2020-02-04 17:14:52 +03:00
Vadim Pisarevsky
5c6d319ebc
Merge pull request #16493 from vpisarev:bordertype_sgbm_doc_fixes
* added note about BORDER_TYPE in separable filters; fixed SGBMStereo description

* added # to BORDER_ constants to generate hyperlinks
2020-02-04 14:30:16 +03:00
Alexander Alekhin
bf2f7b0f8b Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-02-01 17:26:00 +00:00
Arnaud Brejeon
ecbba852cf
Merge pull request #16415 from arnaudbrejeon:bug_fix_16410
* Fix bug 16410 and add test

* imgproc(connectedcomponents): avoid manual uninitialized allocations

* imgproc(connectedcomponents): force 'odd' chunk range size

* imgproc(connectedcomponents): reuse stripeFirstLabel{4/8}Connectivity

* imgproc(connectedcomponents): extend fix from PR14964
2020-01-29 23:55:43 +03:00
Alexander Alekhin
560f85f8e5 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-01-28 14:26:57 +03:00
Alexander Alekhin
76c21b73aa Merge pull request #16374 from alalek:imgproc_dispatch_sumpixels 2020-01-24 21:21:48 +00:00
Alexander Alekhin
3d14dd4e39 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-01-22 16:58:30 +03:00
Alexander Alekhin
881cee4d8f Merge pull request #16146 from pmur:reg_16137x2 2020-01-22 13:53:51 +00:00
Alexander Alekhin
09b3383a7e imgproc: dispatch sumpixels (integral) 2020-01-17 16:54:29 +03:00
Alexander Alekhin
b4316af834 imgproc: rename sumpixels.avx512_skx.{cpp,hpp} 2020-01-17 16:50:08 +03:00
Alexander Alekhin
358139b6b9 imgproc(dispatch): keep history of sumpixels.cpp 2020-01-16 15:09:10 +03:00
Alexander Alekhin
c6a622542d imgproc: copy sumpixels.dispatch.cpp 2020-01-16 15:07:48 +03:00
Alexander Alekhin
4ecbcf0885 imgproc: copy sumpixels.simd.hpp 2020-01-16 15:06:34 +03:00
Alexander Alekhin
fb61f88b9c Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-01-12 09:35:39 +00:00
Alexander Alekhin
e180cc050b
Merge pull request #16236 from alalek:fix_core_simd_emulator
* core: fix intrin_cpp, allow to build modules with SIMD emulator

* core(arithm): fix v_zero initialization

* core(simd): 'strict' types for binary/bitwise operations

* features2d: avoid aligned load issue in GCC 5.4 with emulated SIMD

* core(simd): alignment checks in SIMD emulator
2020-01-10 21:31:02 +03:00
Paul E. Murphy
c1cdb2416a imgproc(resize): improve 8u3 HResize vector exit calc
Actually, we can do this in constant time. xofs always
contains same or increasing offset values. We can instead
find the most extreme value used and never attempt to load it.

Similarly, we can note for all dx >= 0 and dx < (dwidth - cn)
where xofs[dx] + cn < xofs[dwidth-cn] implies dx < (dwidth - cn).

Thus, we can use this to control our loop termination optimally.

This fixes #16137 with little or no performance impact. I have
also added a debug check as a sanity check.
2020-01-03 14:46:59 -06:00
Alexander Alekhin
40ac72a8f1 Merge pull request #16238 from alalek:imgproc_resize_fix_types 2020-01-03 16:30:28 +00:00
Brian Wignall
f9c514b391 Fix spelling typos
backport commit 659ffaddb4
2019-12-27 12:46:53 +00:00
Brian Wignall
659ffaddb4 Fix spelling typos 2019-12-26 06:45:03 -05:00
Alexander Alekhin
07729e396d imgproc(resize): avoid unnecessary type conversions 2019-12-26 00:02:52 +00:00
Alexander Alekhin
4c86fc13cb Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-12-19 15:09:05 +03:00
Alexander Alekhin
4733a19bab
Merge pull request #16194 from alalek:fix_16192
* imgproc(test): resize(LANCZOS4) reproducer 16192

* imgproc: fix resize LANCZOS4 coefficients generation
2019-12-19 13:20:42 +03:00
Alexander Alekhin
a8345133ac Merge pull request #16191 from terfendail:lres2c_fix 2019-12-18 22:31:52 +00:00
Vitaly Tuzov
f5a84f75c4 Fix for CV_8UC2 linear resize vectorization 2019-12-18 21:41:36 +00:00
mcellis33
5d15c65e48 Merge pull request #16136 from mcellis33:mec-nan
* Handle det == 0 in findCircle3pts.

Issue 16051 shows a case where findCircle3pts returns NaN for the
center coordinates and radius due to dividing by a determinant of 0. In
this case, the points are colinear, so the longest distance between any
2 points is the diameter of the minimum enclosing circle.

* imgproc(test): update test checks for minEnclosingCircle()

* imgproc: fix handling of special cases in minEnclosingCircle()
2019-12-18 17:25:59 +03:00
Alexander Alekhin
92b9888837 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-12-12 13:02:19 +03:00
Paul Murphy
1c4a64f0a1 Merge pull request #16138 from pmur:reg_16137
* imgproc: Prevent 1B overrun of 8C3 SIMD optimization

The fourth value read via v_load_q is essentially ignored,
but can cause trouble if it happens to cross page boundaries.

The final few iterations may attempt to read the most extreme
elements of S, which will read 1B beyond the array in most
aligment cases. Dynamically compute the stop. This could be
hoised from the loop, but will require a more extensive change.

Likewise, cleanup the iteration increment statements to make
it more obvious they do channel count (3) elements per pass.

This should resolve #16137

* imgproc(resize): extra check
2019-12-12 13:00:44 +03:00
shimat
b89581960c s/Voroni/Voronoi/g 2019-12-11 09:13:58 +09:00
Maksim Shabunin
435c97c7a2 imgproc: add parameter checks in calcHist and calcBackProj 2019-12-10 16:10:19 +03:00
RAJKIRAN NATARAJAN
b9435b9e38 Merge pull request #16094 from saskatchewancatch:issue-16053
* Add eps error checking for approxPolyDP to allow sensible values only
for epsilon value of Douglas-Peucker algorithm.

* Review changes for PR
2019-12-09 22:24:35 +03:00
Paul Murphy
a011035ed6 Merge pull request #15257 from pmur:resize
* resize: HResizeLinear reduce duplicate work

There appears to be a 2x unroll of the HResizeLinear against k,
however the k value is only incremented by 1 during the unroll. This
results in k - 1 duplicate passes when k > 1.

Likewise, the final pass may not respect the work done by the vector
loop. Start it with the offset returned by the vector op if
implemented. Note, no vector ops are implemented today.

The performance is most noticable on a linear downscale. A set of
performance tests are added to characterize this.  The performance
improvement is 10-50% depending on the scaling.

* imgproc: vectorize HResizeLinear

Performance is mostly gated by the gather operations
for x inputs.

Likewise, provide a 2x unroll against k, this reduces the
number of alpha gathers by 1/2 for larger k.

While not a 4x improvement, it still performs substantially
better under P9 for a 1.4x improvement. P8 baseline is
1.05-1.10x due to reduced VSX instruction set.

For float types, this results in a more modest
1.2x improvement.

* Update U8 processing for non-bitexact linear resize

* core: hal: vsx: improve v_load_expand_q

With a little help, we can do this quickly without gprs on
all VSX enabled targets.

* resize: Fix cn == 3 step per feedback

Per feedback, ensure we don't overrun. This was caught via the
failure observed in Test_TensorFlow.inception_accuracy.
2019-12-09 14:54:06 +03:00
Alexander Alekhin
734de34b7a
Merge pull request #16085 from alalek:imgproc_threshold_to_zero_ipp_bug
* imgproc(IPP): wrong result from threshold(THRESH_TOZERO)

* imgproc(IPP): disable IPP code to pass THRESH_TOZERO test
2019-12-09 14:51:02 +03:00
Alexander Alekhin
b369c456f2 imgproc(color): clarify error message 2019-12-06 13:25:51 +03:00
Brian Wignall
af997529a1 Fix some typos 2019-11-26 18:41:19 +03:00
Brian Wignall
9276f1910b Fix some typos 2019-11-25 19:55:07 -05:00
Alexander Alekhin
ad0ab4109a Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-11-22 22:47:13 +00:00
Everton Constantino
75315fb297 Merge pull request #15494 from everton1984:hal_vector_get_n
Improving VSX performance of integral function

* Adding support for vector get function on VSX datatypes so the
integral function gains a bit of performance.

* Removing get as a datatype member function and implementing a new HAL
instruction v_extract_n to get the n-th element of a vector register.

* Adding SSE/NEON/AVX intrinsics.

* Implement new HAL instruction v_broadcast_element on VSX/AVX/NEON/SSE.

* core(simd): add tests for v_extract_n/v_broadcast_element

- updated docs
- commented out code to repair compilation
- added WASM and MSA default implementations

* core(simd): fix compilation

- x86: avoid _mm256_extract_epi64/32/16/8 with MSVS 2015
- x86: _mm_extract_epi64 is 64-bit only

* cleanup
2019-11-20 13:41:07 +03:00
Alexander Alekhin
318cba4ce3 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-11-19 19:48:49 +00:00
clunietp
2185bce4b7 Fix 13577 2019-11-18 07:41:34 -05:00
Alexander Alekhin
fc41c18c6f Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-11-18 13:56:24 +03:00
Alexander Alekhin
f4d55d512f
imgproc: fix bit-exact GaussianBlur() / sepFilter2D() (#15855)
* imgproc: fix bit-exact GaussianBlur() / sepFilter2D()

- avoid kernels with bad approximation
- GaussiabBlur - apply error-diffusion approximation for kernel (8-bit fraction)

* java(test): update features2d ref data

* test: update test_facedetect
2019-11-18 01:39:27 +03:00
Alexander Alekhin
686ea5c1a6 Merge pull request #15917 from ChipKerchner:demosaicingToHal2 2019-11-16 19:45:37 +00:00
ChipKerchner
1d33335e33 Convert demosiacing with variable number of gradients to HAL - 5.5x faster 2019-11-15 07:42:03 -06:00
Alexander Alekhin
6773b938b3 Merge pull request #15896 from alalek:build_gcc_9 2019-11-14 14:22:02 +00:00
Alexander Alekhin
763b80d5fa imgproc(IPP): disable ippiDistanceTransform_3x3_8u32f_C1R 2019-11-13 14:14:19 +03:00
Alexander Alekhin
7ecdcf6ca6 build: GCC9 compilation 2019-11-12 18:49:34 +03:00
Alexander Alekhin
b6a58818bb Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-11-11 20:25:42 +00:00
Chip Kerchner
2112aa31e6 Merge pull request #15828 from ChipKerchner:momentsToHal
* Convert moments in tile algorithms to HAL (1.3x faster for VSX).

* Adding NEON code back in for non 64-bit platforms.

* Remove floats from post processing.
2019-11-05 18:52:35 +03:00
Alexander Alekhin
0d7f770996 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-11-04 09:58:29 +00:00
Ciprian Alexandru Pitis
d2e02779c4 Merge pull request #15799 from Cpitis:feature/parallelization
Parallelize pyrDown & calcSharrDeriv

* ::pyrDown has been parallelized

* CalcSharrDeriv parallelized

* Fixed whitespace

* Set granularity based on amount of threads enabled

* Granularity changed to cv::getNumThreads, now each thread should receive 1/n sized stripes

* imgproc: move PyrDownInvoker<CastOp>::operator() implementation

* imgproc(pyramid): remove syloopboundary()

* video: SharrDerivInvoker replace 'Mat*' => 'Mat&' fields
2019-10-31 23:38:49 +03:00
Alexander Alekhin
ea5499fa51 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-10-29 20:46:51 +00:00
Alexander Alekhin
bad4e5c3eb Merge pull request #15692 from alalek:core_tls_handle_thread_termination 2019-10-29 20:40:35 +00:00
Alexander Alekhin
7cf1054d36 Merge pull request #15764 from ChipKerchner:demosaicingToHal 2019-10-25 13:49:46 +00:00
Alexander Alekhin
055ffc0425 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-10-24 18:21:19 +00:00
Alexander Alekhin
17e2bf5717 core(tls): implement releasing of TLS on thread termination
- move TLS & instrumentation code out of core/utility.hpp
- (*) TLSData lost .gather() method (to dispose thread data on thread termination)
- use TLSDataAccumulator for reliable collecting of thread data
- prefer using of .detachData() + .cleanupDetachedData() instead of .gather() method

(*) API is broken: replace TLSData => TLSDataAccumulator if gather required
(objects disposal on threads termination is not available in accumulator mode)
2019-10-24 06:36:18 +00:00
ChipKerchner
c46f119e0e Convert demosaic functions to HAL 2019-10-23 10:47:07 -05:00
Steve Nicholson
acb3b3bd4d Add documentation and example program for intersectConvexConvex 2019-10-19 22:08:07 -07:00
jasjuang
4c7db02925 document CC_STAT_MAX in ConnectedComponentsTypes 2019-10-16 17:22:25 -07:00
Everton Constantino
9ca9249992 Merge pull request #15527 from everton1984:faster_acc
* Adding support for vectorized masking for uchar/ushort.

* Fixing bug where mask was zeroing the dst. Improved the way to calculate
the mask and tweaked for further performance improvements.

* Fixing mask comparison test.

* Restricting to one channel.

* Adding support for 3 channels, switch old approach to start using HAL's
v_select.
2019-10-11 18:32:59 +03:00
Alexander Alekhin
65573784c4 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-10-09 19:46:18 +00:00
Alexander Alekhin
4748aca61f
Merge pull request #15642 from alalek:issue_15597 2019-10-08 00:33:20 +03:00
Alexander Alekhin
a007220c52 imgproc: update histogram test 2019-10-07 15:06:43 +03:00
Alexander Alekhin
626bfbf309 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-10-05 15:45:31 +00:00
Alexander Alekhin
f301f17b61 imgproc: accurate histogram value thresholding 2019-10-04 19:56:25 +03:00
Alexander Alekhin
c69245da1f imgproc: fix fitLine() implementation
- update optimal solutions on each iteration
2019-10-03 21:23:52 +00:00
Alexander Alekhin
3fb6617d62 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-10-02 17:49:19 +03:00
Alexander Alekhin
507ca291e1 Merge pull request #12670 from alalek:imgproc_getRotationMatrix2D_return_type 2019-09-28 18:03:34 +00:00
Alexander Alekhin
f81e401cd0 imgproc: fix indexing issue in pyramids
UBSAN violation expression: 'tab = tabR - x;'
2019-09-26 18:09:47 +03:00
Alexander Alekhin
e2a5a6a05c Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-09-25 18:32:44 +00:00
Vitaly Tuzov
1c17b3281a Fixed OOB reading in pyrDown 2019-09-25 13:24:17 +03:00
Vitaly Tuzov
7b3a752012 Fixed universal intrinsic undistort() implementation 2019-09-16 17:16:38 +03:00
Alexander Alekhin
b4c5b50a3e Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-09-13 17:15:45 +00:00
Alexander Alekhin
e7b6753a10 imgproc: avoid manual memory allocation in connectedcomponents.cpp 2019-09-05 16:20:08 +03:00
Alexander Alekhin
bea2c75452 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-09-05 14:29:22 +03:00
Everton Constantino
76e403cf25 Merge pull request #15440 from everton1984:new_integral_tests
* Adding all possible data type interactions to the perf tests since some
use SIMD acceleration and others do not.

* Disabling full tests by default.

* Giving proper names, removing magic numbers and sanity checks of new
performance tests for the integral function.

* Giving proper names, making array static.
2019-09-04 19:14:00 +03:00
atinfinity
3b9f981358 removed tegra optimization 2019-09-01 21:22:06 +09:00
Chip Kerchner
26228e6b4d Merge pull request #15358 from ChipKerchner:imgwarpToHal
* Convert ImgWarp from SSE SIMD to HAL - 2.8x faster on Power (VSX) and 15% speedup on x86

* Change compile flag from CV_SIMD128 to CV_SIMD128_64F for use of v_float64x2 type

* Changing WarpPerspectiveLine from class functions and dispatching to static functions.

* Re-add dynamic runtime and dispatch execution.

* RRestore SSE4_1 optimizations inside opt_SSE4_1 namespace
2019-08-31 13:47:58 +03:00
Alexander Alekhin
1661e83939 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-08-30 16:22:42 +03:00
atinfinity
824465ea27 Merge pull request #15388 from atinfinity:impl-turbo-colormap
Implementation of colormap "Turbo" (#15388)

* implemented turbo colormap

* add colormap image

* changed float value to avoid cast

* sorted flag check alphabetically
2019-08-26 17:55:10 +03:00
Alexander Alekhin
a7b954f655 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-08-23 19:24:37 +03:00
Alexander Alekhin
29dbeb253c build: fix build with ICC 2019-08-23 16:36:32 +03:00
luz.paz
fcc7d8dd4e Fix modules/ typos
Found using `codespell -q 3 -S ./3rdparty -L activ,amin,ang,atleast,childs,dof,endwhile,halfs,hist,iff,nd,od,uint`

backporting of commit: ec43292e1e
2019-08-16 17:34:29 +03:00
luz.paz
ec43292e1e Fix modules/ typos
Found using `codespell -q 3 -S ./3rdparty -L activ,amin,ang,atleast,childs,dof,endwhile,halfs,hist,iff,nd,od,uint`
2019-08-15 18:02:09 -04:00
Alexander Alekhin
32772a5436 3.4: backported changes from 'master' branch 2019-08-14 16:36:08 +03:00
Alexander Alekhin
174b4ce29d Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-08-05 18:11:43 +00:00
Maksim Shabunin
6d5ac67681 Restored IPP call reduction 2019-07-31 15:41:22 +03:00
dcouwenh
d3cf0d2c06 Bayer VNG Demosaicing Fix #2 (Merge pull request #15086)
* Update demosaicing.cpp

Fixed calculation of Bs for non-green pixels.

* Fixed cvtColor perf test for bayer VNG
2019-07-30 23:49:46 +03:00
Alexander Alekhin
199ddff13b Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-07-18 20:25:25 +00:00
Vitaly Tuzov
e0f8bb83a6 Merge pull request #14994 from terfendail:wintr_undistort
WUI based implementation to initUndistortRectifyMap (#14994)

* Add initUndistortRectifyMap performance test

* Move cv namespace boundaries

* Add wide universal intrinsics based implementation to initUndistortRectifyMap

* Dispatch undistort
2019-07-18 19:32:51 +03:00
Chip Kerchner
c9fcc12e3b Merge pull request #15048 from ChipKerchner:reduceStoreGatheringThreshold
* Reduce store gathering pressures - speeds thresholds by up to 20%

* Rename temporary histogram array and initialize so that MACOSX builder is happy
2019-07-16 16:10:49 +03:00
Alexander Alekhin
f6c573880e Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-07-12 18:45:06 +00:00
Alexander Alekhin
054c796213 Merge pull request #15026 from terfendail:gaussian_fix 2019-07-12 18:31:09 +00:00
Vitaly Tuzov
894ad33bf4 Fix pixel value evaluation overflow in bit-exact GaussianBlur implementation 2019-07-12 18:11:51 +03:00
Alexander Alekhin
32c6e58bdb imgproc: fix unaligned memory access
may cause crashes on ARM platform
2019-07-11 20:49:47 +00:00
Alexander Alekhin
f663e8f903 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-07-09 19:57:57 +00:00
Alexander Alekhin
39a975cb29 Merge pull request #14983 from tomoaki0705:fixOclCvtColorMRGBA 2019-07-05 09:31:08 +00:00
Tomoaki Teshima
594a95839c fix test failure of OCL_ImgProc/CvtColor8u.mRGBA2RGBA 2019-07-05 11:22:22 +09:00
Vitaly Tuzov
82e5b961d3 Fixed initUndistortRectifyMap AVX2 implementation 2019-07-04 15:49:33 +03:00
Alexander Alekhin
097d81363b Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-07-02 21:17:45 +00:00
arnaudbrejeon
a37201abee Fix crash, add assert and test 2019-07-02 09:56:31 -07:00
Vitaly Tuzov
9befb7a1d7 Merge pull request #14916 from terfendail:wsignmask_deprecated
* Avoid using v_signmask universal intrinsic and mark it as deprecated

* Renamed v_find_negative to v_scan_forward
2019-07-01 19:53:51 +03:00
StefanBruens
3e4a195b61 Merge pull request #14936 from StefanBruens:crosscorr_cleanup
Crosscorr cleanup (#14936)

* Simplify code for convolution destination type/size

For the 2d filter code, destination size equals source size, and the
crossCorr function even (re-)creates the output matrix with the given size.

The number of channels also have to match. The destination type() is the
one used to create the output matrix, so we can use its type() here.

This is a preparatory patch.

Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>

* Remove redundant destination size and type parameters from crossCorr

All calling sites of crossCorr already use (...,
mat, mat.size(), mat.type(), ...), so the parameters are redundant.

Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
2019-06-30 19:04:25 +03:00
Alexander Alekhin
b95e93c20a Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-26 20:19:04 +00:00
Alexander Alekhin
4112866821 Merge pull request #14886 from alalek:fix_grabcut_kmeans_call_14879 2019-06-26 20:03:04 +00:00
Alexander Alekhin
0a461e7922 Merge pull request #13252 from take1014:filter2d_13179 2019-06-26 13:34:10 +00:00
Alexander Alekhin
4a6888ccf6 imgproc: fix kmeans() call from grabCut() 2019-06-25 13:42:04 +03:00
Alexander Alekhin
f33f88de31 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-21 17:27:14 +03:00
Alexander Alekhin
5ac55fc132 core: eliminate AVX512 build warnings
from MSVS2017 and GCC8 -O1 mode
2019-06-20 20:00:09 +03:00
Alexander Alekhin
8ca4252303 Merge pull request #14583 from FanaticsKang:fix_undistortPoint_bug 2019-06-14 18:30:26 +00:00
Kang
549c53121a fix the bug, when k[4] is negative, icdist may be negative at the edge of image. 2019-06-14 19:00:36 +03:00
Alexander Alekhin
81fad9e247 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-11 20:43:40 +00:00
Vitaly Tuzov
d2aadabc5e Merge pull request #14743 from terfendail:wui512_fixvswarn
Fix for MSVS2019 build warnings (#14743)

* AVX512 arch support for MSVS

* Fix for MSVS2019 build warnings: updated integral() AVX512 implementation

* Fix for MSVS2019 build warnings: reworked v_rotate_right AVX512 implementation

* fix indentation
2019-06-11 23:07:39 +03:00
Alexander Alekhin
11b020b9f9 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-10 19:05:28 +00:00
Alexander Alekhin
1e9ad5476d core(intrin): drop hasSIMD128 checks
- use compile-time checks instead (`#if CV_SIMD128`)
- runtime checks are useless
2019-06-08 19:20:20 +00:00
Alexander Alekhin
f3de2b4be7 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-05 19:11:52 +03:00
bommo1
a38157a1f4
Fix https://github.com/opencv/opencv/issues/14265 2019-06-03 23:05:03 +02:00
Vitaly Tuzov
3b015dfc7d Merge pull request #14210 from terfendail:wui_512
AVX512 wide universal intrinsics (#14210)

* Added implementation of 512-bit wide universal intrinsics(WIP)

* Added implementation of 512-bit wide universal intrinsics: implemented WUI vector types(WIP)

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented load/store

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented fp16 load/store

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented recombine and zip, implemented non-saturating and saturating arithmetics

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented bit operations

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented comparisons

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented lane shifts and reduction

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented absolute values

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented rounding and cast to float

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented LUT

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented type extension/narrowing and matrix operations

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented load_deinterleave for 2 and 3 channels images

* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented load_deinterleave for 2- and implemented for 4-channel images

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented store_interleave

* Added implementation of 512-bit wide universal intrinsics(WIP): implemented signmask and checks

* Added implementation of 512-bit wide universal intrinsics(WIP): build fixes

* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented popcount in case AVX512_BITALG is unavailable

* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented zip

* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented rotate for s8 and s16

* Added implementation of 512-bit wide universal intrinsics(WIP): reimplemented interleave/deinterleave for s8 and s16

* Added implementation of 512-bit wide universal intrinsics(WIP): updated v512_set macros

* Added implementation of 512-bit wide universal intrinsics(WIP): fix for GCC wrong _mm512_abs_pd definition

* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_zip to avoid AVX512_VBMI intrinsics

* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_invsqrt to avoid AVX512_ER intrinsics

* Added implementation of 512-bit wide universal intrinsics(WIP): reworked v_rotate, v_popcount and interleave/deinterleave for U8 to avoid AVX512_VBMI intrinsics

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed integral image SIMD part

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed warnings

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed load_deinterleave for u8 and u16

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed v_invsqrt accuracy for f64

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed interleave/deinterleave for u32 and u64

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed interleave_pairs, interleave_quads and pack_triplets

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed rotate_left

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed rotate_left/right, part 2

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed 512-wide universal intrinsics based resize

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed findContours by avoiding use of uint64 dependent 512-wide v_signmask()

* Added implementation of 512-bit wide universal intrinsics(WIP): fixed trailing whitespaces

* Added implementation of 512-bit wide universal intrinsics(WIP): reworked specific intrinsic sets dependent parts to check availability of intrinsics based on CPU feature group defines

* Added implementation of 512-bit wide universal intrinsics(WIP):Updated AVX512 implementation of v_popcount to avoid AVX512VPOPCNTDQ intrinsics if unavailable.

* Added implementation of 512-bit wide universal intrinsics(WIP): Fixed universal intrinsics data initialisation, v_mul_wrap, v_floor, v_ceil and v_signmask.

* Added implementation of 512-bit wide universal intrinsics(WIP): Removed hasSIMD512()

* Added implementation of 512-bit wide universal intrinsics(WIP): Fixes for gcc build

* Added implementation of 512-bit wide universal intrinsics(WIP): Reworked v_signmask, v_check_any() and v_check_all() implementation.
2019-06-03 18:05:35 +03:00
Alexander Alekhin
43467a2ac7 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-05-28 18:29:48 +00:00
Alexander Alekhin
aaf56c2839 Merge pull request #14649 from savuor:fix/luv_hls_read_oob 2019-05-27 16:24:55 +00:00
Alexander Alekhin
a81c0e6db9 Merge pull request #14447 from catree:fix_issue_14423 2019-05-27 15:00:21 +00:00
Rostislav Vasilikhin
8c698262ea rgb2hls_b: out of bounds read fixed 2019-05-27 16:19:52 +03:00
Rostislav Vasilikhin
791ebd05fc out of bounds read fixed in rgb2luv_b 2019-05-27 16:19:01 +03:00
Rostislav Vasilikhin
e07ffe902e Merge pull request #14616 from savuor:hsv_wide
HSV and HLS color conversions rewritten to wide intrinsics (#14616)

* RGB2HSV_b vectorized

* RGB2HSV_f: widen

* RGB2HSV_f: shorten, more intuitive

* HSV2RGB_f and HSV2RGB_b widen

* hls2rgb_f widen

* instrumentation instead vx_cleanup

* RGB2HLS_f widen

* RGB2HLS_b rewritten to wide universal intrinsics

* define guard against no SIMD code

* hls2rgb_b rewritten

* extra define removed

* warning fixed

* hls2rgb_b: performance fixed
2019-05-24 23:01:08 +03:00
Alexander Alekhin
166ecaeda8 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-05-23 19:50:20 +03:00
Ahmed Ashour
f3319f6140 java: remove redundant declaration of java.lang package 2019-05-23 14:06:34 +02:00
catree
7ed858e38e Fix issue with solvePnPRansac and Nx3 1-channel input when the number of points is 5. Try to uniform the input shape of projectPoints and undistortPoints. 2019-05-22 14:19:16 +02:00
Rostislav Vasilikhin
e90e0ef9aa Merge pull request #14106 from savuor:lab_wide
Lab, Luv and XYZ conversions rewritten to wide intrinsics (#14106)

* rgb2xyz<float> re-vectorized

* rgb2xyz_i vectorized for ushort and uchar

* xyz2rgb<float> vectorized

* xyz2rgb_i vectorized for both uchar and ushort

* intermediate conversions (int->float) rewritten

* packed rgb2luv rewritten

* (some) float conversions rewritten

* burnt volatile int _3 and similar

* RGB2Lab_b rewritten

* tests: logging made better

* RGB2Lab_f (LRGB path) rewritten

* Lab2RGBfloat rewritten

* Lab2RGBinteger and Lab2RGB_b rewritten to wide universal intrinsics

* Luv2RGBinteger wide vectorized

* RGB2Lab_b fixed: v_sub_wrap instead of saturated sub

* warnings fixed

* trying to fix compilation on older compilers

* using 16x8 registers for 8-element dot product

* cleanup added

* splineInterpolate: loop unrolled, perf fix for f32x4

* Lab2RGBfloat: grab 2x more data to process on f32x4

* nrepeats for Luv2RGBfloat, +20% perf

* minor

* nrepeats to RGB2Lab_f

* Lab2RGBinteger: no tab for linear BGR

* nrepeats for RGB2Luvfloat

* Luv2RGBinteger: no tab for linear RGB

* +10% more to perf of Luv2RGBfloat

* nrepeats for 256-simd for Lab2RGBfloat

* less warnings

* BOM removed

* CV_SIMD_WIDTH used for lanes number checking

* trilinearPackedInterpolate: 128-bit specialization added

* fix build; no vx_cleanup(), instrumentation instead
2019-05-20 21:10:20 +03:00
Alexander Alekhin
30a595789c Merge pull request #14463 from thangktran:thangktran/fix-imgproc-intersectConvexConvex 2019-05-16 14:50:20 +00:00
Thang Tran
1aff378ae8 imgproc: fixed bug from intersectConvexConvex
Added checks for all of vertices from each contour instead of checking
only for the first vertex.
2019-05-01 11:06:30 +02:00
Alexander Alekhin
e28e3c9491 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-05-01 08:27:45 +00:00
Alexander Alekhin
1c180f4c7f imgproc: fix RemoveOverlaps() with empty input vector 2019-04-29 21:15:23 +00:00
Alexander Alekhin
d0032b0717 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-04-22 18:17:28 +00:00
Suleyman TURKMEN
3f9343e238 Update imgproc.hpp 2019-04-22 00:48:11 +03:00
Alexander Alekhin
c024edb9a8 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-04-19 15:43:58 +03:00
Alexander Alekhin
9dccfe2a96 Merge pull request #13917 from sturkmen72:removed_c_api 2019-04-17 19:04:33 +00:00
Alexander Alekhin
90df5e00b4 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-03-26 18:56:54 +00:00
Brad Kelly
0fe17eeb68 Implementing AVX512 Support for 1 channel mats for CV_64F format 2019-03-22 09:44:23 -07:00
Alexander Alekhin
bd1fd59fc1 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-03-13 19:13:13 +00:00
Alexander Alekhin
8c8715c4dd fix static analysis issues 2019-03-13 17:19:39 +03:00
Alexander Alekhin
f73b4f4a26 imgproc: revert #13843
This reverts commit 00e8c7810f
2019-03-13 15:07:37 +03:00
take1014
e0b664f390 fix dftFilter2D 2019-03-13 00:27:56 +09:00
Alexander Alekhin
8c0b0714e7 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-03-11 19:20:22 +00:00
Alexander Alekhin
2c07c6718f imgproc: dispatch morph 2019-03-11 13:54:12 +00:00
Alexander Alekhin
5a01227aa1 imgproc: dispatch box_filter 2019-03-11 13:54:12 +00:00
Alexander Alekhin
ce3c92eb1f imgproc: dispatch bilateral_filter 2019-03-11 13:54:12 +00:00
Alexander Alekhin
b99c9145bf imgproc: dispatch smooth 2019-03-11 13:54:12 +00:00
Alexander Alekhin
6ec08f268f imgproc: dispatch medianBlur 2019-03-11 13:54:12 +00:00
Alexander Alekhin
8546ac3ce6 imgproc: get rid of filter.avx2.cpp 2019-03-11 13:54:12 +00:00
Alexander Alekhin
9a8dbfd57f imgproc: dispatch filter.cpp 2019-03-11 13:54:12 +00:00
Alexander Alekhin
756a98a395 imgproc: keep history of filters files 2019-03-11 13:54:07 +00:00
Alexander Alekhin
9dc7554089 imgproc: copy .dispatch.cpp 2019-03-11 13:53:59 +00:00
Alexander Alekhin
6eac8f78b9 imgproc: copy .simd.hpp 2019-03-11 13:53:59 +00:00
Alexander Alekhin
7e8cc580c9 Merge pull request #13997 from alalek:imgproc_dispatch_cvtcolor 2019-03-08 16:18:44 +00:00
Alexander Alekhin
8b541e450b imgproc: dispatch color*
Lab/XYZ modes have been postponed (color_lab.cpp):
- need to split code for tables initialization and for pixels processing first
- no significant performance improvements for switching between SSE42 / AVX2 code generation
2019-03-07 15:45:05 +03:00
Alexander Alekhin
39783a6584 core: keep history of color*.cpp 2019-03-07 15:38:13 +03:00
Alexander Alekhin
f26912960f imgproc: clone color*.dispatch.cpp 2019-03-07 15:35:49 +03:00
Alexander Alekhin
db588bb831 imgproc: clone color*.simd.hpp 2019-03-07 15:35:13 +03:00
Alexander Alekhin
d5a2fe5180 perf: ignore _ovx tests 2019-03-06 15:52:23 +03:00
Alexander Alekhin
332c37f332 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-03-06 11:43:16 +03:00
Vitaly Tuzov
99b39aa5bd Fixed out of bound reading in LINEAR_EXACT resize for 8UC3 2019-03-05 17:21:21 +03:00
Suleyman TURKMEN
3d1dbd2ccd clean up C API 2019-03-03 21:43:27 +03:00
Alexander Alekhin
3ba49ccecc imgproc: removed LSD code due original code license conflict 2019-03-01 16:25:39 +03:00
Vitaly Tuzov
9548093b46 Horizontal line processing for pyrDown() reworked using wide universal intrinsics. 2019-02-28 00:12:57 +03:00
Alexander Alekhin
c3cf35ab63 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-02-26 17:34:42 +03:00
Alexander Alekhin
1db5d82b7f Merge pull request #13844 from brad-kelly:integral_avx512_cn234 2019-02-20 12:27:16 +00:00
Vitaly Tuzov
334c4d62b5 Merge pull request #13781 from terfendail:warp_wintr
Resize reworked using wide universal intrinsics (#13781)

* Added wide universal intrinsics optimized implementation for 3 channel bit-exact linear resize

* Reworked linear resize using new wide LUT intrinsics

* Fix for VSX intrinsics
2019-02-20 14:30:28 +03:00
Brad Kelly
507f8add1c Implementing AVX512 Support for 2 and 4 channel mats for CV_64F format 2019-02-19 11:31:20 -08:00
Pierre Chatelier
00e8c7810f LineIterator witout a Mat (#13843)
* LineIterator witout a Mat

cv::LineIterator can be used without being attached to any cv::Mat, it only needs the size and type of data. An alternative constructor has been defined for that.
In that case, a LineIterator can no more be dereferenced with the * operator, but pos() still returns valid pixel positions.
It can be useful when LineIterator is just used to compute positions of pixels on a line, without requiring to build a Mat just for that.
Use case : with a dataset that would represent a huge image, pixel positions can be pre-computed before querying the dataset API.

* Update imgproc.hpp

removed trailing spaces

* Update drawing.cpp

fixed warning
2019-02-19 13:44:41 +03:00
Alexander Alekhin
f414c16c13 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-02-08 17:18:56 +00:00
Alexander Alekhin
757d8ac8f7 Merge pull request #13769 from savuor:cvtColor_tests_16u_32f 2019-02-08 15:29:35 +00:00
Alexander Alekhin
8f7e92e466 Merge pull request #13764 from nglee:dev_CudaCLAHE16bitSupport 2019-02-08 10:13:11 +00:00
Rostislav Vasilikhin
4e679e1cc5 disabled 16u and 32f perf tests 2019-02-07 19:26:36 +03:00
Rostislav Vasilikhin
87f651c119 disabled sanity check for 32f 2019-02-07 18:20:29 +03:00
Vitaly Tuzov
07c10d6fc3 Fixed out of bound reading issue in erode() and dilate() 2019-02-07 17:28:58 +03:00
Namgoo Lee
fb8e652c3f Add CV_16UC1 support for cuda::CLAHE
Due to size limit of shared memory, histogram is built on
the global memory for CV_16UC1 case.

The amount of memory needed for building histogram is:

    65536 * 4byte = 256KB

and shared memory limit is 48KB typically.

Added test cases for CV_16UC1 and various clip limits.
Added perf tests for CV_16UC1 on both CPU and CUDA code.

There was also a bug in CV_8UC1 case when redistributing
"residual" clipped pixels. Adding the test case where clip
limit is 5.0 exposes this bug.
2019-02-06 17:21:55 +00:00
Rostislav Vasilikhin
bbedebb57c perf tests for cvtColor for 16U and 32f added 2019-02-06 17:56:44 +03:00
Alexander Alekhin
fcec053d59 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-02-05 19:12:41 +03:00
Rostislav Vasilikhin
554eae56d1 Merge pull request #13708 from savuor:yuv42x_wide
YUV42x color conversions rewritten to wide intrinsics (#13708)

* a*b+c -> fma

* YUV420sp2RGB initially vectorized

* shorter var names

* loops by 4

* yuv420p2rgb vectorized

* yuv422toRGB vectorized

* reg arrays

* rgb2yuv420 vectorized

* warnings fixed

* try to fix align error
2019-02-01 19:09:31 +03:00
Alexander Alekhin
665408e57f Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-02-01 13:17:32 +03:00
Vitaly Tuzov
2f5af1bd33 Merge pull request #13693 from terfendail:spatialgrad_wintr
* spatialGradient() reworked to use wide universal intrinsics

* Moved row pointers inside loops
2019-01-30 22:37:27 +03:00
Alexander Alekhin
268d73165e Merge pull request #13684 from terfendail:lblend_wintr 2019-01-29 16:21:08 +00:00
Alexander Alekhin
5916ebf500
Merge pull request #13679 from alalek:imgproc_median_blur_cleanup
* imgproc: cleanup medianBlur_8u_O1 code

Unnecessary per-channel buffers: H[c] / lut[c]

* imgproc(medianBlur_8u_O1): use CV_SIMD_WIDTH for alignment
2019-01-29 19:20:24 +03:00
Arnaud Brejeon
d998e70a25 Merge pull request #13672 from arnaudbrejeon:bug_fix_12961
PyrDown: Fix bug #12961 (#13672)

* Force unaligned pointer and create test

* More cross-platform solution

* MSVC expects a proper order

* Remove useless clang macro
2019-01-28 21:36:00 +03:00
Vitaly Tuzov
ed2e1af3e8 Added performance test for blendLinear 2019-01-25 14:16:19 +03:00
Vitaly Tuzov
266725a378 blendLinear() reworked to use wide universal intrinsics 2019-01-25 14:16:20 +03:00
Alexander Alekhin
631b246881 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-01-22 18:00:34 +00:00
Rostislav Vasilikhin
a6af9c75e9 a*b+c -> fma 2019-01-21 18:57:08 +03:00
Rostislav Vasilikhin
74ba4b7ae2 fixed (un)signed packing s16 -> u8 2019-01-21 18:10:29 +03:00
Rostislav Vasilikhin
6de86e325f fixed (un)signed packing s16 -> u8 2019-01-21 18:01:44 +03:00
Alexander Alekhin
a84e11451b imgproc(test): RGB2YUV regression test 2019-01-21 16:07:20 +03:00
Rostislav Vasilikhin
48e471fdd4 YUV vectorizations ported to master from 3.4 2019-01-21 15:35:34 +03:00
Alexander Alekhin
0395b2ea9c Merge pull request #13650 from terfendail:shapedescr_wintr 2019-01-18 16:18:47 +00:00
Rostislav Vasilikhin
3812ae7949 Merge pull request #13649 from savuor:yuv_wide
YUV/YCrCb conversions rewritten to wide intrinsics (#13649)

* YUV: minors

* YUV42x conversions template-merged

* more template-merged YUV42x conversions; some NEON code removed

* rgb2yuv<float> vectorized

* yuv2rgb<float> vectorized

* memcpy removed

* Yuv2RGB<ushort> vectorized

* unused code removed

* rgb2yuv<ushort> vectorized

* rgb2yuv<uchar> vectorized

* v_pack_u used (up to +30% perf)

* yuv2rgb<uchar> vectorized

* fixed compilation
2019-01-18 19:06:29 +03:00
Vitaly Tuzov
a84bbc62b1 boundingRect() reworked to use wide universal intrinsics 2019-01-18 18:31:54 +03:00
Alexander Alekhin
40959fcc61 Merge pull request #13637 from berak:fix_openvx 2019-01-18 14:56:31 +00:00
Vitaly Tuzov
78f80c35d2 Performance test for bounding rect estimation 2019-01-18 15:50:21 +03:00
Alexander Alekhin
ca00c1dce2 Merge pull request #13631 from terfendail:thresh_wintr 2019-01-16 15:45:26 +00:00
berak
53c2ebf7f6 fix openvx wrappers 2019-01-16 12:10:22 +01:00
Alexander Alekhin
133eb8d13a Merge pull request #13593 from brad-kelly:integral_avx512_ver34 2019-01-15 17:47:21 +00:00