From da74b7d8bf7c281a68d2c72b5f25df02d6eefd88 Mon Sep 17 00:00:00 2001 From: buaazhangqi <2445657635@qq.com> Date: Sun, 9 Feb 2020 12:13:59 +0800 Subject: [PATCH] Update 4.5-tutorial_py_morphological_ops.md --- .../4.5-tutorial_py_morphological_ops.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/4.0.0/4.5-tutorial_py_morphological_ops.md b/docs/4.0.0/4.5-tutorial_py_morphological_ops.md index c6aee9f..0ff714c 100644 --- a/docs/4.0.0/4.5-tutorial_py_morphological_ops.md +++ b/docs/4.0.0/4.5-tutorial_py_morphological_ops.md @@ -2,22 +2,22 @@ 在本教程中: -* 我们将学习不同的形态操作,如腐蚀、扩张、开、闭等。 +* 我们将学习不同的形态操作,如腐蚀、膨胀、开、闭等。 * 我们将看到不同的函数,如: **[cv.erode()](https://docs.opencv.org/4.0.0/d4/d86/group__imgproc__filter.html#gaeb1e0c1033e3f6b891a25d0511362aeb)**、 **[cv.dilate()](https://docs.opencv.org/4.0.0/d4/d86/group__imgproc__filter.html#ga4ff0f3318642c4f469d0e11f242f3b6c)**、 **[cv.morphologyEx()](https://docs.opencv.org/4.0.0/d4/d86/group__imgproc__filter.html#ga67493776e3ad1a3df63883829375201f)**等。 ## 理论 -形态转换是基于图像形状的一些简单操作。它通常在二进制图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。两个基本的形态学操作是腐蚀和扩张。接下来如开,闭,梯度等也会介绍。在下图的帮助下,我们将逐一看到它们: +形态学变换是基于图像形状的一些简单操作。它通常在二值图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性质的结构元素或内核。两个基本的形态学操作是腐蚀和膨胀。接下来如开,闭,梯度等也会介绍。在下图的帮助下,我们将逐一看到它们: ![图片](./img/Morphological_Transformations_1.png) ### 1、腐蚀 -侵蚀的基本概念就像土壤侵蚀一样,只侵蚀前景对象的边界(总是尽量保持前景为白色)。那它有什么作用呢?内核在图像中滑动(如二维卷积)。只有当内核下的所有像素都为 1 时,原始图像中的像素(1 或 0)才会被视为 1,否则会被侵蚀(变为零)。 +腐蚀的基本概念就像土壤侵蚀一样,只侵蚀前景对象的边界(总是尽量保持前景为白色)。那它有什么作用呢?内核在图像中滑动(如二维卷积)。只有当内核下的所有像素都为 1 时,原始图像中的像素(1 或 0)才会被视为 1,否则会被侵蚀(变为零)。 所以根据内核的大小,边界附近的所有像素都将被丢弃。因此,前景对象的厚度或大小在图像中减少或只是白色区域减少。它有助于消除小的白色噪音(如我们在“颜色空间”一章中所看到的),分离两个连接的对象等。 -作为一个例子,我将使用一个 5x5 内核,里面有很多内核。让我们看看它是如何工作的: +作为一个例子,我将使用一个 5x5 内核,内核元素均为1。让我们看看它是如何工作的: ```python mport cv2 as cv @@ -36,9 +36,9 @@ plt.show() ![图片](./img/Morphological_Transformations_2.png) -### 2、扩张 +### 2、膨胀 -它与侵蚀正好相反。这里,如果内核下至少有一个像素为“1”,则像素元素为“1”。所以它会增加图像中的白色区域,或者增加前景对象的大小。通常情况下,在去除噪音的情况下,腐蚀后会膨胀。因为,腐蚀消除了白噪声,但它也缩小了我们的对象。所以我们扩大它。由于噪音消失了,它们不会再回来,但我们的目标区域会增加。它还可用于连接对象的断开部分。 +它与腐蚀正好相反。这里,如果内核下至少有一个像素为“1”,则像素元素为“1”。所以它会增加图像中的白色区域,或者增加前景对象的大小。通常情况下,在去除噪音的情况下,腐蚀后会膨胀。因为,腐蚀消除了白噪声,但它也缩小了我们的对象。所以我们扩大它。由于噪音消失了,它们不会再回来,但我们的目标区域会增加到腐蚀之前的状态。它还可用于连接对象的断开部分。 ```python dilation = cv.dilate(img,kernel,iterations = 1) @@ -48,7 +48,7 @@ dilation = cv.dilate(img,kernel,iterations = 1) ![图片](./img/Morphological_Transformations_3.png) -### 3、开 +### 3、开运算 开只是腐蚀的另一个名称,随后是膨胀。正如我们上面所解释的,它对消除噪音很有用。在这里,我们使用 **[cv.morphologyEx()](https://docs.opencv.org/4.0.0/d4/d86/group__imgproc__filter.html#ga67493776e3ad1a3df63883829375201f)**。 @@ -61,9 +61,9 @@ opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel) ![图片](./img/Morphological_Transformations_4.png) -### 4、闭 +### 4、闭运算 -关闭与打开相反,膨胀后腐蚀。它在关闭前景对象内的小孔或对象上的小黑点时很有用。 +关闭与打开相反,膨胀后腐蚀。它在填充前景对象内的小孔或对象上的小黑点时很有用。 ```python closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel) @@ -75,7 +75,7 @@ closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel) ### 5、形态梯度 -它与图像的膨胀和腐蚀相反。 +它是图像的膨胀和腐蚀之间的差值。 结果将类似于对象的轮廓。 @@ -89,7 +89,7 @@ gradient = cv.morphologyEx(img, cv.MORPH_GRADIENT, kernel) ### 6、顶帽 -它与原图像和原图像的开相反。下面是 9*9 核的例子。 +它是原图像和原图像开运算结果的差值。下面是 9x9 核的例子。 ```python tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel) @@ -101,7 +101,7 @@ tophat = cv.morphologyEx(img, cv.MORPH_TOPHAT, kernel) ### 7、黑帽 -它与原图像和原图像的闭相反。 +它是原图像和原图像的闭的差值。 ```python blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel) @@ -111,7 +111,7 @@ blackhat = cv.morphologyEx(img, cv.MORPH_BLACKHAT, kernel) ![图片](./img/Morphological_Transformations_8.png) -## 结构参量 +## 结构元素 在前面的例子中,我们在 numpy 的帮助下手工创建了一个结构参量。它是长方形的。但在某些情况下,您可能需要椭圆/圆形的内核。因此,opencv 有一个函数,**[cv.getStructuringElement()](https://docs.opencv.org/4.0.0/d4/d86/group__imgproc__filter.html#gac342a1bb6eabf6f55c803b09268e36dc)**。只要传递内核的形状和大小,就可以得到所需的内核。 -- GitLab