Fixed more broken links from previous tutorials
authorAna Huaman <no@email>
Mon, 15 Aug 2011 02:29:03 +0000 (02:29 +0000)
committerAna Huaman <no@email>
Mon, 15 Aug 2011 02:29:03 +0000 (02:29 +0000)
doc/tutorials/features2d/trackingmotion/harris_detector/harris_detector.rst
doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.rst
doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.rst
doc/tutorials/imgproc/imgtrans/copyMakeBorder/copyMakeBorder.rst
doc/tutorials/imgproc/imgtrans/filter_2d/filter_2d.rst
doc/tutorials/imgproc/imgtrans/laplace_operator/laplace_operator.rst
doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.rst
doc/tutorials/imgproc/opening_closing_hats/opening_closing_hats.rst
doc/tutorials/imgproc/pyramids/pyramids.rst
doc/tutorials/imgproc/threshold/threshold.rst

index de849c7..63e35b2 100644 (file)
@@ -6,15 +6,46 @@ Harris corner detector
 Goal
 =====
 
-In this tutorial you will learn how to:
+In this tutorial you will learn:
 
 .. container:: enumeratevisibleitemswithsquare
 
+   * What features are and why they are important    
    * Use the function :corner_harris:`cornerHarris <>` to detect corners using the Harris-Stephens method.
 
 Theory
 ======
 
+What is a feature?
+-------------------
+
+.. container:: enumeratevisibleitemswithsquare
+
+   * In computer vision, usually we need to find matching points between different frames of an environment. Why? If we know how two images relate to each other, we can use *both* images to extract information of them.
+
+   * When we say **matching points** we are referring, in a general sense, to *characteristics* in the scene that we can recognize easily. We call these characteristics **features**.
+
+   * **So, what characteristics should a feature have?**
+
+     * It must be *uniquely recognizable*
+
+
+Types of Image Features
+------------------------
+
+To mention a few:
+
+.. container:: enumeratevisibleitemswithsquare
+
+   * Edges
+   * Corner (also known as interest points)
+   * Blobs (also known as regions of interest )
+
+In this tutorial we will study the *corner* features, specifically.
+
+Why is a corner so special?
+----------------------------
+
 Code
 ====
 
index 601abb8..4963906 100644 (file)
@@ -70,7 +70,7 @@ Erosion
 Code
 ======
 
-This tutorial code's is shown lines below. You can also download it from `here <https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/tutorial_code/Image_Processing/Morphology_1.cpp>`_
+This tutorial code's is shown lines below. You can also download it from `here <https://code.ros.org/svn/opencv/trunk/opencv/samples/cpp/tutorial_code/ImgProc/Morphology_1.cpp>`_
 
 .. code-block:: cpp 
 
@@ -175,16 +175,16 @@ Explanation
 
 #. Most of the stuff shown is known by you (if you have any doubt, please refer to the tutorials in previous sections). Let's check the general structure of the program:
 
-   * Load an image (can be RGB or grayscale)
+   .. container:: enumeratevisibleitemswithsquare
 
-   * Create two windows (one for dilation output, the other for erosion)
+      * Load an image (can be RGB or grayscale)
+      * Create two windows (one for dilation output, the other for erosion)
+      * Create a set of 02 Trackbars for each operation:
 
-   * Create a set of 02 Trackbars for each operation:
+        * The first trackbar "Element" returns either **erosion_elem** or **dilation_elem**
+        * The second trackbar "Kernel size" return **erosion_size** or **dilation_size** for the corresponding operation. 
 
-     * The first trackbar "Element" returns either **erosion_elem** or **dilation_elem**
-     * The second trackbar "Kernel size" return **erosion_size** or **dilation_size** for the corresponding operation. 
-
-   * Every time we move any slider, the user's function **Erosion** or **Dilation** will be called and it will update the output image based on the current trackbar values.
+      * Every time we move any slider, the user's function **Erosion** or **Dilation** will be called and it will update the output image based on the current trackbar values.
   
    Let's analyze these two functions:
  
@@ -220,13 +220,15 @@ Explanation
                                                Size( 2*erosion_size + 1, 2*erosion_size+1 ),
                                                Point( erosion_size, erosion_size ) );   
                                                
-        We can choose any of three shapes for our kernel:
+       We can choose any of three shapes for our kernel:
+
+       .. container:: enumeratevisibleitemswithsquare
 
-       * Rectangular box: MORPH_RECT
-       * Cross:  MORPH_CROSS 
-       * Ellipse: MORPH_ELLIPSE
+         + Rectangular box: MORPH_RECT
+         + Cross:  MORPH_CROSS 
+         + Ellipse: MORPH_ELLIPSE
 
-        Then, we just have to specify the size of our kernel and the *anchor point*. If not specified, it is assumed to be in the center.
+       Then, we just have to specify the size of our kernel and the *anchor point*. If not specified, it is assumed to be in the center.
 
    * That is all. We are ready to perform the erosion of our image.
 
