1
1
Laplace Operator {#tutorial_laplace_operator}
2
2
================
3
3
4
+ @prev_tutorial{tutorial_sobel_derivatives}
5
+ @next_tutorial{tutorial_canny_detector}
6
+
4
7
Goal
5
8
----
6
9
7
10
In this tutorial you will learn how to:
8
11
9
- - Use the OpenCV function @ ref cv:: Laplacian to implement a discrete analog of the * Laplacian
12
+ - Use the OpenCV function ** Laplacian() ** to implement a discrete analog of the * Laplacian
10
13
operator* .
11
14
12
15
Theory
37
40
38
41
\f[ Laplace(f) = \dfrac{\partial^{2} f}{\partial x^{2}} + \dfrac{\partial^{2} f}{\partial y^{2}}\f]
39
42
40
- -# The Laplacian operator is implemented in OpenCV by the function @ ref cv:: Laplacian . In fact,
43
+ -# The Laplacian operator is implemented in OpenCV by the function ** Laplacian() ** . In fact,
41
44
since the Laplacian uses the gradient of images, it calls internally the * Sobel* operator to
42
45
perform its computation.
43
46
50
53
- Applies a Laplacian operator to the grayscale image and stores the output image
51
54
- Display the result in a window
52
55
56
+ @add_toggle_cpp
53
57
-# The tutorial code's is shown lines below. You can also download it from
54
- [ here] ( https://github. com/opencv/opencv/tree /master/samples/cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp )
58
+ [ here] ( https://raw.githubusercontent. com/opencv/opencv/master/samples/cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp )
55
59
@include samples/cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp
60
+ @end_toggle
61
+
62
+ @add_toggle_java
63
+ -# The tutorial code's is shown lines below. You can also download it from
64
+ [ here] ( https://raw.githubusercontent.com/opencv/opencv/master/samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java )
65
+ @include samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java
66
+ @end_toggle
67
+
68
+ @add_toggle_python
69
+ -# The tutorial code's is shown lines below. You can also download it from
70
+ [ here] ( https://raw.githubusercontent.com/opencv/opencv/master/samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py )
71
+ @include samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py
72
+ @end_toggle
56
73
57
74
Explanation
58
75
-----------
59
76
60
- -# Create some needed variables:
61
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp variables
62
- -# Loads the source image:
63
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp load
64
- -# Apply a Gaussian blur to reduce noise:
65
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp reduce_noise
66
- -# Convert the image to grayscale using @ref cv::cvtColor
67
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp convert_to_gray
68
- -# Apply the Laplacian operator to the grayscale image:
69
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp laplacian
70
- where the arguments are:
77
+ #### Declare variables
78
+
79
+ @add_toggle_cpp
80
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp variables
81
+ @end_toggle
82
+
83
+ @add_toggle_java
84
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java variables
85
+ @end_toggle
86
+
87
+ @add_toggle_python
88
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py variables
89
+ @end_toggle
90
+
91
+ #### Load source image
92
+
93
+ @add_toggle_cpp
94
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp load
95
+ @end_toggle
96
+
97
+ @add_toggle_java
98
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java load
99
+ @end_toggle
100
+
101
+ @add_toggle_python
102
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py load
103
+ @end_toggle
104
+
105
+ #### Reduce noise
106
+
107
+ @add_toggle_cpp
108
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp reduce_noise
109
+ @end_toggle
110
+
111
+ @add_toggle_java
112
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java reduce_noise
113
+ @end_toggle
114
+
115
+ @add_toggle_python
116
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py reduce_noise
117
+ @end_toggle
71
118
119
+ #### Grayscale
120
+
121
+ @add_toggle_cpp
122
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp convert_to_gray
123
+ @end_toggle
124
+
125
+ @add_toggle_java
126
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java convert_to_gray
127
+ @end_toggle
128
+
129
+ @add_toggle_python
130
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py convert_to_gray
131
+ @end_toggle
132
+
133
+ #### Laplacian operator
134
+
135
+ @add_toggle_cpp
136
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp laplacian
137
+ @end_toggle
138
+
139
+ @add_toggle_java
140
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java laplacian
141
+ @end_toggle
142
+
143
+ @add_toggle_python
144
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py laplacian
145
+ @end_toggle
146
+
147
+ - The arguments are:
72
148
- * src_gray* : The input image.
73
149
- * dst* : Destination (output) image
74
150
- * ddepth* : Depth of the destination image. Since our input is * CV_8U* we define * ddepth* =
@@ -77,10 +153,33 @@ Explanation
77
153
this example.
78
154
- * scale* , * delta* and * BORDER_DEFAULT* : We leave them as default values.
79
155
80
- -# Convert the output from the Laplacian operator to a * CV_8U* image:
81
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp convert
82
- -# Display the result in a window:
83
- @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp display
156
+ #### Convert output to a * CV_8U* image
157
+
158
+ @add_toggle_cpp
159
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp convert
160
+ @end_toggle
161
+
162
+ @add_toggle_java
163
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java convert
164
+ @end_toggle
165
+
166
+ @add_toggle_python
167
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py convert
168
+ @end_toggle
169
+
170
+ #### Display the result
171
+
172
+ @add_toggle_cpp
173
+ @snippet cpp/tutorial_code/ImgTrans/Laplace_Demo.cpp display
174
+ @end_toggle
175
+
176
+ @add_toggle_java
177
+ @snippet samples/java/tutorial_code/ImgTrans/LaPlace/LaplaceDemo.java display
178
+ @end_toggle
179
+
180
+ @add_toggle_python
181
+ @snippet samples/python/tutorial_code/ImgTrans/LaPlace/laplace_demo.py display
182
+ @end_toggle
84
183
85
184
Results
86
185
-------
0 commit comments