Commit 5d3928e4 authored by Alexander Alekhin's avatar Alexander Alekhin

Merge remote-tracking branch 'upstream/3.4' into merge-3.4

parents 1404ce97 97878da5
...@@ -935,8 +935,8 @@ int fit_quad(const Ptr<DetectorParameters> &_params, const Mat im, zarray_t *clu ...@@ -935,8 +935,8 @@ int fit_quad(const Ptr<DetectorParameters> &_params, const Mat im, zarray_t *clu
double x = lines[i1][0] - L1*A01; double x = lines[i1][0] - L1*A01;
double y = lines[i1][1] - L1*A11; double y = lines[i1][1] - L1*A11;
CV_Assert(fabs(x - quad->p[i][0]) < 0.001, CV_Assert(fabs(x - quad->p[i][0]) < 0.001);
fabs(y - quad->p[i][1]) < 0.001); CV_Assert(fabs(y - quad->p[i][1]) < 0.001);
} }
#endif // NDEBUG #endif // NDEBUG
......
...@@ -38,10 +38,10 @@ void createPointCloudMesh(const String& name, InputArray vertices, InputArray co ...@@ -38,10 +38,10 @@ void createPointCloudMesh(const String& name, InputArray vertices, InputArray co
{ {
int color_type = colors.type(); int color_type = colors.type();
CV_Assert(_app); CV_Assert(_app);
CV_CheckTypeEQ(vertices.type(), CV_32FC3, "") CV_CheckTypeEQ(vertices.type(), CV_32FC3, "vertices type must be Vec3f");
CV_Assert(vertices.isContinuous()); CV_Assert(vertices.isContinuous());
if (!colors.empty()) if (!colors.empty())
CV_CheckType(color_type, color_type == CV_8UC3 || color_type == CV_8UC4); CV_CheckType(color_type, color_type == CV_8UC3 || color_type == CV_8UC4, "unsupported type");
// material // material
MaterialPtr mat = MaterialManager::getSingleton().create(name, RESOURCEGROUP_NAME); MaterialPtr mat = MaterialManager::getSingleton().create(name, RESOURCEGROUP_NAME);
......
...@@ -298,3 +298,16 @@ ...@@ -298,3 +298,16 @@
volume = {1}, volume = {1},
booktitle = {VISAPP 2008 - 3rd International Conference on Computer Vision Theory and Applications, Proceedings} booktitle = {VISAPP 2008 - 3rd International Conference on Computer Vision Theory and Applications, Proceedings}
} }
@misc{Segleafvein,
title = {Best Way of Segmenting Veins in Leaves.},
author = {Niki Estner},
url = {https://dsp.stackexchange.com/a/1735}
}
@misc{M_RF,
title = {Ridge Filter Mathematica},
author = {Wolfram Mathematica},
url = {http://reference.wolfram.com/language/ref/RidgeFilter.html}
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
/* /*
Ridge Detection Filter. Ridge Detection Filter.
OpenCV port by : Kushal Vyas (@kushalvyas), Venkatesh Vijaykumar(@venkateshvijaykumar) OpenCV port by : Kushal Vyas (@kushalvyas), Venkatesh Vijaykumar(@venkateshvijaykumar)
Adapted from Niki Estner's explaination of RidgeFilter.
*/ */
#ifndef __OPENCV_XIMGPROC_RIDGEFILTER_HPP__ #ifndef __OPENCV_XIMGPROC_RIDGEFILTER_HPP__
...@@ -20,7 +21,8 @@ namespace cv { namespace ximgproc { ...@@ -20,7 +21,8 @@ namespace cv { namespace ximgproc {
/** @brief Applies Ridge Detection Filter to an input image. /** @brief Applies Ridge Detection Filter to an input image.
Implements Ridge detection similar to the one in [Mathematica](http://reference.wolfram.com/language/ref/RidgeFilter.html) Implements Ridge detection similar to the one in [Mathematica](http://reference.wolfram.com/language/ref/RidgeFilter.html)
using the eigen values from the Hessian Matrix of the input image using Sobel Derivatives. using the eigen values from the Hessian Matrix of the input image using Sobel Derivatives.
Additional refinement can be done using Skeletonization and Binarization. Additional refinement can be done using Skeletonization and Binarization. Adapted from @cite segleafvein and @cite M_RF
*/ */
class CV_EXPORTS_W RidgeDetectionFilter : public Algorithm class CV_EXPORTS_W RidgeDetectionFilter : public Algorithm
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment