// // This file is auto-generated. Please don't modify it! // package org.opencv.calib3d; import org.opencv.core.Mat; // C++: class StereoSGBM /** * <p>Class for computing stereo correspondence using the semi-global block * matching algorithm.</p> * * <p>class StereoSGBM <code></p> * * <p>// C++ code:</p> * * * <p>StereoSGBM();</p> * * <p>StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize,</p> * * <p>int P1=0, int P2=0, int disp12MaxDiff=0,</p> * * <p>int preFilterCap=0, int uniquenessRatio=0,</p> * * <p>int speckleWindowSize=0, int speckleRange=0,</p> * * <p>bool fullDP=false);</p> * * <p>virtual ~StereoSGBM();</p> * * <p>virtual void operator()(InputArray left, InputArray right, OutputArray disp);</p> * * <p>int minDisparity;</p> * * <p>int numberOfDisparities;</p> * * <p>int SADWindowSize;</p> * * <p>int preFilterCap;</p> * * <p>int uniquenessRatio;</p> * * <p>int P1, P2;</p> * * <p>int speckleWindowSize;</p> * * <p>int speckleRange;</p> * * <p>int disp12MaxDiff;</p> * * <p>bool fullDP;...</p> * * <p>};</p> * * <p>The class implements the modified H. Hirschmuller algorithm [HH08] that * differs from the original one as follows: </code></p> * <ul> * <li> By default, the algorithm is single-pass, which means that you * consider only 5 directions instead of 8. Set <code>fullDP=true</code> to run * the full variant of the algorithm but beware that it may consume a lot of * memory. * <li> The algorithm matches blocks, not individual pixels. Though, setting * <code>SADWindowSize=1</code> reduces the blocks to single pixels. * <li> Mutual information cost function is not implemented. Instead, a * simpler Birchfield-Tomasi sub-pixel metric from [BT98] is used. Though, the * color images are supported as well. * <li> Some pre- and post- processing steps from K. Konolige algorithm * :ocv:funcx:"StereoBM.operator()" are included, for example: pre-filtering * (<code>CV_STEREO_BM_XSOBEL</code> type) and post-filtering (uniqueness check, * quadratic interpolation and speckle filtering). * </ul> * * <p>Note:</p> * <ul> * <li> (Python) An example illustrating the use of the StereoSGBM matching * algorithm can be found at opencv_source_code/samples/python2/stereo_match.py * </ul> * * @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereosgbm">org.opencv.calib3d.StereoSGBM</a> */ public class StereoSGBM { protected final long nativeObj; protected StereoSGBM(long addr) { nativeObj = addr; } public static final int DISP_SHIFT = 4, DISP_SCALE = (1<<DISP_SHIFT); // // C++: StereoSGBM::StereoSGBM() // /** * <p>Initializes <code>StereoSGBM</code> and sets parameters to custom values.??</p> * * <p>The first constructor initializes <code>StereoSGBM</code> with all the * default parameters. So, you only have to set <code>StereoSGBM.numberOfDisparities</code> * at minimum. The second constructor enables you to set each parameter to a * custom value.</p> * * @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereosgbm-stereosgbm">org.opencv.calib3d.StereoSGBM.StereoSGBM</a> */ public StereoSGBM() { nativeObj = StereoSGBM_0(); return; } // // C++: StereoSGBM::StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize, int P1 = 0, int P2 = 0, int disp12MaxDiff = 0, int preFilterCap = 0, int uniquenessRatio = 0, int speckleWindowSize = 0, int speckleRange = 0, bool fullDP = false) // /** * <p>Initializes <code>StereoSGBM</code> and sets parameters to custom values.??</p> * * <p>The first constructor initializes <code>StereoSGBM</code> with all the * default parameters. So, you only have to set <code>StereoSGBM.numberOfDisparities</code> * at minimum. The second constructor enables you to set each parameter to a * custom value.</p> * * @param minDisparity Minimum possible disparity value. Normally, it is zero * but sometimes rectification algorithms can shift images, so this parameter * needs to be adjusted accordingly. * @param numDisparities Maximum disparity minus minimum disparity. The value is * always greater than zero. In the current implementation, this parameter must * be divisible by 16. * @param SADWindowSize Matched block size. It must be an odd number * <code>>=1</code>. Normally, it should be somewhere in the <code>3..11</code> * range. * @param P1 The first parameter controlling the disparity smoothness. See * below. * @param P2 The second parameter controlling the disparity smoothness. The * larger the values are, the smoother the disparity is. <code>P1</code> is the * penalty on the disparity change by plus or minus 1 between neighbor pixels. * <code>P2</code> is the penalty on the disparity change by more than 1 between * neighbor pixels. The algorithm requires <code>P2 > P1</code>. See * <code>stereo_match.cpp</code> sample where some reasonably good * <code>P1</code> and <code>P2</code> values are shown (like <code>8*number_of_image_channels*SADWindowSize*SADWindowSize</code> * and <code>32*number_of_image_channels*SADWindowSize*SADWindowSize</code>, * respectively). * @param disp12MaxDiff Maximum allowed difference (in integer pixel units) in * the left-right disparity check. Set it to a non-positive value to disable the * check. * @param preFilterCap Truncation value for the prefiltered image pixels. The * algorithm first computes x-derivative at each pixel and clips its value by * <code>[-preFilterCap, preFilterCap]</code> interval. The result values are * passed to the Birchfield-Tomasi pixel cost function. * @param uniquenessRatio Margin in percentage by which the best (minimum) * computed cost function value should "win" the second best value to consider * the found match correct. Normally, a value within the 5-15 range is good * enough. * @param speckleWindowSize Maximum size of smooth disparity regions to consider * their noise speckles and invalidate. Set it to 0 to disable speckle * filtering. Otherwise, set it somewhere in the 50-200 range. * @param speckleRange Maximum disparity variation within each connected * component. If you do speckle filtering, set the parameter to a positive * value, it will be implicitly multiplied by 16. Normally, 1 or 2 is good * enough. * @param fullDP Set it to <code>true</code> to run the full-scale two-pass * dynamic programming algorithm. It will consume O(W*H*numDisparities) bytes, * which is large for 640x480 stereo and huge for HD-size pictures. By default, * it is set to <code>false</code>. * * @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereosgbm-stereosgbm">org.opencv.calib3d.StereoSGBM.StereoSGBM</a> */ public StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize, int P1, int P2, int disp12MaxDiff, int preFilterCap, int uniquenessRatio, int speckleWindowSize, int speckleRange, boolean fullDP) { nativeObj = StereoSGBM_1(minDisparity, numDisparities, SADWindowSize, P1, P2, disp12MaxDiff, preFilterCap, uniquenessRatio, speckleWindowSize, speckleRange, fullDP); return; } /** * <p>Initializes <code>StereoSGBM</code> and sets parameters to custom values.??</p> * * <p>The first constructor initializes <code>StereoSGBM</code> with all the * default parameters. So, you only have to set <code>StereoSGBM.numberOfDisparities</code> * at minimum. The second constructor enables you to set each parameter to a * custom value.</p> * * @param minDisparity Minimum possible disparity value. Normally, it is zero * but sometimes rectification algorithms can shift images, so this parameter * needs to be adjusted accordingly. * @param numDisparities Maximum disparity minus minimum disparity. The value is * always greater than zero. In the current implementation, this parameter must * be divisible by 16. * @param SADWindowSize Matched block size. It must be an odd number * <code>>=1</code>. Normally, it should be somewhere in the <code>3..11</code> * range. * * @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereosgbm-stereosgbm">org.opencv.calib3d.StereoSGBM.StereoSGBM</a> */ public StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize) { nativeObj = StereoSGBM_2(minDisparity, numDisparities, SADWindowSize); return; } // // C++: void StereoSGBM::operator ()(Mat left, Mat right, Mat& disp) // public void compute(Mat left, Mat right, Mat disp) { compute_0(nativeObj, left.nativeObj, right.nativeObj, disp.nativeObj); return; } // // C++: int StereoSGBM::minDisparity // public int get_minDisparity() { int retVal = get_minDisparity_0(nativeObj); return retVal; } // // C++: void StereoSGBM::minDisparity // public void set_minDisparity(int minDisparity) { set_minDisparity_0(nativeObj, minDisparity); return; } // // C++: int StereoSGBM::numberOfDisparities // public int get_numberOfDisparities() { int retVal = get_numberOfDisparities_0(nativeObj); return retVal; } // // C++: void StereoSGBM::numberOfDisparities // public void set_numberOfDisparities(int numberOfDisparities) { set_numberOfDisparities_0(nativeObj, numberOfDisparities); return; } // // C++: int StereoSGBM::SADWindowSize // public int get_SADWindowSize() { int retVal = get_SADWindowSize_0(nativeObj); return retVal; } // // C++: void StereoSGBM::SADWindowSize // public void set_SADWindowSize(int SADWindowSize) { set_SADWindowSize_0(nativeObj, SADWindowSize); return; } // // C++: int StereoSGBM::preFilterCap // public int get_preFilterCap() { int retVal = get_preFilterCap_0(nativeObj); return retVal; } // // C++: void StereoSGBM::preFilterCap // public void set_preFilterCap(int preFilterCap) { set_preFilterCap_0(nativeObj, preFilterCap); return; } // // C++: int StereoSGBM::uniquenessRatio // public int get_uniquenessRatio() { int retVal = get_uniquenessRatio_0(nativeObj); return retVal; } // // C++: void StereoSGBM::uniquenessRatio // public void set_uniquenessRatio(int uniquenessRatio) { set_uniquenessRatio_0(nativeObj, uniquenessRatio); return; } // // C++: int StereoSGBM::P1 // public int get_P1() { int retVal = get_P1_0(nativeObj); return retVal; } // // C++: void StereoSGBM::P1 // public void set_P1(int P1) { set_P1_0(nativeObj, P1); return; } // // C++: int StereoSGBM::P2 // public int get_P2() { int retVal = get_P2_0(nativeObj); return retVal; } // // C++: void StereoSGBM::P2 // public void set_P2(int P2) { set_P2_0(nativeObj, P2); return; } // // C++: int StereoSGBM::speckleWindowSize // public int get_speckleWindowSize() { int retVal = get_speckleWindowSize_0(nativeObj); return retVal; } // // C++: void StereoSGBM::speckleWindowSize // public void set_speckleWindowSize(int speckleWindowSize) { set_speckleWindowSize_0(nativeObj, speckleWindowSize); return; } // // C++: int StereoSGBM::speckleRange // public int get_speckleRange() { int retVal = get_speckleRange_0(nativeObj); return retVal; } // // C++: void StereoSGBM::speckleRange // public void set_speckleRange(int speckleRange) { set_speckleRange_0(nativeObj, speckleRange); return; } // // C++: int StereoSGBM::disp12MaxDiff // public int get_disp12MaxDiff() { int retVal = get_disp12MaxDiff_0(nativeObj); return retVal; } // // C++: void StereoSGBM::disp12MaxDiff // public void set_disp12MaxDiff(int disp12MaxDiff) { set_disp12MaxDiff_0(nativeObj, disp12MaxDiff); return; } // // C++: bool StereoSGBM::fullDP // public boolean get_fullDP() { boolean retVal = get_fullDP_0(nativeObj); return retVal; } // // C++: void StereoSGBM::fullDP // public void set_fullDP(boolean fullDP) { set_fullDP_0(nativeObj, fullDP); return; } @Override protected void finalize() throws Throwable { delete(nativeObj); } // C++: StereoSGBM::StereoSGBM() private static native long StereoSGBM_0(); // C++: StereoSGBM::StereoSGBM(int minDisparity, int numDisparities, int SADWindowSize, int P1 = 0, int P2 = 0, int disp12MaxDiff = 0, int preFilterCap = 0, int uniquenessRatio = 0, int speckleWindowSize = 0, int speckleRange = 0, bool fullDP = false) private static native long StereoSGBM_1(int minDisparity, int numDisparities, int SADWindowSize, int P1, int P2, int disp12MaxDiff, int preFilterCap, int uniquenessRatio, int speckleWindowSize, int speckleRange, boolean fullDP); private static native long StereoSGBM_2(int minDisparity, int numDisparities, int SADWindowSize); // C++: void StereoSGBM::operator ()(Mat left, Mat right, Mat& disp) private static native void compute_0(long nativeObj, long left_nativeObj, long right_nativeObj, long disp_nativeObj); // C++: int StereoSGBM::minDisparity private static native int get_minDisparity_0(long nativeObj); // C++: void StereoSGBM::minDisparity private static native void set_minDisparity_0(long nativeObj, int minDisparity); // C++: int StereoSGBM::numberOfDisparities private static native int get_numberOfDisparities_0(long nativeObj); // C++: void StereoSGBM::numberOfDisparities private static native void set_numberOfDisparities_0(long nativeObj, int numberOfDisparities); // C++: int StereoSGBM::SADWindowSize private static native int get_SADWindowSize_0(long nativeObj); // C++: void StereoSGBM::SADWindowSize private static native void set_SADWindowSize_0(long nativeObj, int SADWindowSize); // C++: int StereoSGBM::preFilterCap private static native int get_preFilterCap_0(long nativeObj); // C++: void StereoSGBM::preFilterCap private static native void set_preFilterCap_0(long nativeObj, int preFilterCap); // C++: int StereoSGBM::uniquenessRatio private static native int get_uniquenessRatio_0(long nativeObj); // C++: void StereoSGBM::uniquenessRatio private static native void set_uniquenessRatio_0(long nativeObj, int uniquenessRatio); // C++: int StereoSGBM::P1 private static native int get_P1_0(long nativeObj); // C++: void StereoSGBM::P1 private static native void set_P1_0(long nativeObj, int P1); // C++: int StereoSGBM::P2 private static native int get_P2_0(long nativeObj); // C++: void StereoSGBM::P2 private static native void set_P2_0(long nativeObj, int P2); // C++: int StereoSGBM::speckleWindowSize private static native int get_speckleWindowSize_0(long nativeObj); // C++: void StereoSGBM::speckleWindowSize private static native void set_speckleWindowSize_0(long nativeObj, int speckleWindowSize); // C++: int StereoSGBM::speckleRange private static native int get_speckleRange_0(long nativeObj); // C++: void StereoSGBM::speckleRange private static native void set_speckleRange_0(long nativeObj, int speckleRange); // C++: int StereoSGBM::disp12MaxDiff private static native int get_disp12MaxDiff_0(long nativeObj); // C++: void StereoSGBM::disp12MaxDiff private static native void set_disp12MaxDiff_0(long nativeObj, int disp12MaxDiff); // C++: bool StereoSGBM::fullDP private static native boolean get_fullDP_0(long nativeObj); // C++: void StereoSGBM::fullDP private static native void set_fullDP_0(long nativeObj, boolean fullDP); // native support for java finalize() private static native void delete(long nativeObj); }