Commit Graph

959 Commits

Author SHA1 Message Date
mworchel
aab390c51d Add mask support to SimpleBlobDetector 2018-02-19 17:54:27 +03:00
luz.paz
d05714995c Misc. modules/ cont. pt2
Found via `codespell`
2018-02-13 11:28:11 -05: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
Alexander Alekhin
12cd3b55ec Merge pull request #10756 from terfendail:orb_firstlevel 2018-02-01 18:34:57 +00:00
Vitaly Tuzov
26321795f7 Fixed assertion in ORB::setFirstLevel() 2018-02-01 16:58:35 +03:00
Vadim Pisarevsky
f780ee12a0 Merge pull request #10690 from terfendail:orb_firstlevel 2018-02-01 13:41:29 +00:00
Tomoaki Teshima
5f4b48da34 fix build error on Visual Studio 2013 and earlier 2018-01-31 18:22:09 +09:00
Vitaly Tuzov
205022ceee Fixed issue in ORB detection if firstLevel property is set above 0 2018-01-25 16:14:16 +03:00
Elena Gvozdeva
b97b650ab3 add HAL for FAST (#10362)
* add HAL for FAST

* add new interface
2018-01-24 01:48:06 +03:00
Maksim Shabunin
8b87c4b96a Fixed several warnings produced by clang 6 and static analyzers 2018-01-16 15:26:28 +03:00
Hamdi Sahloul
2d2499f610 BLOB - Support RGBA 2018-01-07 14:30:40 +09:00
Tomoaki Teshima
fe7b3f1228 clean up the code
* disable the warning in CMake, not int the code using pragma
2017-12-22 08:42:21 +09: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
Pavel Rojtberg
6fb9d42c3f Hid symbols in static builds, added LTO flags, removed exports from ts 2017-12-07 10:26:48 +03:00
Vadim Pisarevsky
f5dba12762 Merge pull request #10180 from alalek:ocl_avoid_unnecessary_initialization 2017-11-29 11:42:22 +00:00
Alexander Alekhin
0ed3209b00 ocl: avoid unnecessary loading/initializing OpenCL subsystem
If there are no OpenCL/UMat methods calls from application.

OpenCL subsystem is initialized:
- haveOpenCL() is called from application
- useOpenCL() is called from application
- access to OpenCL allocator: UMat is created (empty UMat is ignored) or UMat <-> Mat conversions are called

Don't call OpenCL functions if OPENCV_OPENCL_RUNTIME=disabled
(independent from OpenCL linkage type)
2017-11-28 14:02:42 +03:00
Pavel Rojtberg
6fbf0758bc Python: wrap Algorithm::read and Algorithm::write 2017-11-27 17:04:56 +01:00
Jcrist99
0608227e10 Merge pull request #9698 from abratchik:parse.doxygen
Support @deprecated tag in java wrappers (#9698)
2017-11-16 16:48:12 +03:00
Vitaly Tuzov
2eb61a4a99 AVX2 optimized implementation of FAST corner tracking migrated to separate file 2017-10-24 20:00:48 +03:00
Vitaly Tuzov
8d5a5d5ceb AVX2 optimizations for FAST corner tracking provided by Victoria Zhislina 2017-10-17 18:53:15 +03:00
Vladislav Vinogradov
26fe8bd4f2 made flann dependency for features2d optional
it will allow to build features2d even if flann module is not available
2017-10-13 14:59:39 +03:00
vipinanand4
39e742765a Merge pull request #9618 from vipinanand4:goodFeaturesToTrack_added_gradiantSize
Added gradiantSize param into goodFeaturesToTrack API (#9618)

* Added gradiantSize param into goodFeaturesToTrack API

Removed hardcode value 3 in goodFeaturesToTrack API, and
added new param 'gradinatSize' in this API so that user can
pass any gradiant size as 3, 5 or 7.

Signed-off-by: Vipin Anand <anand.vipin@gmail.com>
Signed-off-by: Nilaykumar Patel<nilay.nilpat@gmail.com>
Signed-off-by: Prashanth Voora <prashanthx85@gmail.com>

* fixed compilation error for java test

Signed-off-by: Vipin Anand <anand.vipin@gmail.com>

* Modifying code for previous binary compatibility and fixing other warnings

fixed ABI break issue

resolved merged conflict

compilation error fix

Signed-off-by: Vipin Anand <anand.vipin@gmail.com>
Signed-off-by: Patel, Nilaykumar K <nilay.nilpat@gmail.com>
2017-09-22 14:04:43 +00:00
Vadim Pisarevsky
f1695bdc38 Merge pull request #9678 from tomoaki0705:universalFastScore 2017-09-21 19:12:30 +00:00
Tomoaki Teshima
bf718b0865 use universal intrinsic in FAST 2017-09-21 18:28:15 +09:00
Vadim Pisarevsky
e70b75b51a Merge pull request #8820 from woodychow:multithread_sift_findScaleSpaceExtrema 2017-09-20 12:03:25 +00:00
Patel, Nilaykumar K
6857870412 Overloading getDefaultName method for Feature2D and its child classes
Signed-off-by: Vipin Anand <anand.vipin@gmail.com>
Signed-off-by: Prashanth Voora <prashanthx85@gmail.com>
Signed-off-by: Patel, Nilaykumar K <nilay.nilpat@gmail.com>
2017-09-14 23:22:18 +05:30
Maksim Shabunin
248e2c7d47 Fixed some issues found by static analysis 2017-09-08 12:22:12 +03:00
Alexander Alekhin
d57321f7c1 Merge pull request #9528 from berak:fix_bfmatcher_hamming2 2017-09-01 18:07:57 +00:00
berak
da208216ee features2d: fix BFMatcher.radiusMatch with HAMMING2 2017-08-31 17:24:02 +02:00
Alexander Alekhin
af09cb2834 Merge pull request #9347 from kschwan:fix-docs
Fix doxygen comment in BFMatcher
2017-08-22 13:55:03 +00:00
Jiri Horner
a5b5684670 Merge pull request #9330 from hrnr:akaze_ocl
[GSOC] Enable OCL for AKAZE (#9330)

* revert e0489cb - reenable OCL for AKAZE

* deal with conversion internally in AKAZE

* pass InputArray directly to AKAZE to allow distiguishing input Mat/UMat. deal with conversion there
* ensure that keypoints orientations are always computed. prevents misuse of internal AKAZE class.

* covert internal AKAZE functions to use InputArray/OutputArray

* make internal functions private in AKAZE

* split OCL and CPU paths in AKAZE

* create 2 separate pyramids, 1 for OCL and 1 for CPU
* template functions that use temporaries to always store them as correct type (UMat/Mat)

* remove variable used only in OCL path

causes unused variable warning

* update AKAZE documentation

* run ocl version only when ocl is enabled

* add tests for OCL path in AKAZE

* relax condition for keypoints angle
2017-08-16 16:46:11 +00:00
Martin Seyferth
e5f129424c brisk add detection threshold for custom sampling pattern 2017-08-15 11:41:04 +02:00
Kim Lindberg Schwaner
7f9fe6f1f2 Fix doxy comment for BFMatcher::create()
A missing asterisk caused doxygen to not generate documentation for the
BFMatcher::create() method.
2017-08-11 14:18:53 +02:00
Alexander Alekhin
94dbc35d92 features2d(test): more AKAZE tests 2017-08-03 22:54:45 +00:00
Alexander Alekhin
ad2e864a9a akaze: more fixes
- boundary checks
- div by zero guard
- fixed bilinear interpolation (another case)
- reduce memory allocation
2017-08-03 21:45:35 +00:00
Alexander Alekhin
e0489cb4a6 akaze: fix T-API interfaces, disable OpenCL code
- OpenCL kernels don't handle matrices properly. Assumptions are not checked.
- OpenCL/T-API integration is not correct.
2017-08-03 20:35:06 +00:00
Alexander Alekhin
2a8322ddbb akaze: uninitialized field 2017-08-03 20:04:21 +03:00
Alexander Alekhin
73c3d14a66 akaze: fRound -> cvRound, fix bilinear interpolation 2017-08-03 19:51:46 +03:00
Alexander Alekhin
f6ceeaa2e5 akaze: getAngle() -> fastAtan2() 2017-08-03 19:51:46 +03:00
Alexander Alekhin
6847cc9f1c akaze: remove usage of int8_t / uint8_t 2017-08-03 19:51:46 +03:00
Alexander Alekhin
411d36ff13 features2d(test): update descriptor regression test 2017-08-03 19:51:46 +03:00
Alexander Alekhin
63ae5f00b1 features2d(test): enable debug messages 2017-08-03 19:51:46 +03:00
Alexander Alekhin
43e0912516 akaze: resolve issue with using of uninitialized memory 2017-08-03 19:51:45 +03:00
Alexander Alekhin
64533009b3 akaze: optimize allocations 2017-08-03 19:51:45 +03:00
Alexander Alekhin
8aca8d90d6 akaze: replace ceil()
- integer division => divUp()
- cast to 'int' => cvCeil()
2017-08-03 19:51:45 +03:00
Alexander Alekhin
15aa0df23c Merge pull request #9297 from alalek:akaze_remove_rand 2017-08-03 09:21:22 +00:00
Jiri Horner
3166d0c667 Merge pull request #9249 from hrnr:akaze_part3
[GSOC] Speeding-up AKAZE, part #3 (#9249)

* use finding of scale extremas from fast_akaze

* incorporade finding of extremas and subpixel refinement from Hideaki Suzuki's fast_akaze (https://github.com/h2suzuki/fast_akaze)
* use opencv parallel framework
* do not search for keypoints near the border, where we can't compute sensible descriptors (bugs fixed in ffd9ad99f4, 2c5389594b), but the descriptors were not 100% correct. this is a better solution

this version produces less keypoints with the same treshold. It is more effective in pruning similar keypoints (which do not bring any new information), so we have less keypoints, but with high quality. Accuracy is about the same.

* incorporate bugfix from upstream

* fix bug in subpixel refinement
* see commit db3dc22981e856ca8111f2f7fe57d9c2e0286efc in Pablo's repo

* rework finding of scale space extremas

* store just keypoints positions
* store positions in uchar mask for effective spatial search for neighbours
* construct keypoints structs at the very end

* lower inlier threshold in test

* win32 has lower accuracy
2017-08-03 08:35:07 +00:00
Alexander Alekhin
8be1ba708e features2d: don't use rand(), because it is not thread-safe
Results are not stable with srand()
2017-08-02 23:48:54 +03:00
Jiri Horner
bb6496d9e5 Merge pull request #8951 from hrnr:akaze_part2
[GSOC] Speeding-up AKAZE, part #2 (#8951)

* feature2d: instrument more functions used in AKAZE

* rework Compute_Determinant_Hessian_Response

* this takes 84% of time of Feature_Detection
* run everything in parallel
* compute Scharr kernels just once
* compute sigma more efficiently
* allocate all matrices in evolution without zeroing

* features2d: add one bigger image to tests

* now test have images: 600x768, 900x600 and 1385x700 to cover different resolutions

* explicitly zero Lx and Ly

* add Lflow and Lstep to evolution as in original AKAZE code

* reworked computing keypoints orientation

integrated faster function from https://github.com/h2suzuki/fast_akaze

* use standard fastAtan2 instead of getAngle

* compute keypoints orientation in parallel

* fix visual studio warnings

* replace some wrapped functions with direct calls to OpenCV functions

* improved readability for people familiar with opencv
* do not same image twice in base level

* rework diffusity stencil

* use one pass stencil for diffusity from https://github.com/h2suzuki/fast_akaze
* improve locality in Create_Scale_Space

* always compute determinat od hessian and spacial derivatives

* this needs to be computed always as we need derivatives while computing descriptors
* fixed tests of AKAZE with KAZE descriptors which have been affected by this

Currently it computes all first and second order derivatives together and the determiant of the hessian. For descriptors it would be enough to compute just first order derivates, but it is not probably worth it optimize for scenario where descriptors and keypoints are computed separately, since it is already very inefficient. When computing keypoint and descriptors together it is faster to do it the current way (preserves locality).

* parallelize non linear diffusion computation

* do multiplication right in the nlp diffusity kernel

* rework kfactor computation

* get rid of sharing buffers when creating scale space pyramid, the performace impact is neglegible

* features2d: initialize TBB scheduler in perf tests

* ensures more stable output
* more reasonable profiles, since the first call of parallel_for_ is not getting big performace hit

* compute_kfactor: interleave finding of maximum and computing distance

* no need to go twice through the data

* start to use UMats in AKAZE to leverage OpenCl in the future

* fixed bug that prevented computing determinant for scale pyramid of size 1 (just the base image)
* all descriptors now support writing to uninitialized memory
* use InputArray and OutputArray for input image and descriptors, allows to make use UMAt that user passes to us

* enable use of all existing ocl paths in AKAZE

* all parts that uses ocl-enabled functions should use ocl by now

* imgproc: fix dispatching of IPP version when OCL is disabled

* when OCL is disabled IPP version should be always prefered (even when the dst is UMat)

* get rid of copy in DeterminantHessian response

* this slows CPU version considerably
* do no run in parallel when running with OCL

* store derivations as UMat in pyramid

* enables OCL path computing of determint hessian
* will allow to compute descriptors on GPU in the future

* port diffusivity to OCL

* diffusivity itself is not a blocker, but this saves us downloading and uploading derivations

* implement kernel for nonlinear scalar diffusion step

* download the pyramid from GPU just once

we don't want to downlaod matrices ad hoc from gpu when the function in AKAZE needs it. There is a HUGE mapping overhead and without shared memory support a LOT of unnecessary transfers.

This maps/downloads matrices just once.

* fix bug with uninitialized values in non linear diffusion

* this was causing spurious segfaults in stitching tests due to propagation of NaNs
* added new test, which checks for NaNs (added new debug asserts for NaNs)
* valgrind now says everything is ok

* add nonlinear diffusion step OCL implementation

* Lt in pyramid changed to UMat, it will be downlaoded from GPU along with Lx, Ly
* fix bug in pm_g2 kernel. OpenCV mangles dimensions passed to OpenCL, so we need to check for boundaries in each OCL kernel.

* port computing of determinant to OCL

* computing of determinant is not a blocker, but with this change we don't need to download all spatial derivatives to CPU, we only download determinant
* make Ldet in the pyramid UMat, download it from CPU together with the other parts of the pyramid
* add profiling macros

* fix visual studio warning

* instrument non_linear_diffusion

* remove changes I have made to TEvolution

* TEvolution is used only in KAZE now

* Revert "features2d: initialize TBB scheduler in perf tests"

This reverts commit ba81e2a711.
2017-08-01 12:46:01 +00:00
Alexander Alekhin
c455fc0334 Merge pull request #9133 from sovrasov:mser_add_test 2017-07-14 19:38:05 +00:00