Fix bugs in checker_detector.cpp after resolving conflicts from PR #3599#3875
### This is the pull request for fixing some bugs in "Color Checker detection"
+ The link to pretrained tensorflow model for detecting Macbeth Color-checker:
https://drive.google.com/drive/folders/1JNWlmyfZKxiYQoYk6f0RzcGtHuiZq1Pz
#### 1, Detecting color-checker using Neural network
When loading the pretrained Macbeth color-checker detector model, and set it successfully to CCheckerDetector,
```
Ptr<CCheckerDetector> detector = CCheckerDetector::create();
if (!detector->setNet(net))
{
cout << "Loading Model failed: Aborting" << endl;
return 0;
}
```
then
```
if(!detector->process(image, cv::mcc::MCC24, color_checker_roi, 1, true, params)) {
std::cout<<"Color-checker not found\n";
}
Ptr<mcc::CChecker> checker = detector->getBestColorChecker();
Ptr<CCheckerDraw> cdraw = CCheckerDraw::create(checker);
cdraw->draw(image);
```
+ problem 1:
cdraw function failed to draw the correct result due to the following code block failed to update box in checker:
```
for (Ptr<CChecker> checker : checkers){
for (cv::Point2f &corner : checker->getBox())
corner += static_cast<cv::Point2f>(region.tl() + innerRegion.tl());
...
}
```
the corrected and test pass version is:
```
for (Ptr<CChecker>& checker : checkers){
std::vector<cv::Point2f> restore_box;
for (cv::Point2f& corner : checker->getBox()) {
corner += static_cast<cv::Point2f>(region.tl() + innerRegion.tl());
restore_box.emplace_back(corner);
}
checker->setBox(restore_box);
}
...
```
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
Migrate G-API module from main repo to opencv_contrib #3827
Related to https://github.com/opencv/opencv/pull/26469
Required https://github.com/opencv/opencv/pull/26527
CI: https://github.com/opencv/ci-gha-workflow/pull/201
TODO:
- [x] Python types generator fix
- [x] CI update
### 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
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] 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
New dnn engine #3794
This is a companion for https://github.com/opencv/opencv/pull/26056
- [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
slightly alter threshold for warpAffine optimization #3787
Merge with https://github.com/opencv/opencv/pull/25984
New`onfusionMatrixes[1]` is
```
[[45 0 0 0 0 0 0 0 0 0]
[ 0 57 0 0 0 0 0 0 0 0]
[ 0 0 58 2 0 0 0 0 1 0]
[ 0 0 0 43 0 0 0 1 0 0]
[ 0 0 0 0 39 0 0 0 0 1]
[ 0 0 0 1 0 49 0 0 1 0]
[ 0 0 0 0 0 0 52 0 0 0]
[ 0 0 1 0 0 0 0 54 0 0]
[ 0 0 0 0 0 0 0 0 47 0]
[ 0 1 0 1 0 0 0 0 2 44]]
```
which is about of pixel value 1 shift in each 4x or 5x pixel value.
### 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
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] 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
Correct some links in the tutorials #3771
### 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
- [ ] There is a reference to the original bug report and related work
- [ ] 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
C-API cleanup: imgproc_c and some constants #3642
* removed all mentions of imgproc C-API headers (imgproc_c.h, types_c.h) - they were empty, included core C-API headers
* replaced usage of several C constants with C++ ones (error codes)
* minor warning fixes in _cvv_ module
* fixed BIMEF test failures and very slightly optimized (there is a _lot_ of room for the further optimization)
* dummy commit to rerun tests
* fixed contrib tests
* seem to fixed one more opencv_face test
* maybe adding some whitespaces will help? )
* hopefully fixed the remaining test failures
* conditionally turn off DataType<uint>, because equivalent type traits is now defined in core (after adding CV_32U)
* temporarily disabled integral tests in cudev
Connected PR in main repo: [#22925@main](https://github.com/opencv/opencv/pull/22925)
### Changes
`OdometryFrame` constructor signature changed to more convenient where depth goes at 1st place, RGB image at 2nd.
This works better for depth-only `Odometry` algorithms.
### 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
cudacodec::VideoReader add colour format selection functionality
* Add capacity to select different colour formats for each decoded frame produced by cudacodec::VideoReader.
Updated accompanying test.
* Address warning
Use texture Object to make cv::cuda::HoughSegmentDetectorImpl::detect() thread-safe
* Use texture Object to make HoughSegmentDetectorImpl::detect() thread-safe
* Use parameter useRoi correctly in HoughLinesProbabilistic cuda test
Signed-off-by: Ron Evans <ron@hybridgroup.com>
Co-authored-by: airtop-bast <airtop-bast@northvolt.com>
Co-authored-by: Ron Evans <ron@hybridgroup.com>
Pass cv::VideoCaptureProperties to VideoReader FFmpeg source
* Add missing codecs to cudacodec which uses Nvidia Video Codec SDK including checks to ensure codec used in input video file is supported on the current device.
* Allow VideoCaptureProperties to be passed to VideoCapture on initialization.
Include test for VideoReader but not for VideoCapture, assume pass through successful.
Use propertyId instead of c++ keyword property.
Remove unecessary error checks (parsers error is dependant on source) and output more informative exception.
* Prevent, fall back to CuvidVideoSource if VideoCapture params are passed and initialization fails and add test for this.
* Remove magic number from get methods, and make the types consistent with VideoCapture::get
Fix documentation.
* Add wrapper macro's and remove unecessary parameter from get().
Uniqueness ratio support for cuda::StereoBM
* Naive implementation of uniqueness ratio option for cuda::StereoBM.
* Optimized memory consumption in cuda::stereoBM with uniqueness check.
* Got rid of line_disps array.
* Reduced line_ssds.
* Apply streams for all parts of cuda::stereoBM::compute.
* Added perf test for CUDA stereoBM with uniqueness check.
* Optimized global memory transactions.
* Restored sync data transfers as they use stack variables.
* Do not use constant memory in stereoBM to exclude stream races.
* Code review fixes.
Add writing encoded video streams to disk when streaming from RTSP sources using cudacodec
* Add missing codecs to cudacodec which uses Nvidia Video Codec SDK including checks to ensure codec used in input video file is supported on the current device.
* Update cudacoded to
1) automatically write the raw encoded video stream to a video file and,
2) use less GPU memory by more closely mirroring the Nvidia samples. Specifically querying the decoder for the number of decode surfaces (h265 commonly uses 4) instead of always using 20 and not using adaptive deinterlacing when the video sequence is progressive. Additional updates to mirror the Nvidia sample include initializing the decoder so that HandleVideoSequence() gets called every time before the decoder is initialized, ensuring all the parameters for the decoder are provided by nvcudec.
Added facility to decode AV1, not tested as VideoCapture doesn't return a valid fourcc for this.
Add facility to decode MPEG4 video - requires modification to VideoCapture see pull request.
* Prevent adding parameter sets twice and add zero padding to output files to that they play in vlc.
Notes: VideoCapture - returns mpeg as the codec for mpeg4 files, so files written as .m4v from mpeg4 sources cannot currently be decoded. This is also true for AV1 sources where cap.get(CAP_PROP_FOURCC) returns 0.
Added mpeg4 test file which can be decoded when VideoCapture adds the extra_data.
* Update to account for the extraData being passed from cap.retrieve instead of appended to the first packet.
* Update to be compatible with changes to VideoCapture
* Remove redundant test.
* Add check to ensure retrieve is successful.
* Remove writeToFile and allow VideoReader to return raw encoded data at the same time as decoded frames.
* Fix missing documentation.
New odometry Pipeline
* try to build it
* colored kinfu works
* minor fixes
* try to make it workable
* it works
* colored kinfu works
* update large_kinfu
* replace ICP with DEPTH; delete extra comments
* comments fix
* minor fix
* minor fix
* review fix
* docs fix
* minor fix
* remove extra changes
* createOdometryFrame fix
* add comment
Co-authored-by: channings <chen_lingchi@163.com>
Add Radon transform function to ximgproc
* resolve rebash conflict
* add test for hough_space_transform
* add perf for hough_space_transform
* add sample for hough_space_transform
* fix compatible issue and trailing space
* fix EOF issue
* resolve rebash conflict
* update radon transform
fix always cropping corner when rotate
transpose the output - now each column is integral
add support for float number
add comment
* add float type to perf test
* add float type to accu test
* update document
* fix trailing space
* resolve rebase conflict
* Resolve coding style issues
aruco: fix subpixel coordinates in interpolateCornersCharuco
* adjust sub-pixel coordinates before cornerSubPix
* add test for ChArUco board subpixel accuracy
Fix cudacodec so that it can use streams other than the default
* Add stream property to CUVIDPROCPARAMS so that the post processing and mapping (cuvidMapVideoFrame) of a video frame to cuda from the hardware decoder can use streams other than the default.
* Use standard OpenCV StreamAccessor::getStream() method for returning the raw cuda stream.
ICP Docs
* add first info
* add main info
* minor fix
* defgroup fix
* move docs to rgbd.hpp
* try to fix
* add f
* fix with f
* minor fix
* final fix
* whitespace fix
* info fix
* uppercase letter
* create md docs
* try to do math in md
* first draft
* minor fix | add to the web docs
* minor fixes
* minor fixes
* add T
* minor fix of meaning
* Update kinfu_icp.markdown
* Update kinfu_icp.markdown
* More edits
* whitespace
* minor changes
Co-authored-by: Rostislav Vasilikhin <savuor@gmail.com>
Link wechat_qrcode with libiconv on MinGW
* wechat_qrcode: explicit iconv dependency
Iconv isn't automatic on all systems, non-POSIX have a separate
libiconv that needs to be found in CMake and linked.
* Don't disable iconv on MinGW
* wechat_qrcode: Disable iconv if not found
Bugfix: barcode module
* bugfix:
1. jni crashing while coping vector<BarcodeType> to list;
2. in python/java, assertion fails when calling decode(), because of (2D Mat).copyTo(vector<Point>);
3. the algorithm of decodeROI() is wrong.
* add python and java tests
* use constexpr
1D Barcode support
* init barcode interface.
* barcode: update readme.
* now it is just interface, do not need CMakeLists to compiler it.
Signed-off-by: Killer_Quinn <51754303+Certseeds@users.noreply.github.com>
* fix-trailing whitespace of docs-build.
Signed-off-by: Killer_Quinn <51754303+Certseeds@users.noreply.github.com>
* Branch: Barcode-Support,replace vector<RotateRect> to vector<vector<Point2f>>,
barcodeDirectly now just output one string,
this commit is still only contain interface, barcode module will not be compile.
Signed-off-by: Killer_Quinn <51754303+Certseeds@users.noreply.github.com>
* add implementation details
* fix doc bug
* not generate python bindings temporarily
* add barcode group for doxygen
* generate python bindings and improve performance
* remove win10 build warnings in detect stage
* remove win10 build warnings on decode stage
* add samples and accuracy tests
* Update README.md
* add tutorial, part of content is to be done.
* add decode and EAN part in tutorial
* refactor imports
* delete decodeDirectly api for simplicity
* add super resolution and optimize code format
* Use @snippet / @include doxygen statements for embedding code from .cpp files
* improve decoding performance
* optimize code and slightly improve the performance
* add ean8 support
* add references and use uint type for some non-negative variables
* support java bindings
* optimize wording in source code and documentation
* refine code
* whitespace
* bugfix: forget to clear list
Co-authored-by: darkliang <11710911@mail.sustech.edu.cn>
Co-authored-by: WangberlinT <11711613@mail.sustech.edu.cn>
Co-authored-by: Junhao Liang <43094337+darkliang@users.noreply.github.com>
* python binding for viz
tutorial widget pose
reset
test_tutorial 2 & 3
sample py
9 test sur 22
test PyWCloudNormal
16 sur 22
end?
python test
* oops
* bug
* comment but( this is not solved https://github.com/opencv/opencv_contrib/pull/2882#discussion_r591659839
* review 2
* oversight
* oversight oops
* viz: move out Py* classes from public C++ headers
* viz: recover PyColor
Co-authored-by: Alexander Alekhin <alexander.a.alekhin@gmail.com>
Pose Graph rewritten without Ceres
* Works well on g2o dataset, cumulative:
1. Pose3d done w/o Eigen types;
2. PoseGraph nodes vector<Node> -> map<int, Node>
3. Eigen is not used in cost function or parametrization
4. Cost function debugged & fixed (original one was wrong), rewritten from Automatic to Analytic
* g2o dataset reading added to PoseGraph
* sparse solver fixes from DynaFu draft
* Eigen cost function and parametrization removed + g2o reading fixed
* refactored: pose error, pose graph edge, pose graph node
* sparse solve: templated
* MyOptimize(): 1st version
* several fixes and TODOs for future
* sparse block matrix: val functions, template type
* works at Ceres quality (cleanup needed)
* MyOptimize() is set to default optimizer
* Ceres thrown away, PoseGraph class and header/source code reorganized
* pose, node, edge -> nested for PoseGraph
* warnings fixed
* jacobiScaling disabled for better performance + minors
* trailing whitespace fixed
* more warnings fixed
* message added: Eigen is required for build + minors
* trying to fix warning
* try to fix "unreachable code" warning
* trying to fix unreachable code, pt.3
* trying to fix unreachable code, pt. 5
* trying to fix unreachable code, pt. the worst + minors
* try to fix unreachable code, pt. the ugliest
* trying to fix unreachable code, pt. the grumpiest
* cout -> CV_LOG_INFO
* quat matrix functions moved outside cv and kinfu namespaces
* unused function fix
* pose graph made public (but in detail namespace) + test for pose graph
* minor: prints
* Pose Graph interface settled
* Pose graph interface and its use updated
* cos -> std::cos
* cout -> CV_LOG_INFO
* pose graph interface updated: implementation
* Pose Graph Node and Edge: extra fields dropped
* more minor refactor-like fixes
* return and finish condition fixed
* more updates to test
* test disabled for Debug builds because 400 sec is too much
* whitespace
* Disable pose graph test if there's no Eigen
* more unused vars
* fixing unused function warning
* less includes
* "verbose" removed
* write obj to file only when debug level is raised
* License + include guard
* skip test using tags and SkipTestException
* suppress "unused function" warning
* minor
RGBD tests refactoring
* add GPU and CPU versions of tests
* reduce time for demo show
* add assert info and scene minor fix
* add display to perf_test
* replace extra code by function in perf_test
* add display func for tests
* add settings class for test
* remove extra code
* replace scene in perf test
* main dug fixed
* fix the same bug
* fix
* docs fix
* minor fix
* namespace fix
* tsdf cpu getnormal fix
* add folder ocl with simple tests
* build error fix
_filterTooCloseCandidates was occasionally not choosing the biggest
contour of a candidate group.
Firstly, if the biggest contour of a candidate group happened to be
the first candidate of that group, it would never be chosen due to the
comparison loop skipping it.
Secondly, contour sizes were being compared by their circumference
(via counting the number of points in a contour) rather than area.
In some cases it is possible for a smaller candidate to have more
points than a bigger one. This was fixed by comparing the contour
area as defined by the contour's corners.
Remove normalization in cv::stereo::QuasiDenseStereo getDisparity().
* Remove normalization in getDisparity. The function returns CV_32F disparity maps with nan values for unknown matches.
* Switch to GTEST and replace license header
New HashTSDFVolumeGPU class
* create new class
* rewrite makeHashTSDFVolume
* it builds
* minor fi
* raycast - done
* all code builds
* Docs fix
* fetch_normals fix
* I want it to work
* minor fix
* valid points checking passed
* it works!
* minor fixes
* warning fix
* last replacements
* warning fix
* create hash_tsdf.cl
* add preCalculationPixNormGPU
* add integrateVolumeUnitGPU
* Docs fix
* create simple volume table
* add functionality to the table
* add new functions
* create new hash table implementation
* minor fix
* create new hash tsdf implementaton
* add expand feature
* minorfix
* error fix
* it builds
* new hash table work
* Docs fix
* warnings fix
* warning fix 1
* warning fix 2
* warning fix
* remove extra coments
* create new function integrateAllVolumeUnitsGPU
* add hash table function
* extend kernel signature
* minor fix
* extent Volume_NODE signature and add functionality
* kernel args fix
* smth
* minor fix
* kernal args fix
* try to fix reading bug
* hash table fix
* add totalVolUnits feature
* it builds
* minor fix
* integrate fix
* fix work with table
* minor table fi
* I am stumped
* try to fix
* add checking to find error
* add copyto
* vol2cam fix
* try to fix
* we are the champions
* remove some comments
* remove last comments
* docs fix
* warning fix
* warning fix 1
* warning fix 2
* create raycast kernel
* extend raycast gpu signature
* minor fix
* integrate all volUnits - done
* docs fix
* warning fix
* extend raycast signature
* raycast work
* bug fix
* calc point4 fix
* minor fix
* add _at function
* raycast done, but work incorrect
* fin dug
* bug fix
* getNorm works correctly
* minor fix
* raycast - done
* minor fixes
* docs fix
* warning fix
* minor fix
* minor fix
* warning fix
* warning fix 1
* win warning fix
* mac fix
* win debug fix
* mac cl warning fix
* allCam2vol fix
* rename num with bufferNum
* remove nums hardcode
* minor fix
* change logic of calculating hash
* replace float16 by vload16
* replace true with false in zFirstMemOrder
* poses fix
* add new tests
* debug print
* debug print 1
* replace [] with .s
* minor fix
* minor fix 1
* remove print
* hashtsdf work fix
* hashtable fix
* resrite hashtasble update
* test_tsdf fix
* override warning fix
* docs fix
* mutex fix
* setUseOptimizes replace false with true
* minor fix
* merge with master
* all minor fixes
* add CPU code for debug
* settings set
* move code from hpp to cpp
* minor opencl fix
* fid bug
* coment fix
* minor fix
* bug fix
* integrate fixed
* speed up
* remove extra code
* raycast fix, but still not work
* raycast fix
* HT refactoring: constants
* HT refactoring: calc_hash()
* HT refactoring: methods set shortened
* no typedef VolumeIndex
* fix a bug in CPU version
* VolumeIndex
* identation
* HashTSDF refactoring: a lot of things
* less TODOs
* lastVisibleIndex dropped from HT
* HT refactor: find -> findRow
* interpolate & getNormal small hash: no queried
* totalVolUnits, indexes -> volumeUnitIndices, better iteration
* raycast artifacts fixed
* interpolation in getNormal is on
* minors
* findRow() refactored
* volStrides, lastVolIndex, volDims, neighbourCoords
* normals, vectorization
* interpolation in getNormalVoxel()
* no 16*16*16, use volumeUnitResolution instead
* resolution, stride...
* raycast: cur idx, etc.
* CPU debugging code removed
* volUnitsData moved to OpenCL memory
* raycast: no copy
* allocate accelerated a bit
* hash_tsdf.cl: pointers fixed
* allVol2cam, poses moved to kernel; rowRange for volUnitsData init
* TSDF voxel: constructor; row range fixed
* rowRange
* pixNorms fix + minors
* depth is now UMat
* markActive is done on GPU, lastVisibleIndices and isActiveFlags moved to GPU
* CL: minor
* volumeUnitIndices -> GPU
* ToyHashMap instead of HT, volumeUnitIndices removed, lastVolIndex removed,
+ a lot of debugging code
* warning about local pix capacity
* CPU allocation: find in global HT first
* ToyHashMap: -> tsdf_functions.hpp
* debugging code + to be removed
* ptr -> at
* volumeUnitResolution is limited to a power of 2
* rename ToyHashMap to ToyHashSet, hashMap to hashTable
* minor
* getNormalVoxel .cl: no float conversions
* getNormalVoxel does not need voxelSizeInv anymore; orig and dir pre-scaled to get rid of extra multiplication
* minor fix
* linux critical bug fix
* docs fix
* mac warning fix
* remove extra test code
* linux warning fix
* remove comments
* capacity = 2048
* capacity = 1024
* hashtables fixes
* minor code removement
* change pixNorm calculation
* remove buff_lvl and neighboorCoords; rename degree
* move volStrides to HashTSDFVolume
* HashTSDFVolumeGPU constructor fix
* move preCalculatePixNormsGPU to tsdf_functions
* minor code removement
* replace copyto() with getUMat()
* remove debug code
* replace copyTo with getUmat again
* replace types in cl
* remove NAN_ELEMENT
* remove Volume_NODE struct and findRow()
* make hash_divisor constant
* uncomment camTrans
* rename data; remove extra val
* fix merge conflict
* create empty UMat
* cl fix
* build error fix
* clear HashTSDFVolumeGPU()
* use constuctor delegation at HashTSDFVolumeCPU
* remove cam2volTransGPU
* add minor fix
Co-authored-by: Saratovtsev <artem.saratovtsev@intel.com>
Co-authored-by: Rostislav Vasilikhin <rostislav.vasilikhin@intel.com>
The relevant bug was reported in https://github.com/opencv/opencv_contrib/issues/1612
The _xi was erroneously applied at points re-projection to camera plane.
_xi parameter was already taken in use while projection of points to unit sphere.
deltaCIEDE2000_ fix into the MCC module
* deltaCIEDE2000_ fix, did not pass the test case 17 and 19 of Gaurav Sharma's test data
* Update ccm test case
Added stream support on hough circles, lines and segments
* Added stream support on hough circles lines and segments
- Passed the stream to the different cuda, OpenCV and thurst library calls
- Replace all device by cuda synchronizes
- Added extra synchronize calls after device to host transfers
- Replaced the cuda globals by allocated values
* Fixed missing include for CUDA 8
Co-authored-by: william.fink <will@recurse.io>
* Added BEBLID local feature descriptor
* Solved format problems, moved descriptor data to .hpp files and added BeblidSize enum
* Deleting guards from BEBLID parameter files
* Using int for the BeblidSize, using at<> to access matrix and releasing descriptors when no keypoints are detected.
freetype2: Fix comments in freetype.hpp and README.md
* freetype2: Update README.md
* freetype2: Update freetype.hpp
* freetype2: remove new blank line
* Update README.md
- Remove dots from the Headers
- Align number of === / --- symbols on the next line
* freetype: remove comment for color.
Add depth_factor argument in rescaleDepth and typedef dynafu::Params for backwards compatibility
* Add depth factor argument (default = 1000.0) to rescaleDepth to
potentially support TUM type datasets
* typedef dynafu::Params as kinfu::Params for compatibility
Color Calibration Algorithm Implementation Revised
* Add utils, io helpers, the operations for linearization and distance
* Add the code for color, colorspace, linearization and ccm computation
* Add sample code for color correction
* Add the dependency to opencv_imgcodes in CMakeLists.txt
* Add the color correction tutorial, introducing build steps and
parameters
* Add sample code to color correction tutorial
* Add color correction algorithms introductions
* Update color_correction_model.markdown
* Fix warnings of whitespace, undeclared function, shadow variables.
* Fix the warnings of shadow variables, unused variable in base class.
Fix the error whitespace and 'EOF' on the docs.
* Fix the warnnings on win & macos
* Fix bugs & support Vinyl ColorChecker
* fix shadow variables warning & code style
* update document for sample
* update license
* fix linearize.hpp
* Add basic io, utils, operations helpers.
Implement color distance.
* Implement color, colorspace, linearization and ccm features.
* Add the dependencies to opencv_imgcodecs in CMakeLists.txt
* Add color correction model sample code.
Co-authored-by: Chenqi Shan <shanchenqi@huawei.com>
* Add the index markdown of color correction tutorial.
Co-authored-by: Chenqi Shan <shanchenqi@huawei.com>
* Add the introduction for color correction sample.
* Split operations into .hpp and .cpp
* Split mcc, color, colorspace and linearize into .cpp & .hpp
* Update test cases
* Split distance, io and utils into cpp & hpp.
Refer ccm.hpp in entrypoint header and update realted refs in sampe & tutorial
* add static method
* fix shared_ptr
* fix markdown for new version
* delete useless include message
* update unittests
* update docs & fix bugs for InitialwhiteBalance()
* update doc for doxygen
* update doc&DigitalSG
* replace whitespace for utils.hpp&color.hpp
* update getilluminants,imgcodes,
* Fix Mat wrapper over data from C arrays, fix doxygen's @snippet instead of direct code.
* remove array from color.h
* remove hpp from include/mcc/
* add hpp to opencv/model/mcc/
* dst unsolved
* remove bugs about dst
* add make passed
* update codes using the structure "impl"
* update documents
* update ccm member for class ColorCorrectionModel
* remove macro CV_EXPORTS_W for codes in src/*.hpp
* move class Impl private
* remove unnesasary notice
* remove trailing whitespace
* update documents&samples
* move typedef MatFunc into class and move dead codes
* minimize list of required headers, add getCCM() method
* move type: information for parameters
* move underscores _ in public headers
* add @defgroup for ccm
* move <iostream> and add getloss() method for class ColorCorrection Model
* update sample/color_correction_model.cpp
* add getIOs() function for minimize initialization of IO variables
* mcc(ccm): apply clang-format
* mcc(ccm): fix documentation, code style
* remove duplicate enum values
* add prefixes for enum values
* update codes using cv_Error
* update test_ccm file
* update test_ccm file
* update sample --help
* mcc: reduce global initializers
* update function naming style
* update formulas and note for ccm.hpp
* add const value
Co-authored-by: Chenqi Shan <shanchenqi@huawei.com>
Co-authored-by: Jinheng Zhang <zhangjinheng1@huawei.com>
Co-authored-by: Zhen Ju <juzhen@huawei.com>
Co-authored-by: Longbu Wang <wanglongbu@huawei.com.com>
Co-authored-by: shanchenqi <582533558@qq.com>
Added Python wrapping and documentation for alphamat module
* updated documentation with more results for alphamat module
* Updated the image links in the tutorial
* Included cite
* Edited Documentation
Edited the Viz "getWindowByName" documentation so it reflects the actual behaviour of getWindowByName. More specifically, that "Viz - " is not prefixed automatically to the window name given by the user if they haven't prefixed "Viz - " already.
Fixes the following compiler error:
rgbd/test/test_dynafu.cpp:44:17: error: 'Params' is not a member of 'cv::dynafu'
44 | Ptr<dynafu::Params> params;
| ^~~~~~
Fixes two errors when building with the options WITH_CUDA=ON and BUILD_CUDA_STUBS=ON on a machine without CUDA.
In the cudaarithm module, make sure cuda_runtime.h only gets included when CUDA is installed.
In the stitching module, don't assume that cuda is present just because cudaarithm and cudawarping are present (as is the case when building with the above options).
original commit: 22ee5c0c4d
New HashTSDF implementation
* create new variables
* rewrite reset()
* first valid version of new HasHTSDF
* some warning fixes
* create lambda raycast
* reduce time raycast
* minor fix
* minor fix volDims
* changed _atVolumeUnit, reduce memory consumption
* delete older inmplemetation of atVolumeUnit
* changes _at
* AAA, I want to cry!
* it works!
* it works twice o_o
* minor fix
* new adding to volumes
* delete volDims at strust VolumeUnit
* new names of vars
* rename one var
* minor fix
* new resize volumes
* rename volUnitsMatrix
* minor fix in at function
* add tsdf_functions.hpp
* minor fix
* remove two args at _at function signature
* solved the link problem with tsdf_functions
* build fix
* build fix 1
* build fix 2
* build fix 3
* build fix 4
* replace integrateVolumeUnit to tsdf_functions and fix 2 warnings
* docs fix
* remove extra args at atVolumeUnit signature
* change frame params checking
* move volStrides to CPU class
* inline convertion functions in tsdf_functions
* minor fix
* add SIMD version of integrateVolumeUnit
* fix something :)
* docs fix
* warning fix
* add degub asserts
* replace vars initialization with reset()
* remove volDims var
* new resize buffer
* minor vars name fix
* docs fix
* warning fix
* minor fix
* minor fix 1
* remove dbg asserts
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
[GSoC] Add Submaps and PoseGraph optimization for Large Scale Depth Fusion
* - Add HashTSDF class
- Implement Integrate function (untested)
* Integration seems to be working, raycasting does not
* Update integration code
* Integration and Raycasting fixes, (both work now)
* - Format code
- Clean up comments and few fixes
* Add Kinect Fusion backup file
* - Add interpolation for vertices and normals (slow and unreliable!)
- Format code
- Delete kinfu_back.cpp
* Bug fix for integration and noisy odometry
* - Create volume abstract class
- Address Review comments
* - Add getPoints and getNormals function
- Fix formatting according to comments
- Move volume abstract class to include/opencv2/rgbd/
- Write factory method for creating TSDFVolumes
- Small bug fixes
- Minor fixes according to comments
* - Add tests for hashTSDF
- Fix raycasting bug causing to loop forever
- Suppress warnings by explicit conversion
- Disable hashTsdf test until we figure out memory leak
- style changes
- Add missing license in a few files, correct precomp.hpp usage
* - Use CRTP based static polymorphism to choose between CPU and GPU for
HashTSDF volume
* Create submap and submapMgr
Implement overlap_ratio check to create new submaps
* Early draft of posegraph and submaps (Doesn't even compile)
* Minor cleanup (no compilation)
* Track all submaps (no posegraph update yet)
* Return inliers from ICP for weighting the constraints
(Huber threshold based inliers pending)
* Add updating constraints between submaps and retain same current map
* Fix constraints creation between submaps and allow for switching between
submaps
* - Fix bug in allocate volumeUnits
- Simplify calculation of visibleBlocks
* Remove inlier calculation in fast_icp (not required)
* Modify readFile to allow reading other datasets easily
* - Implement posegraph update, Gauss newton is unstable
- Minor changes to Gauss newton and Sparse matrix. Residual still
increases slightly over iterations
* Implement simplified levenberg marquardt
* Bug fixes for Levenberg Marquardt and minor changes
* minor changes
* Fixes, but Optimizer is still not well behaved
* Working Ceres optimizer
* - Reorganize IO code for samples in a separate file
- Minor fix for Ceres preprocessor definition
- Remove unused generatorJacobian, will be used for opencv implementation
of levenberg marquardt
- Doxygen docs fix
- Minor preprocessor fixes
* - Reorganize IO code for samples in a separate file
- Minor fix for Ceres preprocessor definition
- Remove unused generatorJacobian, will be used for opencv implementation
of levenberg marquardt
- Doxygen docs fix
- Minor preprocessor fixes
- Move inline functions to header, and make function params const
references
* - Add Python bindings for volume struct
- Remove makeVolume(const VolumeParams&) Python binding due to compilation
issues
- Minor changes according to comments
* - Remove dynafu::Params() since it is identical to kinfu::Params()
- Use common functions for dynafu_demo
- Suppress "unreachable code" in volume.cpp
* Minor API changes
* Minor
* Remove CRTP for HashTSDF class
* Bug fixes for HashTSDF integration
TSDF preCalculation pixNorm
* create preCalculation function
* warning fix
* minor fix
* gpu preCalculation fix
* fix resolution bag in CPU
* gpu minor fix
* add pixNorms to intrinsics code
* minor fix
* minor fixes
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
TSDF Optimization
* getMat using fix
* min/max fix
* create WeightType
* create normals test
* bug fix
* complete normals test
* fix makeVolume and rewrite tests
* minor fixes
* add new normal tests
* replace operator() on lambda expressions
* make a valid points test
* minor fixes
* getNormalVoxel fix in tsdf and hashTsdf
* create renderPointsNormals
* replace Affine3f with Matx44f oin make volume
* minor fixes
* minor fix
* tmp
* create function interpolateVoxel for hashTSDF
* tmp
* right interpolation for HashTSDF
* rewrite intrinsics normalize
* minor fix
* rewrite GPU normalize
* start to write perf tests
* make Volume fix
* GPU normalize fix
* minor fix
* create perf test for raycast
* fix LNK2019 problem in perf test
* made all perf tests
* replace all Affine3f with Matx44f
* replace Point3i with Vec3i
* minor fix
* minor fix
* add CV_EXPORT_W
* build fix 1
* build fix 2
* build fix 3
* warning fix
* build test
* win test
* tests without HashTSDF
* create noparallel normals checking
* test without fetch
* test without fetch points normals
* add end line
* revert rotation() in hash_tsdf
* fix matrix multiplication order
* fetch points normals invoker fix
* warning fix
* warning fix
* Docs fix
* Hash push normals fix
* replace operator() with lambda in PushNormals
* warning fix
* create half type and types conversion
* error fix and preparation for CPU optimization
* replace all TsdfType with half
* minor fixes
* minor fix
* raycast fix
* conversion bug fix
* delete cout
* it's alive!
* improve conversion CPU
* warning fix
* warning fix 1
* intrinsics optimization
* minor fixes
* warning fix
* interpolate improve
* start to optimize GPU version
* vectorize tsdfToFloat
* CPU optimization
* GPU optimization
* minor fix
* minor fix
* Docs fix
* minor fixes
* add perf tests HashTSDF
* hashTSDF optimization
* minor fix
* interpolate improvement
* getNormalVoxel improvement
* added a new calculation pixNorm
* tsdfToFloat improve
* add flag USE_INTERPOLATION_IN_GETNORMAL to HashTSDF
* minor fix
* minor fix
* replace int with uchar
* getNormal improve
* minor fix
* minor fixes
* inline _at()
* inline _at()
* vectorize interpolation
* i tried :(
* minor fix
* try to improve _getNormalVoxel
* minor fix
* create new struct for tests
* minor test fix
* minor fix
* minor fix 1
* minor fix 2
* minor fix 3
* minor fix 4
* minor fix 5
* minor fix 6
* minor fix 7
* monor test fix
* monor test fix 1
* integrate improve
* rewrite interpolation in getNormalVoxel in HashTSDF
* intergrate improve tsdf
* minor Docs fix
* change autolock mutex place
* reduce interpolation calls
* new getNormal
* minor fix
* tmp mutex optimization
* rewrite mutex lock
* rewrite Settings structure as class
* minor Docs fix
* new inteprolateVoxel debug
* new inteprolateVoxel
* minor fix
* add new voxelToVolumeUnitIdx
* new integrate with lambda functions
* new integrate minor fix
* minor fix
* minor fix 1
* pixNorm, I try :(
* need to rewrite [][] part
* It's Alive
* omg? it works!
* minor fix
* minor fix 1
* minor fix
* add new environment check
* minor fix
* minor fix 1
* Docs fix
* minor fix 3
* minor fix
* minor fix 1
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
TSDF fixes and tests
* getMat using fix
* min/max fix
* create WeightType
* create normals test
* bug fix
* complete normals test
* fix makeVolume and rewrite tests
* minor fixes
* add new normal tests
* replace operator() on lambda expressions
* make a valid points test
* minor fixes
* getNormalVoxel fix in tsdf and hashTsdf
* create renderPointsNormals
* replace Affine3f with Matx44f oin make volume
* minor fixes
* minor fix
* tmp
* create function interpolateVoxel for hashTSDF
* tmp
* right interpolation for HashTSDF
* rewrite intrinsics normalize
* minor fix
* rewrite GPU normalize
* start to write perf tests
* make Volume fix
* GPU normalize fix
* minor fix
* create perf test for raycast
* fix LNK2019 problem in perf test
* made all perf tests
* replace all Affine3f with Matx44f
* replace Point3i with Vec3i
* minor fix
* minor fix
* add CV_EXPORT_W
* build fix 1
* build fix 2
* build fix 3
* warning fix
* build test
* win test
* tests without HashTSDF
* create noparallel normals checking
* test without fetch
* test without fetch points normals
* add end line
* revert rotation() in hash_tsdf
* fix matrix multiplication order
* fetch points normals invoker fix
* warning fix
* warning fix
* Docs fix
* Hash push normals fix
* replace operator() with lambda in PushNormals
* warning fix
* comments fix
Co-authored-by: arsaratovtsev <artem.saratovtsev@intel.com>
changed OpenCV license from BSD to Apache 2 license
* as discussed and announced earlier, changed OpenCV license from BSD to Apache 2. Many files still contain old-style copyrights though
[GSoC] Julia Bindings Phase 3
* Add Julia Bindings Phase 3
* Code style and warning fixes for Julia bindings
* Add copyright notice to .py files
* fix typo
* First commit
* Updated mcc
* Fixed build warnings.
* Fixed warnings v2
* Added support for providing regions to look for the chart
* Added the neural network based detector
* Added Documentation and tests
* Fixed Warnings
* Fixed test failure
* Fixed warnings v2
* Fix Warning attemp 3
* Replaced size_t by int to fix warning
* fixed one more
* Fixed a size_t
* Fixed some bugs
* Modified the private interface a bit
* Just adding doc of what -t and -ci numbers are
* significantly improved performance of the macbeth chart detector (by two orders of magnitude, perhaps)
* Fixed the suggested changes.
* Removed imcodes from precomp
* Fixed warnings and namespace issue
* Replaced occurance of Matx33f by InputArray
Co-authored-by: Gary Bradski <garybradskigit@gmail.com>
Co-authored-by: Vadim Pisarevsky <vadim.pisarevsky@gmail.com>
Rework tinyxml2 in this module to have namespace cv::tinyxml2
instead of just tinyxml2, so will not clash with other versions
of tinyxml2 at linkage time.
* Create CUDA backend support for dnn_superres
Not sure if this is the best way. Perhaps better to to create getter for 'net' so user can set backend themselves.
* Create seperate functions
* Remove trailing whitespace
[GSoC] Add new Hashtable based TSDF volume to RGBD module
* - Add HashTSDF class
- Implement Integrate function (untested)
* Integration seems to be working, raycasting does not
* Update integration code
* Integration and Raycasting fixes, (both work now)
* - Format code
- Clean up comments and few fixes
* Add Kinect Fusion backup file
* - Add interpolation for vertices and normals (slow and unreliable!)
- Format code
- Delete kinfu_back.cpp
* Bug fix for integration and noisy odometry
* - Create volume abstract class
- Address Review comments
* - Add getPoints and getNormals function
- Fix formatting according to comments
- Move volume abstract class to include/opencv2/rgbd/
- Write factory method for creating TSDFVolumes
- Small bug fixes
- Minor fixes according to comments
* - Add tests for hashTSDF
- Fix raycasting bug causing to loop forever
- Suppress warnings by explicit conversion
- Disable hashTsdf test until we figure out memory leak
- style changes
- Add missing license in a few files, correct precomp.hpp usage
Julia Bindings GSoC - phase1
* Julia Phase 1 first commit
* a few fixes to compile julia bindings on mac
* Readme changes
* Allow usage before installation and update README
* Add CxxWrap installation and fix Mac build bug
* CMake fixes and test refactoring
* add tests, fix trailing whitespace, disable array-vec conversion
* Fix trailing whiteline and warning
* Add module documentation and fix tests in CMake
* Change copyright block, CMake variable name
* copy => copy_if_different
* fix status dump and return lines
* Remove Julia_Found outside init.cmake
* change indentation
Co-authored-by: Vadim Pisarevsky <vadim.pisarevsky@gmail.com>
* Re-enabled the CUDA cascade classifier support using the openCV4.x FileStorage API.
* Re-enabled the CUDA cascade classifier tests.
Removed line of disabled code from cascade read.
Add Stroke Width Transform algorithm for Text Detection
* added SWTTextDetection code
* remove warnings from opencv_text compilation
* added bib for SWT Text Detection
* resolve initial pr suggestions
* change file name according to convention
* added optional OutputArray
* removed bug related to letter candidature
* added unit tests for stroke width transform text detection
* Added demo program
* made all minor edits required
* corrected findDataFilePath and removed manual allocation
* Added ArgumentParser
* corrected typo
* remove headers not allowed
* correct test case
* corrected float typecast warnings and test case
* remove final double correction and problematic test case
* test(swt): coding style
* finalminor bug corrections
ximgproc: [niBlackThreshold] add R parameter for Sauvola's method
* added R parameter to niBlackThreshold
* replace tab to 4 spaces
* add niblackThreshold test (sauvola)
* changed test case of sauvola
* Update modules/ximgproc/include/opencv2/ximgproc.hpp
Rework RLOF by using HAL universal instructions
* * distinguish between SSE2 and SSE 4.1 support
* SSE2 now implements no paralellized _blendv functiona and allows to compile with SSE2 instructions
* * add interface function do enable disable M-estimator framework
* bugfix blendv functions
* * make use of _mm_store and _mm_load functions in blendv_ps and blendv_epi function to fix compiler error
* * implement substitute of _mm_cvtepi8_epi16 and _mm_cvtepi16_epi32 when compiling with less than SSE 4.1 support
* * implement substitute of _mm_abs_epi16 when compiling with less than SSE 3 support
* * move _mm_abs_epi16 to SSE4 req.
* * add HAL intrinsic functions for RLOF ICA
* first tests are OK
* * HAL intrinsic functions -> RLOF ICA is ready now
* * add HAL functions for RLOF illumination model
* * add HAL for PLK ILL
* * add HAL functions for plk ica
* * commit HAL functions for beplk ica
* * add HAL functions for berlof ica
* * add HAL functions for BEPLK ILL
* *remove unused #ifdef
* * remove white spaces and unused variables
* * remove not used variables
* + remove get4BitMask function which contained pure SEE instructions
* * remove buffIdx which has not been used but initialized
* * fix replacement of #ifdef CV_SIMD128 with #if CV_SIMD128
* rename useMEstimator to setUseMEstimator
* *remove whitespace
* * remove unused variable abss
* * remove unused value
* * rename W_BITS1 to W_BITS since they contain same value
* Add a python wrap to the dnn_superres module
Adds a python wrap with approriate python bindings and tutorial
Also fixes some minor errors in the tutorials
* Remove trailing whitespaces
* Remove erring python binding
try to fix a windows build error
* Add python tests
Tests model that upscales an image x2
Test getter functions
* Add one more subdirectory
add 'test' subdir
* Adding constructor for kinfu_Params(). Allows users to configure parameters for KinFu Algorithm
* Trailing whitespace correct
* Add constructor for TSDF Initial Pose. Allowed parameters are Matx33f,Vec3f and Matx44f. Also added function setInitialVolumePose to handle Matx44f param data type.
videostab: Fix out of range data usage
* videostab: Add simple UTs for video stabilizers
Reproduces issue #5178
* videostab: Fix out of range data usage
Fixes issue #5178
* videostab: Use cv::Range for ranges instead of std::pair
Add python bindings to cudaobjdetect, cudawarping and cudaarithm
* Overload cudawarping functions to generate correct python bindings.
Add python wrapper to convolution funciton.
* Added shift and hog.
* Moved cuda python tests to this repo and added python bindings to SURF.
* Fix SURF documentation and allow meanshiftsegmention to create GpuMat internaly if not passed for python bindings consistency.
* Add correct cuda SURF test case.
* Fix python mog and mog2 python bindings, add tests and correct cudawarping documentation.
* Updated KeyPoints in cuda::ORB::Convert python wrapper to be an output argument.
* Add changes suggested by alalek
* Added changes suggested by asmorkalov
build error fix: remove trailing whitespaces, casting types
minor edits based on alalek's feedback
removing trailing whitespace
using std::array for LUT argument
Fix cudacodec::VideoReader::nextFrame python bindings
* Signla to python bindings generator that nextFrame's OutputArray is a GpuMat.
Also remove duplicate test in cudacodec
* cudacodec: drop CV_GPU, wrap GpuMat only
* Make it explicit that frame in nextFrame is GpuMat and cannot be multiple types as implied by OutputArray
OpenCV fix 14774 breaks cudacodec
* Example to describe comilation issue
* Added required changes, builds with -DWITH_FFMPEG=ON|OFF
* Working with standard ffmpeg cap.
* Changed cudacodec to use new retrieveRaw() function, to retrieve the raw encoded bitstream, from the videoio module instead of its own implementation.
* Fix cv::cudacodec::VideoWriter
* Update to use VideoContainer
* Remove header used in testing
* Remove warning
* remove dependence on redundant ffmpeg codecs
* cudacodec: use .set(CAP_PROP_FORMAT, -1) to extract RAW streams
* whitespace
* addressed alalek's comment
DynamicFusion Implementation
* Add new nodes from points
* Addition of new node in the field
* Warp nodes demo
* Add newline before {
* Remove 3rd party flann dependency
* Regularisation Heirarchy
* Correct node radius
* Change default growth rate
* New node position = centroid of the neighbourhood
* Enlarge nodes while paused
* Dynafu TSDF
* TSDF demo
* Avoid double calc and adjust initial tsdf weight
* Fix bug that caused some voxels to disappear
* getNodePos helper
* Remove USE_INTRINSIC check
* Correct RT avg calculation and remove redundant knn calc
* Slight perf improvements
* Use LinearIndex
* Debug calculations
* set all nodes' RT
* Various bug fixes
* Separate camera and warpfield
* Add dynafu documentation
* Adhere to coding style
* Add dynafu unit test
* update demo
* Merge pull request #2133 from savuor:kinfu_truncate
KinectFusion: several updates (#2133)
* truncateThreshold added
* demo updated for RealSense
* first Kinect2, then RealSense
* more distance-based parameters
* Remove trailing whitespaces
* Replace bool vector with array
* create findNeighbours in WarpField
* Maintain nodesPos matrix in WarpField
* Fix warnings on Windows build
* Remove cameraPose from WarpField
* Use AutoBuffer
* Marching Cubes
* Fix MC
* Split mesh vertices & edges
* Change Mat types in MC
* OpenGL rendering
* Check for HAVE_OPENGL
* Error handling in case HAVE_OPENGL is not defined
* Replace Mat_ with std::vector inside marchCubes
* Parallelise marching cubes
* Fix warpfield and estimate depth inside DynaFuImpl::updateT()
* Linearise depth and use points/normals from MC
* Don't test dynafu without OpenGL support
* Analytical calculation of Jacobian matrices
* Add details about rotation and differentiate graph terms in J_r
* Use derivative of T^-1 from the tutorial
* Remove L2 norm from reg term
* Use chain rule to differentiate data term
* Markdown
* Fix markdown
* Replace MD file by HTML
* Change the data term expression
* Calculate J_d using vector identities
* Rasterize vertex and normals
* Apply warpfield before rendering
* Add CV_UNUSED for normImage to fix warning
* Render float image instead of uint8
* Implement ICP data term and other changes:
1. add option to applyWarp to normals
2. add option to `fetchPointNormals` to return points in voxel coordinates
3. Fix: Use voxel coordinates to update WarpField
* Fix non-OpenGL build
* Intialise newly discovered node transforms with DQB
* Fix data term
* Change data term normal and add kinfu-like distance/angle checks
* Implement regularisation
* Fix warnings
* Credit authors of DQB and table for MC
* cast size_t to int to supress warning
* Correct regularisation and add normal equation set up
* Delete html
* Dynafu unit test
* Add learning-based super-resolution module
Adds the module plus loading classes for SR data
Complete with docs, tutorials and tests.
* Fix typo
* Small commit to restart buildbot
* Change refs from arXiv to official
* Remove video string
* dnn_superres: update perf test code
* dnn_superres: test fixup
* Adding dnn based super resolution module.
* Fixed whitespace error in unit test
* Fixed errors with time measuring functions.
* Updated unit tests in dnn superres
* Deleted unnecessary indents in dnn superres
* Refactored includes in dnn superres
* Moved video upsampling functions to sample code in dnn superres.
* Replaced couts with CV_Error in dnn superres
* Moved benchmarking functionality to sample codes in dnn superres.
* Added performance test to dnn superres
* Resolve buildbot errors
* update dnn_superres
- avoid highgui dependency
- cleanup public API
- use InputArray/OutputArray
- test: avoid legacy test API
* add -Wno-psabi when using GCC 6
* add -Wundef for CUDA 10
* add -Wdeprecated-declarations when using GCC 7
* add -Wstrict-aliasing and -Wtautological-compare for GCC 7
* replace cudaThreadSynchronize with cudaDeviceSynchronize
original commit: 40c71a2463
* Add tracking-by_matching code and sample
* Make interface for PedestrianTracker
* Replace PedestrianTracker -> TrackerByMatching
* Make proper filtering by class id in tracking_by_matching
Also make the sample build in the case when opencv_dnn module is not
built.
Also help is added.
* Remove TODO-s from tracking_by_matching code
* Add parameter frame_step, add copyrights, fix warnings
* Remove copyright from tracking_by_matching
* Rename check macros and remove obsolete mentions of pedestrians
* Tune default thresholds in tracking_by_matching sample
* Add description of classes and factories
* Remove unrequired EOL-s at the end of files
* Replace pointers by references for output parameters
* Fix some warnings found by buildbot
* Fix warning from buildbot, tune some thresholds in tracking_by_matching
* Replace pragma once by ifndef-define clause
* Fix more Windows warnings
* Change case of methods of TrackerByMatching class
* Change name of methods to CamelCase in TrackerByMatching
* Make more convenient check macros in tracking_by_matching.cpp
* Simplify tracking_by_matching sample
* Fix Mac error in tracking_by_matching
KinectFusion: several updates (#2133)
* truncateThreshold added
* demo updated for RealSense
* first Kinect2, then RealSense
* more distance-based parameters
* Simplified quality API
* Compilation fixes
* test fixes
* Test updates
* Test fixes
* Fixed brisque data file location for install, test
* Increase error epsilon to account for multiple architectures
optflow: RLOF fixes (python-binding, status flag, flat textures) (#2097)
* * Bugfix for python-binding related to issue #2094. Copying the prevPtsMat to prevPoints was broken, when using python-binding.
* * Connect the blurred image correctly to CROSS support region segmentation. This allows to compute more robust support region shapes. Commit refers to issue #2094.
* * Bugfix to avoid the unintended assertion on flat textures discussed in issue #2094.
* * Bugfix on SparseRLOFOpticalFlow status was wrongly to to 0 if forward backward error < threshold, which is wrong. Inequation has been corrected. Refers to in issue #2087.
* small documentation changes
* bugfix on assertions and small test changes
Minor changes to the quality module to support Visual Studio 2013 (#2046)
* quality: revise syntax to support Visual C++ 2013
* quality: changes to standardize constness between Visual C++ 2013 and other compilers
* Fixed bug that made cuda::filter give corrupted output when different filters called in different threads. This was due to use of global texture variable shared by all filters.
* REV: fixed tab issue for opencv coding style...
original commit: 8158e5b7a0
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.
original commit: fb8e652c3f
* __shfl_up_sync with proper mask value for CUDA >= 9
* BlockScanInclusive for CUDA >= 9
* compatible_shfl_up for use in integral.hpp
* Use CLAHE in cudev
* Add tests for BlockScan
original commit: 970293a229
- Before this PR, following tests failed on some platform.
CUDA_OptFlow/FarnebackOpticalFlow.Accuracy/19
CUDA_OptFlow/FarnebackOpticalFlow.Accuracy/23
- The algorithm now recognizes the OPTFLOW_USE_INITIAL_FLOW flag.
Previously, when the flag was set, it did not use the flow data
passed as input, instead used some garbage data in memory.
- More strict test limit.
original commit: 4366c8734f
Add robust local optical flow (RLOF) implementations (#1940)
* Add robust local optical flow (RLOF) implementations which is an improved pyramidal iterative Lucas-Kanade approach. This implementations contains interfaces for sparse optical flow for feature tracking and dense optical flow based on sparse-to-dense interpolation schemes.
Add performance and accuracy tests have been implementation as well as documentation with the related publications
* - exchange tabs with spaces
- fix optflow.bib indentation
- remove optflow_o.hpp
- change RLOFOpticalFlowParameter interfaces to Ptr<RLOFOpticalFlowParameter>
to remove error on building. Fix warnings
* introducing precompiler flag RLOD_SSE
* remove header that could not be found
* remove whitespaces
fix perf and accuracy tests
* remove x86intrin.h header
* fix ios and arm by removing last sse commands
* fix warnings for windows compilation
* fix documentation RLOFOpticalFlowParameter
* integrate cast to remove last warnings
* * add create method and function inferfaces to RLOFOpticalFlowParamter to enable python wrapper interfaces
* white space fixes / coding style
* fix perf test
* other changes: precomp.hpp / static
* use Matx44f and Vec4f instead of Mat
* normSigmas into constants
* replace ceil() calls
* maximum level is set to 5 so that it is similar value used in the papers
* implement paralellized horizontal cross segmentation as used in Geistert2016
* drop dead code
* Avoid using "data" and "step" calculations. Use .ptr<mat_type>(row, col) instead.
* Avoid using "data" and "step" calculations. Use .ptr<mat_type>(row, col) instead.
* bugfix on BEPLK with ica and adapt the accuracy tests
* more 'static' functions
* bugfix after changing ptr + step to .ptr(y,x) calls by adjusting ROI of
prevImage, currImage and derivI as well as changing the offset of the
points in the invoker classes.
* add some static_cast to avoid warning
* remove 50 grid size sample from perf test. This grid size is to sparse
for the epic interpolation
* remove notSameColor function since it is not used anymore
Implementation of Quasi Dense Stereo algorithm. (#1941)
* initial commit.
* Remove license header.
* Fix python wrap flags
* Change std::string to cv::String, in function declarations, to resolve compilation issues.
* Add python wrapper extending header
* Fix python wrapper conflicts
* Fix implicit type conversions
* Change C API types and enums to C++.
* Remove redundant included headers and move wanted headers to src/precomp.hpp
* Remove saturate header
* Remove unnecessary python wrapping flags
* Removed defaults parameter header
* Split declaration and implementation of the class using Pimpl.
* Fix to comply with new public API.
* Remove unnecessary modules
* Fix maybe-uninitialized warnings on linux
* Migration to stereo module
* Remove CV_PROP_RW flag.
* Remove CV_EXPORTS flags from class members.
* Fix: Removed misplaced flag
* Remove empty lines.
* Move queue to private headers.
* Fix default arguments of public methods.
* Add authors information and switch to the compact version of license header.
* Reorganize and fix markdown files. Create a table of content and move tutorials in new directories. Modify samples and tutorials to use snippet and include Doxygen commands.
* Change argument name dMatch->denseMatch, to avoid confusion with cv::DMatch build-in type.
* Remove duplicate snippet.
* Fix: change vector resize to reserve.
* Fix: replace extensive license header with the compact version.
I think that that there was a typo in the variable names. fill2, texture2, and size2 were never used.
Also, minor fix to reduce initialization costs of vector
The Fast Bilateral Filter (#1819)
PR is created by: berak <px1704@web.de>
based on work https://github.com/opencv/opencv_contrib/pull/1317
* fbs_filter v1.0 has been contributed
* use boost unordered_map
* add brief description for fbs_filter
* fix format
* fix channels bug
* modify doc for fbs_filter
* check c++ 11
* asDiagonal -> diagonal
* rosolve warning
* fix eigen3 dependency
* Eigen/Core
* test HEAV_EIGEN
* setZero bug
* unordered_map test
* fix macro bug
* fix boost not found
* fix eigen macro bug
* fix eigen macro bug
* fix eigen macro bug
* fix eigen macro bug
* add test file
* fix test macro
* fix test macro
* add test
* add test
* add sample colorize
* fix macro
* fix colorize.cpp
* fix colorize.cpp
* fix colorize.cpp
* fix colorize.cpp
* add fbs filter demo
* add fbs filter demo
* add fbs filter demo
* use fgsfilter for guess
* add parameter num_iter and max_tol
* add a option for colorize sample
* add bibtex
* add bibtex
* fix a colorize demo bug
* size optimize
* taking over the fast bilateral solver
* taking over the fast bilateral solver
* try to fix test_fbs_filter
* missed a bib bracket
* if the src has odd number of height, access error happens
* it could happen on width, too
* check both dst and src range in both width and height
original commit: 7294ae0f17
* KinFu demo: idle mode added
* undistort added
* KinFu demo: depth recorder added
* TSDFVolume gets voxelSize, voxelSizeInv, truncDist members; decorative fixes
* TSDFVolumeGPU::integrate(): host code compiles
* TSDFVolume: truncDist fixed
* TSDFVolume::integrate(): initial OCL version is done
* TSDFVolume::integrate(): OCL: minor fixes
* kinfu: small fixes
* TSDFVolume::raycast(): initial GPU version is done
* USE_INTRINSICS directive for centralized enable/disable opt. code
* TSDF Volume supports 3 different sizes/resolutions on each dimension
* TSDFVolume: serviceMembers moved to parent class
* TSDFVolumeGPU: mem order changed, gave perf boost 4x
* Frame: fixed UMat as InputArray; TSDF: comments, TODOs, minor fixes
* Frame::getPointsNormals(); minors
* FrameGPU: initial version (not working)
* minor
* FrameGPU: several fixes
* added OCL "fast" options
* ICP OCL: initial slow version is done (host-side reduce)
* ICP OCL: reduce is done, buggy
* KinFu Frame: more args fixes
* ICP OCL: small fixes to kernel
* ICP OCL reduce works
* OCL code refactored
* ICP OCL: less allocations, better speed
* ICP OCL: pose matrix made arg
* Render OCL: small fix
* Demo: using UMats everywhere
* TSDF integrate OCL: put const arg into kernel arg
* Platform parameter partially removed, implementation choice is done through OCL availability check
* Frame and FrameGenerator removed (other code is in following commits)
* CPU render: 4b instead of 3b
* ICP: no Frame class use, one class for both CPU and GPU code
* demo: fix for UMat chain
* TSDF: no Frame or FrameGenerator use
* KinFu: no Frame or FrameGenerator, parametrized for Mat or UMat based on OCL availability
* KinFu::setParams() removed since it has no effect anyway
* TSDF::raycast OCL: fixed normals rendering
* ScopeTime -> CV_TRACE
* 3-dims resolution and size passed to API
* fixed unexpected fails of ICP OCL
* voxels made cubic again
* args fixed a little
* fixed volSize calculation
* Tests: inequal, OCL, unified scene test function
* kinfu_frame: input types fixed
* fixed for Intel HD Graphics
* KinFu demo: setUseOptimized instead of setUseOpenCL
* tsdf: data types fixed
* TSDF OCL: fetch normals implemented
* roundDownPow2 -> utils.hpp
* TSDF OCL: fetch points+normals implemented
* TSDF OCL: NoSize, other fixes for kernel args
* Frame OCL: HAVE_OPENCL, NoSize, other kernel args fixed
* ICP OCL: HAVE_OPENCL, NoSize and other kernel fixes
* KinFu demo fixes: volume size and too long delay
* whitespace fix
* TSDF: allowed sizes not divisable by 32
* TSDF: fixed type traits; added optimization TODOs
* KinFu made non-free
* minor fixes: cast and whitespace
* fixed FastICP test
* warnings fixed: implicit type conversions
* OCL kernels: local args made through KernelArg::Local(lsz) call
* MSVC warnings fixed
* a workaround for broken OCV's bilateral
* KinFu tests made a bit faster
* build fixed until 3.4 isn't merged to master
* warnings fixed, test time shortened
Adds Edge-Preserving Filter (#1690)
* Module EPF - Edge-Preserving Filter added
* Changed name from template to epf
* Removed clang-format file
* Added header Files. Eliminated showWindow function. Used CommandLineParser.
* Moved filter from epf module to ximgproc
* Removed header files from sample
* Minor bug fix in demo. Pointers in demo removed.
* Pointers removed. InputArray/OutputArray added
* License header added
* License header from sample file removed
* Unit test for performance added
* Replaced manual mean computation with cv::mean
* Beautified code via clang-format and https://raw.githubusercontent.com/opencv/opencv_contrib/master/modules/cvv/.clang-format
* Merged historic if... else if statement into one if statement
* Trailing whitespace removed and .. changed into .
* Tabs replaced with 4 spaces.
* Removed subwindow = src(roi);
* Moved type test to beginning of code
* Removed indentation from namespace and added //! @}
* Added name to header
* git cleanup introduced some errors fixed here
* Changed path testdata/perf/320x260.png to perf/320x260.png
* Fixed warning declaration of 'subwindow1' hides previous local declaration
* Fixed warning 'const' qualifier on reference type 'cv::InputArray' (aka 'const cv::_InputArray &') has no effect
* Accuracy test added/
* Renamed void edgepreservingFilter to void edgePreservingFilter
In some case, Discrete Fourier Transform in computeSaliencyImpl() returns
magnitude matrix which contains zero values.
Then, log() returns -inf values and normalization with blur() returns -nan.
When computeBinaryMap() is called double free or corruption exception occurs
because kmeans() fails to compute distance.
Signed-off-by: d.bouron <d.bouron@criteo.com>
* update structured_edge_detection
update structured_edge_detection to read models from updated p. dollar toolbox
* Update structured_edge_detection.cpp
* Update structured_edge_detection.cpp
casting size_t to int
* empty kinfu module created
* KinFu: skeleton is done
* some intermediate state fixed
* fixed normal calculation
* bilinear depth interp: fixing missing data
* TSDF integration optimized
* TSDF: adding constness
* utils: isNaN; Intr::Projector const reference fixed
* TSDF raycast: quality improvements
* TSDF fetchCloud is done
* render() added
* ICP implemented
* debug code moved to demo.cpp
* less TODOs
* partial refactoring
* TSDF: fetchPoints() and fetchNormals() rewritten in parallel manner
* platform choose added
* reordered
* data types isolated off the platform
* minor fixes
* ScopeTime added
* fixed iterations gathering
* volume::integrate() parallelized but works slow (big overhead for
* raycast is done in parallel
* got rid of kftype and p3type
* fetchNormals() fixed
* less code duplication
* nan check reduced, interpolate() refactored to fetchVoxel()
* ICP: optimizations
* TSDF: bilinear specialized
* TSDF: voxelSizeInv pushed away
* TSDF: interpolation optimized
* TSDF::integrate: parallel_for now works fast
* Frame::render: pow -> float ipow<int p>(x)
* ICP::getAb: parallel_for
* ICP::getAb: time print disabled
* ICP::getAb::bilinear: 2 calls joined
* refactored, extra functions removed
* optimized to use only 27 elems
* ICP::getAb: better optimized
* Points and Normals data type expanded to 4 channels
* ICP optimized (doesn't work)
* ICP::getAb is on intrinsics and it works
* NaN check is faster
* ICP::getAB: minors
* added non-SIMD code as fallback
* TSDF::fetchVoxel and interpolation: got rid of coord check
* TSDF::fetchVoxel: refactor
* TSDF::raycast: local copies of members
* TSDF::interpolate: refactored for simplier vectorization
* TSDF::getNormal: refactored for simplier vectorization
* minor
* include "intrin.hpp" moved to precomp.hpp
* TSDF::coords shifts moved to class body
* TSDF::getNormal vectorized
* TSDF::getNormal: little improvements
* TSDF::interpolate: little improvements
* TSDF::raycast vectorized
* more to precomp.hpp
* TSDF: minor optimizations
* TSDF::raycast cycles optimized
* TSDF::fetchPointsNormals instead of separate p and n
* TSDF::bilinearInterpolate: little speedup
* TSDF::interpolate: speed up
* TSDF::interpolate: more compact code
* TSDF::getNormal and raycast main cycle made faster
* ICP: few improvements
* Frame: a lot of parts parallelized
* TSDF::fetchPointsNormals minor improvements
* TSDF::integrate and bilinear vectorized
* TSDF::interpolate and getNormal: interpolation vectorized
* ICP: minor changes
* gradientDeltaFactor removed, coarseParams() added
* TSDF::raycast: fixed bug with tmin/tmax
* minors
* baseZ fixed
* ICP: interpolation fixed, non-parallelized code fixed
* TSDF::interpolate: bilinear fixed, less artifacts
* TSDF: minor refactoring
* TSDF: some members moved to parent class
* added tests for KinFu
* KinFu documented
* docs fixed
* warnings fixed
* license added, overrides added
* minors
* ScopeTime moved to separate file
* less memory allocations
* demo improved, java binding disabled
* viz module made optional
* fix to demo
* frameGenerator interface: got rid of refs to cv::Ptr
* demo made interactive
* trying to fix build
* trying to fix warnings
* warning fixed
* demo fixed
* raycast_step_factor tuned
* legal info added
* don't reset if ICP failed
* refactoring: KinFu::operator() => update()
* KinFu::KinFuParams => ::Params
* get/setParams
* fetch => get
* all src moved to cv::kinfu namespace
* struct Intr made internal
* kinfu_module merged into rgbd module
* License preambule updated
* minors
* frame.* renamed to kinfu_frame.*
* warnings fixed
* more warnings fixed
* RGBD normals: a fix against Inf/Nan values
* FastICP: fixed transformation direction
* RGBD Odometry tests: added epsilon for id transform; minors
* RGBD Odometry tests enabled
* modules list fixed
ArUco markers are easy to detect pattern grids that yield up to 1024 different patterns. They were built for augmented reality and later used for camera calibration. Since the grid uniquely orients the square, the detection algorithm can determing the pose of the grid.
ArUco markers were improved by interspersing them inside a checkerboard called ChArUco. Checkerboard corner intersections provide more stable corners because the edge location bias on one square is countered by the opposite edge orientation in the connecting square. By interspersing ArUco markers inside the checkerboard, each checkerboard corner gets a label which enables it to be used in complex calibration or pose scenarios where you cannot see all the corners of the checkerboard.
The smallest ChArUco board is 5 checkers and 4 markers called a "Diamond Marker".
This small app can save some commonly used opencv markers such as ArUco, ArUcoGrid, Chessboard and ChArUco to vector graphics file. **Supported vector graphics file format: .svg, .pdf and .ps.**
You can switch ArUco, ArUcoGrid, Chessboard and ChArUco mode at the GUI tab, then you can select dictionary from the GUI menu and modify board shape, marker size, border width... etc. at the GUI entry, finally click the preview or save button to show the marker image on the GUI window or save it to file.
If you are using consumer level printer, you will suffer from not able printing too large marker, so just set chunks shape at the GUI subSize entry before saving the marker to files, it will divide output marker to chunks. If you are using command-line interface, just add --sub_size_x x --sub_size_y y as parameters.
### Page border
If you are printing the image directly, you will need add page border to protect the marker, so just set page border at the GUI pageBorder entry before saving the marker to files. If you are using command-line interface, just add --page_border_x x --page_border_y y as parameters.
### Generate aruco data:
Although there is a built-in aruco dictionary data, but if you want to update the dictionary(If aruco update predefined dictionary list), just install opencv-python and opencv-contrib-python, and than run