@@ -271,4 +273,4 @@ Results
 
   .. image:: images/Morphology_1_Tutorial_Cover.jpg
      :alt: Dilation and Erosion application
-     :align: center 
\ No newline at end of file
+     :align: center 
index 73a2538..e7fe4dc 100644 (file)
@@ -8,7 +8,9 @@ Goal
 
 In this tutorial you will learn how to:
 
-a. Use the OpenCV function :canny:`Canny <>` to implement the Canny Edge Detector.
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :canny:`Canny <>` to implement the Canny Edge Detector.
 
 Theory
 =======
@@ -265,21 +267,21 @@ Explanation
 Result
 =======
 
-#. After compiling the code above, we can run it giving as argument the path to an image. For example, using as an input the following image:
+* After compiling the code above, we can run it giving as argument the path to an image. For example, using as an input the following image:
 
    .. image:: images/Canny_Detector_Tutorial_Original_Image.jpg
            :alt: Original test image
            :width: 200pt
            :align: center
 
-   and moving the slider, trying different threshold, we obtain the following result:
+* Moving the slider, trying different threshold, we obtain the following result:
 
    .. image:: images/Canny_Detector_Tutorial_Result.jpg
            :alt: Result after running Canny
            :width: 200pt
            :align: center
   
-   Notice how the image is superposed to the black background on the edge regions.
+* Notice how the image is superposed to the black background on the edge regions.
   
 
 
index 5558b35..877accd 100644 (file)
@@ -8,10 +8,12 @@ Goal
 
 In this tutorial you will learn how to:
 
-#. Use the OpenCV function :copy_make_border:`copyMakeBorder <>` to set the borders (extra padding to your image).  
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :copy_make_border:`copyMakeBorder <>` to set the borders (extra padding to your image).  
   
 Theory
-============
+========
 
 .. note::
    The explanation below belongs to the book **Learning OpenCV** by Bradski and Kaehler.
@@ -208,10 +210,12 @@ Results
 
 #. After compiling the code above, you  can execute it giving as argument the path of an image. The result should be:
 
-   * By default, it begins with the border set to BORDER_CONSTANT. Hence, a succession of random colored borders will be shown.
-   * If you press 'r', the border will become a replica of the edge pixels. 
-   * If you press 'c', the random colored borders will appear again
-   * If you press 'ESC' the program will exit.
+   .. container:: enumeratevisibleitemswithsquare
+
+      * By default, it begins with the border set to BORDER_CONSTANT. Hence, a succession of random colored borders will be shown.
+      * If you press 'r', the border will become a replica of the edge pixels. 
+      * If you press 'c', the random colored borders will appear again
+      * If you press 'ESC' the program will exit.
 
    Below some screenshot showing how the border changes color and how the *BORDER_REPLICATE* option looks:
    
index 7fad4b5..bee8f3c 100644 (file)
@@ -8,10 +8,12 @@ Goal
 
 In this tutorial you will learn how to:
 
-* Use the OpenCV function :filter2d:`filter2D <>` to create your own linear filters.  
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :filter2d:`filter2D <>` to create your own linear filters.  
   
 Theory
-============
+=======
 
 .. note::
    The explanation below belongs to the book **Learning OpenCV** by Bradski and Kaehler.
index 99bb326..764b119 100644 (file)
@@ -9,7 +9,9 @@ Goal
 
 In this tutorial you will learn how to:
 
-a. Use the OpenCV function :laplacian:`Laplacian <>` to implement a discrete analog of the *Laplacian operator*.
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :laplacian:`Laplacian <>` to implement a discrete analog of the *Laplacian operator*.
 
 
 Theory
index d544b10..007746e 100644 (file)
@@ -9,8 +9,10 @@ Goal
 
 In this tutorial you will learn how to:
 
-#. Use the OpenCV function :sobel:`Sobel <>` to calculate the derivatives from an image.
-#. Use the OpenCV function :scharr:`Scharr <>` to calculate a more accurate derivative for a kernel of size :math:`3 \cdot 3`  
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :sobel:`Sobel <>` to calculate the derivatives from an image.
+   * Use the OpenCV function :scharr:`Scharr <>` to calculate a more accurate derivative for a kernel of size :math:`3 \cdot 3`  
   
 Theory
 ========
index 40b06a5..5ce49d3 100644 (file)
@@ -8,25 +8,28 @@ Goal
 
 In this tutorial you will learn how to:
 
-* Use the OpenCV function :morphology_ex:`morphologyEx <>` to apply Morphological Transformation such as:
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV function :morphology_ex:`morphologyEx <>` to apply Morphological Transformation such as:
   
