Commit Graph

78 Commits

Author SHA1 Message Date
Alexander Alekhin
593a376566 Merge branch 4.x 2023-01-09 11:08:02 +00:00
Maksim Shabunin
8a62b03761
Merge pull request #22754 from mshabunin:c-cleanup
C-API cleanup for OpenCV 5.x (imgproc, highgui)

* imgproc: C-API cleanup

* imgproc: increase cvtColor test diff threshold

* imgproc: C-API cleanup pt.2

* imgproc: C-API cleanup pt.3

* imgproc: C-API cleanup pt.4

* imgproc: C-API cleanup pt.5

* imgproc: C-API cleanup pt.5

* imgproc: C-API cleanup pt.6

* highgui: C-API cleanup

* highgui: C-API cleanup pt.2

* highgui: C-API cleanup pt.3

* highgui: C-API cleanup pt.3

* imgproc: C-API cleanup pt.7

* fixup! highgui: C-API cleanup pt.3

* fixup! imgproc: C-API cleanup pt.6

* imgproc: C-API cleanup pt.8

* imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9

* fixup! imgproc: C-API cleanup pt.9
2022-12-14 18:57:08 +00:00
Rostislav Vasilikhin
d49958141e
Merge pull request #22925 from savuor:pytsdf_from_scratch
Fixes #22799

Replaces #21559 which was taken as a base

