Commit Graph

2999 Commits

Author SHA1 Message Date
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
Vitaly Tuzov
a202dc9a90 threshold() reworked to use wide universal intrinsics 2019-01-15 19:15:19 +03:00
Alexander Alekhin
0e9c90a0d9 Merge pull request #13610 from terfendail:morph_wintr 2019-01-15 11:22:00 +00:00
Brad Kelly
0165ffa90d Implementing AVX512 support for 3 channel cv::integral for CV_64F 2019-01-14 16:11:01 -08:00
Vitaly Tuzov
012e43de4b Morphology reworked to use wide universal intrinsics 2019-01-14 19:02:58 +03:00
Vitaly Tuzov
ea882d58c6 Added CV_ALWAYS_INLINE macro 2019-01-11 22:40:35 +03:00
Alexander Alekhin
7e2ebecd52 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-01-10 12:29:41 +03:00
catree
d745af6763 Add Matplotlib Perceptually Uniform Sequential colormaps (viridis, plasma, inferno, magma, cividis, twilight and twilight shifted). 2019-01-06 22:48:06 +01:00
Alexander Alekhin
85ade61ef7 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-12-27 18:15:50 +03:00
Vitaly Tuzov
7beb24553a Speedup filter2d by loop unrolling
Added filter2d tests for 16S
2018-12-25 14:40:48 +03:00
Alexander Alekhin
1dee705074 Merge branch '3.4' into merge-3.4 2018-12-22 05:40:15 +00:00
Alexander Alekhin
c0e11bb50e imgproc: revert "Speedup filter2d by loop unrolling"
Commit: 124011c321
PR: https://github.com/opencv/opencv/pull/13392

Sobel filter with 16S/16U datatype is broken.
2018-12-22 05:37:29 +00:00
Alexander Alekhin
26c5b846e6 Merge pull request #13392 from terfendail:filter_wintr 2018-12-21 11:00:44 +00:00
Vitaly Tuzov
124011c321 Speedup filter2d by loop unrolling 2018-12-20 21:18:42 +03:00
Vitaly Tuzov
131c09cf76 Fixed medianBlur implementation for hi-resolution images 2018-12-19 18:05:42 +03:00
Vitaly Tuzov
06f32e3b3e Reworked separable filter to use wide universal intrinsics 2018-12-19 17:50:09 +03:00
Alexander Alekhin
7fb70e1701 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-12-18 19:07:43 +00:00
vishwesh5
3eb2c940de
Fix Scharr and Sobel functions
Resolves #13375
2018-12-17 20:39:22 +05:30
Rostislav Vasilikhin
493611ace5 Merge pull request #13440 from savuor:rgb_wide
* conversions of color_rgb.cpp vectorized

* CL impl: coeffs updated

* unused constants removed

* CUDA color coeffs updated
2018-12-17 17:22:38 +03:00
Rostislav Vasilikhin
d99a4af229 Merge pull request #13379 from savuor:color_5x5
RGB to/from Gray rewritten to wide intrinsics (#13379)

* 5x5 to RGB added

* RGB25x5 added

* Gray2RGB added

* Gray2RGB5x5 added

* vx_set moved out of loops

* RGB5x52Gray added

* RGB2Gray written

* warnings fixed (int -> (u)short conversion)

* warning fixed

* warning fixed

* "i < n-vsize+1" to "i <= n-vsize"

* RGBA2mRGBA vectorized

* try to fix ARM builds

* fixed ARM build for RGB2RGB5x5

* mRGBA2RGBA: saturation, vectorization

* fixed CL implementation of mRGBA2RGBA (saturation added)
2018-12-14 17:01:01 +03:00
Alexander Alekhin
0c16d8f6c3 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-12-13 15:12:26 +03:00
Vitaly Tuzov
3903174f7c Merge pull request #13334 from terfendail:histogram_wintr
* added performance test for compareHist

* compareHist reworked to use wide universal intrinsics

* Disabled vectorization for CV_COMP_CORREL and CV_COMP_BHATTACHARYYA if f64 is unsupported
2018-12-13 14:20:22 +03:00
Alexander Alekhin
e82e672a93 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-12-06 07:06:58 +00:00
Namgoo Lee
83c7dfb6a4 Fix error in LineIterator example code in doc 2018-12-05 11:31:19 +09:00
Alexander Alekhin
2e0150e601 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-12-03 18:38:27 +03:00
Alexander Alekhin
2d5ccc7b3e imgproc(resize): update checks (static analyzers) 2018-12-03 13:13:48 +03:00
Alexander Alekhin
4e29e2fc7d imgproc(test): fix resize bitexact test
- use "random" area on input image
- avoid duplicate cases
2018-11-30 16:38:07 +03:00
Alexander Alekhin
5ed7d5a5d9 imgproc: local "CV_Assert(totalSampleCount > 0)" check 2018-11-28 20:16:37 +00:00