//
// This file is auto-generated. Please don't modify it!
//
package org.opencv.calib3d;
import org.opencv.core.Mat;
// C++: class StereoBM
/**
* <p>Class for computing stereo correspondence using the block matching algorithm.</p>
*
* <p>// Block matching stereo correspondence algorithm class StereoBM <code></p>
*
* <p>// C++ code:</p>
*
*
* <p>enum { NORMALIZED_RESPONSE = CV_STEREO_BM_NORMALIZED_RESPONSE,</p>
*
* <p>BASIC_PRESET=CV_STEREO_BM_BASIC,</p>
*
* <p>FISH_EYE_PRESET=CV_STEREO_BM_FISH_EYE,</p>
*
* <p>NARROW_PRESET=CV_STEREO_BM_NARROW };</p>
*
* <p>StereoBM();</p>
*
* <p>// the preset is one of..._PRESET above.</p>
*
* <p>// ndisparities is the size of disparity range,</p>
*
* <p>// in which the optimal disparity at each pixel is searched for.</p>
*
* <p>// SADWindowSize is the size of averaging window used to match pixel blocks</p>
*
* <p>// (larger values mean better robustness to noise, but yield blurry disparity
* maps)</p>
*
* <p>StereoBM(int preset, int ndisparities=0, int SADWindowSize=21);</p>
*
* <p>// separate initialization function</p>
*
* <p>void init(int preset, int ndisparities=0, int SADWindowSize=21);</p>
*
* <p>// computes the disparity for the two rectified 8-bit single-channel images.</p>
*
* <p>// the disparity will be 16-bit signed (fixed-point) or 32-bit floating-point
* image of the same size as left.</p>
*
* <p>void operator()(InputArray left, InputArray right, OutputArray disparity, int
* disptype=CV_16S);</p>
*
* <p>Ptr<CvStereoBMState> state;</p>
*
* <p>};</p>
*
* <p>The class is a C++ wrapper for the associated functions. In particular,
* :ocv:funcx:"StereoBM.operator()" is the wrapper for </code></p>
*
* <p>"cvFindStereoCorrespondenceBM"... Sample code:</p>
*
* <p>(Ocl) An example for using the stereoBM matching algorithm can be found at
* opencv_source_code/samples/ocl/stereo_match.cpp</p>
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm">org.opencv.calib3d.StereoBM</a>
*/
public class StereoBM {
protected final long nativeObj;
protected StereoBM(long addr) { nativeObj = addr; }
public static final int
PREFILTER_NORMALIZED_RESPONSE = 0,
PREFILTER_XSOBEL = 1,
BASIC_PRESET = 0,
FISH_EYE_PRESET = 1,
NARROW_PRESET = 2;
//
// C++: StereoBM::StereoBM()
//
/**
* <p>The constructors.</p>
*
* <p>The constructors initialize <code>StereoBM</code> state. You can then call
* <code>StereoBM.operator()</code> to compute disparity for a specific stereo
* pair.</p>
*
* <p>Note: In the C API you need to deallocate <code>CvStereoBM</code> state when
* it is not needed anymore using <code>cvReleaseStereoBMState(&stereobm)</code>.</p>
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-stereobm">org.opencv.calib3d.StereoBM.StereoBM</a>
*/
public StereoBM()
{
nativeObj = StereoBM_0();
return;
}
//
// C++: StereoBM::StereoBM(int preset, int ndisparities = 0, int SADWindowSize = 21)
//
/**
* <p>The constructors.</p>
*
* <p>The constructors initialize <code>StereoBM</code> state. You can then call
* <code>StereoBM.operator()</code> to compute disparity for a specific stereo
* pair.</p>
*
* <p>Note: In the C API you need to deallocate <code>CvStereoBM</code> state when
* it is not needed anymore using <code>cvReleaseStereoBMState(&stereobm)</code>.</p>
*
* @param preset specifies the whole set of algorithm parameters, one of:
* <ul>
* <li> BASIC_PRESET - parameters suitable for general cameras
* <li> FISH_EYE_PRESET - parameters suitable for wide-angle cameras
* <li> NARROW_PRESET - parameters suitable for narrow-angle cameras
* </ul>
*
* <p>After constructing the class, you can override any parameters set by the
* preset.</p>
* @param ndisparities the disparity search range. For each pixel algorithm will
* find the best disparity from 0 (default minimum disparity) to
* <code>ndisparities</code>. The search range can then be shifted by changing
* the minimum disparity.
* @param SADWindowSize the linear size of the blocks compared by the algorithm.
* The size should be odd (as the block is centered at the current pixel).
* Larger block size implies smoother, though less accurate disparity map.
* Smaller block size gives more detailed disparity map, but there is higher
* chance for algorithm to find a wrong correspondence.
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-stereobm">org.opencv.calib3d.StereoBM.StereoBM</a>
*/
public StereoBM(int preset, int ndisparities, int SADWindowSize)
{
nativeObj = StereoBM_1(preset, ndisparities, SADWindowSize);
return;
}
/**
* <p>The constructors.</p>
*
* <p>The constructors initialize <code>StereoBM</code> state. You can then call
* <code>StereoBM.operator()</code> to compute disparity for a specific stereo
* pair.</p>
*
* <p>Note: In the C API you need to deallocate <code>CvStereoBM</code> state when
* it is not needed anymore using <code>cvReleaseStereoBMState(&stereobm)</code>.</p>
*
* @param preset specifies the whole set of algorithm parameters, one of:
* <ul>
* <li> BASIC_PRESET - parameters suitable for general cameras
* <li> FISH_EYE_PRESET - parameters suitable for wide-angle cameras
* <li> NARROW_PRESET - parameters suitable for narrow-angle cameras
* </ul>
*
* <p>After constructing the class, you can override any parameters set by the
* preset.</p>
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-stereobm">org.opencv.calib3d.StereoBM.StereoBM</a>
*/
public StereoBM(int preset)
{
nativeObj = StereoBM_2(preset);
return;
}
//
// C++: void StereoBM::operator ()(Mat left, Mat right, Mat& disparity, int disptype = CV_16S)
//
/**
* <p>Computes disparity using the BM algorithm for a rectified stereo pair.</p>
*
* <p>The method executes the BM algorithm on a rectified stereo pair. See the
* <code>stereo_match.cpp</code> OpenCV sample on how to prepare images and call
* the method. Note that the method is not constant, thus you should not use the
* same <code>StereoBM</code> instance from within different threads
* simultaneously. The function is parallelized with the TBB library.</p>
*
* @param left Left 8-bit single-channel image.
* @param right Right image of the same size and the same type as the left one.
* @param disparity Output disparity map. It has the same size as the input
* images. When <code>disptype==CV_16S</code>, the map is a 16-bit signed
* single-channel image, containing disparity values scaled by 16. To get the
* true disparity values from such fixed-point representation, you will need to
* divide each <code>disp</code> element by 16. If <code>disptype==CV_32F</code>,
* the disparity map will already contain the real disparity values on output.
* @param disptype Type of the output disparity map, <code>CV_16S</code>
* (default) or <code>CV_32F</code>.
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-operator">org.opencv.calib3d.StereoBM.operator()</a>
*/
public void compute(Mat left, Mat right, Mat disparity, int disptype)
{
compute_0(nativeObj, left.nativeObj, right.nativeObj, disparity.nativeObj, disptype);
return;
}
/**
* <p>Computes disparity using the BM algorithm for a rectified stereo pair.</p>
*
* <p>The method executes the BM algorithm on a rectified stereo pair. See the
* <code>stereo_match.cpp</code> OpenCV sample on how to prepare images and call
* the method. Note that the method is not constant, thus you should not use the
* same <code>StereoBM</code> instance from within different threads
* simultaneously. The function is parallelized with the TBB library.</p>
*
* @param left Left 8-bit single-channel image.
* @param right Right image of the same size and the same type as the left one.
* @param disparity Output disparity map. It has the same size as the input
* images. When <code>disptype==CV_16S</code>, the map is a 16-bit signed
* single-channel image, containing disparity values scaled by 16. To get the
* true disparity values from such fixed-point representation, you will need to
* divide each <code>disp</code> element by 16. If <code>disptype==CV_32F</code>,
* the disparity map will already contain the real disparity values on output.
*
* @see <a href="http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#stereobm-operator">org.opencv.calib3d.StereoBM.operator()</a>
*/
public void compute(Mat left, Mat right, Mat disparity)
{
compute_1(nativeObj, left.nativeObj, right.nativeObj, disparity.nativeObj);
return;
}
@Override
protected void finalize() throws Throwable {
delete(nativeObj);
}
// C++: StereoBM::StereoBM()
private static native long StereoBM_0();
// C++: StereoBM::StereoBM(int preset, int ndisparities = 0, int SADWindowSize = 21)
private static native long StereoBM_1(int preset, int ndisparities, int SADWindowSize);
private static native long StereoBM_2(int preset);
// C++: void StereoBM::operator ()(Mat left, Mat right, Mat& disparity, int disptype = CV_16S)
private static native void compute_0(long nativeObj, long left_nativeObj, long right_nativeObj, long disparity_nativeObj, int disptype);
private static native void compute_1(long nativeObj, long left_nativeObj, long right_nativeObj, long disparity_nativeObj);
// native support for java finalize()
private static native void delete(long nativeObj);
}