Connected PR in contrib: [#3388@contrib](https://github.com/opencv/opencv_contrib/pull/3388)

### Changes
OK, now this is more Odometry-related PR than Volume-related. Anyway,
* `Volume` class gets wrapped
* The same was done for helper classes like `VolumeSettings`, `OdometryFrame` and `OdometrySettings`
* `OdometryFrame` constructor signature changed to more convenient where depth goes on 1st place, RGB image on 2nd.
This works better for depth-only `Odometry` algorithms.
* `OdometryFrame` is checked for amount of pyramid layers inside `Odometry::compute()`
* `Odometry` was fully wrapped + more docs added
* Added Python tests for `Odometry`, `OdometryFrame` and `Volume`
* Added Python sample for `Volume`
* Minor fixes including better var names

### 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
2022-12-12 09:40:12 +03:00
Rostislav Vasilikhin
86c6e07326
Merge pull request #22863 from savuor:tsdf_tests_join
### Changes
* Duplicated code removal in TSDF tests by implementing them with fixtures and GTest params
  * e.g. separate OCL tests file removed
  * as a result, more test cases are covered
  * the same's done for perf tests

### 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
2022-12-06 12:15:39 +03:00
Rostislav Vasilikhin
a423b07149
Merge pull request #22845 from savuor:volume_interface_etc
Corresponding contrib PR: #3382@contrib

Changes

- Volume::raycast(): camera intrinsics can be explicitly passed to the function. If not, the ones from current volume settings are used
- getVolumeDimensions() renamed to getVolumeStrides() because they are strides actually
- TSDF tests: OpenCLStatusRevert and parametrized fixture
- ColorTSDF::integrate(): extra RGB projector is redundant, removed
- Minor changes
2022-11-24 17:16:18 +03:00
Rostislav Vasilikhin
2407ab4e61
Merge pull request #22178 from savuor:hash_tsdf_fixes
This PR contains:

- a new property enableGrowth which controls should the HashTSDF be extended during integration by adding new volume units or not
- a new method getBoundingBox which calculates the size of currently occupied data
- a set of tests to check that new functionality
- a fix for TSDF GPU reset (data is correctly zeroed now using floatToTsdf() function)
    minor changes
2022-11-22 09:24:41 +03:00
Rostislav Vasilikhin
a9d98bfb34
Merge pull request #22741 from savuor:hashtsdf_volposerot_fix
There's a bug which appears when volume pose contains non-trivial rotation.
It results in wrong depth integration which can be observed during raycasting 
or points/normals export.

- This PR fixes the bug for both CPU and OpenCL
- There is a reproducer for the bug
- The copy behavior of VolumeSettings fixed (now copy constructor creates a deep copy)
- Minor changes (e.g. unused vars removed)
2022-11-17 09:10:35 +03:00
Yuhang Wang
d976272d23
Merge pull request #22682 from TsingYiPainter:5.x
3D: Handle cases where the depth of Octree setting is too large

* Handle cases where the depth setting is too large
2022-11-03 07:15:17 +00:00
Rostislav Vasilikhin
a09bb3c2f6 doc fixes 2022-10-25 22:37:38 +02:00
Rostislav Vasilikhin
95ab8517ae trailing whitespaces 2022-10-25 02:58:55 +02:00
Rostislav Vasilikhin
a1820ff3d4 unused function removed 2022-10-25 02:45:42 +02:00
Rostislav Vasilikhin
097b0245da getScaledDepth -> getProcessedDepth 2022-10-25 02:45:28 +02:00
Rostislav Vasilikhin
52d82bb44a docs for Odometry+Frame 2022-10-25 02:44:12 +02:00
Rostislav Vasilikhin
8b7e586faa
Merge pull request #22598 from savuor:icp_oframe_readonly
Complement PR: #3366@contrib
Changes

    OdometryFrame losts its getters: a user can provide data at construction stage only, pyramids and other generated data is read-only now
    OdometryFrame is based on UMats: no TMat templates inside, CPU operations are done with UMat::getMat() method, chaining issues are solved ad-hoc
    No more Odometry::createOdometryFrame() method, frames are compatible with all odometry algorithms
    Normals computer is cached inside Odometry and exposed to API as well as its settings
    Volume::raycast() won't return the result in OdometryFrame anymore
    Added test for Odometry::prepareFrame*() & other test fixes
    Minor code improvements

TODOs:

    fix TODOs in code
    lower acceptable accuracy errors
2022-10-24 16:34:01 +03:00
Alexander Smorkalov
3857173845
Merge pull request #22287 from asenyaev:asen/disabled_compiling_warnings_5.x
Disabled compiling warnings in case of symbols in cmake for 5.x
2022-09-20 16:19:08 +03:00
Andrey Senyaev
752e5fdc26 Disabled compiling warnings in case of symbols in cmake for 5.x 2022-09-20 13:36:59 +03:00
Rostislav Vasilikhin
f92a1aa07d trying to fix MSVC compilation
double -> float warning

fix warnings in the rest 3d module files

extra var removed

try to fix warnings
2022-09-19 00:27:26 +02:00
Rostislav Vasilikhin
9ba4bb7355 initIntrisicParams2D() refactored
variables refactoring

levmarq fix

initIntrinsicParams2D() refactoring

undo LM fix

cameraCalcJErr: made a lambda; warnings fixed; vars rearranged & renamed, jacobian buffers, perViewErrors and allErrors fix, etc.

stereoCalibrate: internal vars in callback

stereoCalibrate: capture only useful variables

stereoCalibrate: perViewError fix + minors

rvecs and tvecs are not pointers anymore

no extra lambda

newObjPoints: no pointers

stdDevs: no pointers

_Jo removed: not used

Range::all() -> rowRange, colRange

param and mask are std::vectors now

indices shortened

tabs

less func-scoped vars; TODOs

less formatting & renaming changes

trailing whitespaces

less diff

less changes

less changes

Range::all() back

perViewErr ptr fix

NINTRINSIC captured

try to fix warning

trying to fix a warning

fix warnings, another attempt
2022-09-15 22:55:40 +02:00
Alexander Smorkalov
335d7bd16e
Merge pull request #22241 from savuor:normals_scale_test
More tests for normals
2022-08-24 10:25:55 +03:00
Alexander Smorkalov
3a02561c40 Merge pull request #22417 from savuor:levmarq_log_level_fix 2022-08-24 07:17:22 +00:00
Rostislav Vasilikhin
eb571b500b fixes warnings 2022-08-23 10:22:28 +02:00
Alexander Smorkalov
505bbab75b
Merge pull request #22413 from savuor:levmarq_log_level
LevMarq: log level lowered
2022-08-23 09:22:39 +03:00
Rostislav Vasilikhin
3cf3e3f6f7 LevMarq: log level lowered 2022-08-22 23:53:49 +02:00
Rostislav Vasilikhin
232a83ecb8 check mask values 2022-08-22 16:07:07 +02:00
Alexander Alekhin
c25f776151 Merge branch 4.x 2022-08-21 15:27:31 +00:00
Rostislav Vasilikhin
48c10620cb depthTo3d: fixed bug, added regression test
RgbdNormals: setMethod() removed as useless

RgbdNormals: tests + cross product, to be fixed

+ cross product

LINEMOD: diffThreshold param added + tests fixed

minor

diffThreshold fix

points3dToDepth16U fix

normals computer diffThreshold fix

random plane generation fixed + diffThreshold fix

Rendered normals test rewritten to GTest Params

random plane generation: scale

RGBD_Normals tests: thresholds tuned

Rendered normals tests: 64F support added

Random planes normal tests rewritten to GTest Params

LINEMOD and CrossProduct fix

SRI threshold raised

NormalsRandomPlanes: thresholds raised

assert on unknown alg; minor

fix

frame size reduced

TIFF replaced by YAML.GZ

depthTo3d test changed

cv::transform is used

fix warning

nanMask()

flipAxes()

absDotPixel() + forgotten code

helper functions removed

RGBDNormals: checkNormals() and compare LINEMOD's pts3d to depth input

Rendered: another criteria; thresholds; LINEMOD's pts3d to depth input comparison

thresholds raised a bit

SRI slightly optimized

assert change

normal tests refactored, parametrized, split

trailing namespace, thresholds raised

SRI caching optimized a lot

normal tests rewritten to fixture, no loop

minor

runCase() joined with testIt()

thresholds were put into GTest params

ternary operator

RgbdNormalsTest merged into NormalsRandomPlanes; RgbdPlanes moved closer to tests

normal test minor refactoring

plane finder tests refactored to GTest Params

skip tests

thresholds raised

plane test minor

plane tests: timers dropped, nPlanes put into GTest Params; refactoring

generated normals tests: minor refactoring

flipAxes() templated

rendered normals tests refactored: thresholds to GTest Params

CV_Error -> ASSERT_FALSE
2022-08-19 20:16:08 +02:00
Rostislav Vasilikhin
869123d6f9 "FAIL() <<" replaced by "ASSERT_*() <<" 2022-07-24 18:40:55 +02:00
Rostislav Vasilikhin
02d864070a minor 2022-07-24 18:29:34 +02:00
Rostislav Vasilikhin
0b34d90dfa minor 2022-07-24 18:28:26 +02:00
Rostislav Vasilikhin
7bdacb8098 threshold comparison made more obvious 2022-07-24 18:27:35 +02:00
Rostislav Vasilikhin
d4e28f27b7 warpFrame test parametrized 2022-07-24 18:22:48 +02:00
Rostislav Vasilikhin
75a8e3e956 minor 2022-06-30 21:32:41 +02:00
Rostislav Vasilikhin
3c3eba868a floatL2 threshold raised a bit 2022-06-30 17:22:58 +02:00
Rostislav Vasilikhin
2ae7438c6b odometry tests fixed 2022-06-30 17:10:26 +02:00
Rostislav Vasilikhin
2b767f9bc8 whitespace fix 2022-06-30 16:51:01 +02:00
Rostislav Vasilikhin
94e5ae6043 depth generator moved from main repo to extra 2022-06-30 00:00:47 +02:00
Rostislav Vasilikhin
fd14b959cf warpFrame() rewritten, interface changed 2022-06-29 23:55:07 +02:00
Rostislav Vasilikhin
492d9dba1e warpFrame() tests big update 2022-06-29 23:51:07 +02:00
Rostislav Vasilikhin
44c0b58258 depth generator fixed at absent values 2022-06-29 23:45:33 +02:00
Rostislav Vasilikhin
6b2d1033bd warpFrame() test: more test cases 2022-06-27 01:24:39 +02:00
Rostislav Vasilikhin
162bd5be4c distCoeffs removed from warpFrame() signature 2022-06-27 01:23:07 +02:00
Rostislav Vasilikhin
d56e8f053f python depth generator: no numba, imageio -> PIL, requirements.txt 2022-06-26 22:33:31 +02:00
Rostislav Vasilikhin
bf8f7b4e57 more scale stuff removed 2022-06-23 23:53:57 +02:00
Rostislav Vasilikhin
770c0d1416 1. removed (almost all) additional scale parameter mentions
2. refactored funcptrs to switch/cases & more
2022-06-23 23:47:08 +02:00
Rostislav Vasilikhin
c12d4c82df python Odometry scale test removed 2022-06-23 23:25:30 +02:00
Rostislav Vasilikhin
bee410c748 warpFrame() test draft + script generating test data 2022-06-23 23:18:59 +02:00
Saratovtsev
df490c6399 moving code from ICP+Scale 2022-06-14 13:40:14 +02:00
Wanli Zhong
b06544bd54
Merge pull request #21918 from No-Plane-Cannot-Be-Detected:5.x-region_growing_3d
Add normal estimation and region growing algorithm for point cloud

* Add normal estimation and region growing algorithm for point cloud

* 1.Modified documentation for normal estimation;2.Converted curvature in region growing to absolute values;3.Changed the data type of threshold from float to double;4.Fixed some bugs;

* Finished documentation

* Add tests for normal estimation. Test the normal and curvature of each point in the plane and sphere of the point cloud.

* Fix some warnings caused by to small numbers in test

* Change the test to calculate the average difference instead of comparing each normal and curvature

* Fixed the bugs found by testing

* Redesigned the interface and fixed problems:
1. Make the interface compatible with radius search.
2. Make region growing optionally sortable on results.
3. Modified the region growing interface.
4. Format reference.
5. Removed sphere test.

* Fix warnings

* Remove flann dependency

* Move the flann dependency to the corresponding test
2022-05-23 14:47:57 +00:00
Alexander Alekhin
8b3d2a57ad Merge pull request #21968 from No-Plane-Cannot-Be-Detected:5.x-randomSampling_bug 2022-05-17 21:17:29 +00:00
Klepikov Dmitrii
a99b4071a2
Merge pull request #20471 from ibvfteh:pointcloudio
GSoC module to save and load point cloud

* Add functionality to read point cloud data from files

* address issues found on review, add tests for mesh, refactor

* enable fail-safe execution and empty arrays as output

* Some improvements for point cloud io module

Co-authored-by: Julie Bareeva <julia.bareeva@xperience.ai>
2022-05-13 18:10:39 +00:00