You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.2 KiB
151 lines
3.2 KiB
.. ximgproc: |
|
|
|
Structured forests for fast edge detection |
|
****************************************** |
|
|
|
Introduction |
|
------------ |
|
In this tutorial you will learn how to use structured forests for the purpose of edge detection in an image. |
|
|
|
Examples |
|
-------- |
|
|
|
.. image:: images/01.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/02.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/03.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/04.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/05.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/06.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/07.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/08.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/09.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/10.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/11.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
.. image:: images/12.jpg |
|
:height: 238pt |
|
:width: 750pt |
|
:alt: First example |
|
:align: center |
|
|
|
**Note :** binarization techniques like Canny edge detector are applicable |
|
to edges produced by both algorithms (``Sobel`` and ``StructuredEdgeDetection::detectEdges``). |
|
|
|
Source Code |
|
----------- |
|
|
|
.. literalinclude:: ../../../../modules/ximpgroc/samples/cpp/structured_edge_detection.cpp |
|
:language: cpp |
|
:linenos: |
|
:tab-width: 4 |
|
|
|
Explanation |
|
----------- |
|
|
|
1. **Load source color image** |
|
|
|
.. code-block:: cpp |
|
|
|
cv::Mat image = cv::imread(inFilename, 1); |
|
if ( image.empty() ) |
|
{ |
|
printf("Cannot read image file: %s\n", inFilename.c_str()); |
|
return -1; |
|
} |
|
|
|
2. **Convert source image to [0;1] range** |
|
|
|
.. code-block:: cpp |
|
|
|
image.convertTo(image, cv::DataType<float>::type, 1/255.0); |
|
|
|
3. **Run main algorithm** |
|
|
|
.. code-block:: cpp |
|
|
|
cv::Mat edges(image.size(), image.type()); |
|
|
|
cv::Ptr<StructuredEdgeDetection> pDollar = |
|
cv::createStructuredEdgeDetection(modelFilename); |
|
pDollar->detectEdges(image, edges); |
|
|
|
4. **Show results** |
|
|
|
.. code-block:: cpp |
|
|
|
if ( outFilename == "" ) |
|
{ |
|
cv::namedWindow("edges", 1); |
|
cv::imshow("edges", edges); |
|
|
|
cv::waitKey(0); |
|
} |
|
else |
|
cv::imwrite(outFilename, 255*edges); |
|
|
|
Literature |
|
---------- |
|
For more information, refer to the following papers : |
|
|
|
.. [Dollar2013] Dollar P., Zitnick C. L., "Structured forests for fast edge detection", |
|
IEEE International Conference on Computer Vision (ICCV), 2013, |
|
pp. 1841-1848. `DOI <http://dx.doi.org/10.1109/ICCV.2013.231>`_ |
|
|
|
.. [Lim2013] Lim J. J., Zitnick C. L., Dollar P., "Sketch Tokens: A Learned |
|
Mid-level Representation for Contour and Object Detection", |
|
Comoputer Vision and Pattern Recognition (CVPR), 2013, |
|
pp. 3158-3165. `DOI <http://dx.doi.org/10.1109/CVPR.2013.406>`_
|
|
|