-  * Opening 
-  * Closing
-  * Morphological Gradient
-  * Top Hat
-  * Black Hat
+     + Opening 
+     + Closing
+     + Morphological Gradient
+     + Top Hat
+     + Black Hat
 
-Cool Theory
-============
+Theory
+=======
 
 .. note::
    The explanation below belongs to the book **Learning OpenCV** by Bradski and Kaehler.
 
 In the previous tutorial we covered two basic Morphology operations: 
 
-* Erosion
+.. container:: enumeratevisibleitemswithsquare
 
-* Dilation. 
+   * Erosion
+   * Dilation. 
 
 Based on these two we can effectuate more sophisticated transformations to our images. Here we discuss briefly 05 operations offered by OpenCV:
 
@@ -246,11 +249,11 @@ Explanation
      * **dst**: Output image
      * **operation**: The kind of morphology transformation to be performed. Note that we have 5 alternatives:
 
-       * *Opening*: MORPH_OPEN : 2
-       * *Closing*: MORPH_CLOSE: 3
-       * *Gradient*: MORPH_GRADIENT: 4
-       * *Top Hat*: MORPH_TOPHAT: 5
-       * *Black Hat*: MORPH_BLACKHAT: 6
+       + *Opening*: MORPH_OPEN : 2
+       + *Closing*: MORPH_CLOSE: 3
+       + *Gradient*: MORPH_GRADIENT: 4
+       + *Top Hat*: MORPH_TOPHAT: 5
+       + *Black Hat*: MORPH_BLACKHAT: 6
 
        As you can see the values range from <2-6>, that is why we add (+2) to the values entered by the Trackbar:
 
index 41c7347..43b03e4 100644 (file)
@@ -8,7 +8,9 @@ Goal
 
 In this tutorial you will learn how to:
 
-* Use the OpenCV functions :pyr_up:`pyrUp <>` and :pyr_down:`pyrDown <>` to downsample  or upsample a given image.
+.. container:: enumeratevisibleitemswithsquare
+
+   * Use the OpenCV functions :pyr_up:`pyrUp <>` and :pyr_down:`pyrDown <>` to downsample  or upsample a given image.
   
 Theory
 =======
@@ -16,25 +18,30 @@ Theory
 .. note::
    The explanation below belongs to the book **Learning OpenCV** by Bradski and Kaehler.
 
-* Usually we need to convert an image to a size different than its original. For this, there are two possible options:
+.. container:: enumeratevisibleitemswithsquare
+
+   * Usually we need to convert an image to a size different than its original. For this, there are two possible options:
   
-  * *Upsize* the image (zoom in) or 
-  * *Downsize* it (zoom out). 
+     #. *Upsize* the image (zoom in) or 
+     #. *Downsize* it (zoom out). 
+
+   * Although there is a *geometric transformation* function in OpenCV that -literally- resize an image (:resize:`resize <>`, which we will show in a future tutorial), in this section we analyze first the use of **Image Pyramids**, which are widely applied in a huge range of vision applications.
 
-* Although there is a *geometric transformation* function in OpenCV that -literally- resize an image (:resize:`resize <>`, which we will show in a future tutorial), in this section we analyze first the use of **Image Pyramids**, which are widely applied in a huge range of vision applications.
 
 Image Pyramid
 --------------
 
-* An image pyramid is a collection of images - all arising from a single original image - that are successively downsampled until some desired stopping point is reached.
+.. container:: enumeratevisibleitemswithsquare
+
+   * An image pyramid is a collection of images - all arising from a single original image - that are successively downsampled until some desired stopping point is reached.
 
-* There are two common kinds of image pyramids:
+   * There are two common kinds of image pyramids:
 
-  * **Gaussian pyramid:** Used to downsample images
+     * **Gaussian pyramid:** Used to downsample images
 
-  * **Laplacian pyramid:** Used to  reconstruct an upsampled image from an image lower in the pyramid (with less resolution) 
+     * **Laplacian pyramid:** Used to  reconstruct an upsampled image from an image lower in the pyramid (with less resolution) 
 
-* In this tutorial we'll use the *Gaussian pyramid*.
+   * In this tutorial we'll use the *Gaussian pyramid*.
 
 Gaussian Pyramid
 ^^^^^^^^^^^^^^^^^
index 1ac4919..9b164b6 100644 (file)
@@ -8,7 +8,9 @@ Goal
 
 In this tutorial you will learn how to:
 
-* Perform basic thresholding operations using OpenCV function :threshold:`threshold <>`
+.. container:: enumeratevisibleitemswithsquare
+
+   * Perform basic thresholding operations using OpenCV function :threshold:`threshold <>`
 
 
 Cool Theory
@@ -305,4 +307,4 @@ Results
 
    .. image:: images/Threshold_Tutorial_Result_Zero.jpg
       :alt: Threshold Result Zero
-      :align: center 
\ No newline at end of file
+      :align: center