形态学中的8种操作

形态学中的8种操作

OpenCV的morphologyEx函数提供了以下8种形态学操作:

  1. MORPH_ERODE(腐蚀操作):

该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最小值,并将结果写入输出图像中。该操作能够减小图像中的亮度和尺寸,并能够消除小的噪点。

实际应用:去除图像中的细小物体,消除图像中的噪点,分割图像中的前景和背景等。

  1. MORPH_DILATE(膨胀操作):

该操作通过将核与图像上的每个像素进行卷积,计算核覆盖下的像素的最大值,并将结果写入输出图像中。该操作能够增加图像中的亮度和尺寸,并能够填充小的空洞。

实际应用:扩张图像中的前景区域,填充图像中的空洞,连接相邻的物体等。

  1. MORPH_OPEN(开运算):

该操作先对图像进行腐蚀操作,然后再对腐蚀后的图像进行膨胀操作,能够消除小的物体和细小的噪点,同时保持物体的大小和形状。

实际应用:去除图像中的细小物体和噪点,平滑图像中的物体边缘等。

  1. MORPH_CLOSE(闭运算):

该操作先对图像进行膨胀操作,然后再对膨胀后的图像进行腐蚀操作,能够填充小的空洞和连接相邻的物体,同时保持物体的大小和形状。

实际应用:填充图像中的空洞,连接相邻的物体,平滑图像中的物体边缘等。

  1. MORPH_GRADIENT(形态学梯度):

该操作通过对输入图像进行膨胀和腐蚀操作,计算两个结果之间的差异,得到输入图像中物体的边缘信息。

实际应用:检测图像中物体的边缘,提取图像中物体的轮廓等。

  1. MORPH_TOPHAT(顶帽运算):

该操作通过将原始图像减去进行开运算后的图像,得到输入图像中的小细节信息。

实际应用:检测图像中小的物体和细节,提取图像中的纹理信息等。

  1. MORPH_BLACKHAT(黑帽运算):

该操作通过将进行闭运算后的图像减去原始图像,得到输入图像中的大细节信息。

实际应用:检测图像中大的物体和细节,提取图像中的纹理信息等。

  1. MORPH_HITMISS(命中或不命中):

该操作通过将原始图像与两个核进行卷积,分别得到命中和不命中的像素,并将结果写入输出图像中。该操作可以用于检测图像中的特定形状。

实际应用:检测图像中的特定形状,比如角点、T形交叉等。

OpenCV的morphologyEx函数是图像处理中常用的形态学操作函数,用于处理二值图像,通过改变结构元素的形状和大小来得到不同的结果。morphologyEx函数提供了8种不同的操作类型,每种操作类型都有不同的参数和效果。

以下是每种操作类型的详细说明和公式:

  1. 腐蚀操作(MORPH_ERODE):

腐蚀操作可以使物体边界向内侵蚀,使物体变小。腐蚀操作的参数包括输入图像、输出图像、结构元素和迭代次数。在二值图像中,腐蚀操作可以用于消除小的噪点或者分离相互接触的物体。

腐蚀操作的公式如下:

d s t ( x , y ) = min ⁡ ( x ′ , y ′ ) ∈ S s r c ( x + x ′ , y + y ′ ) dst(x,y) = \min_{(x',y')\in S} src(x+x',y+y') dst(x,y)=(x,y)Sminsrc(x+x,y+y)

其中, s r c ( x , y ) src(x,y) src(x,y)表示输入图像的像素值, d s t ( x , y ) dst(x,y) dst(x,y)表示输出图像的像素值, S S S表示结构元素, ( x ′ , y ′ ) (x',y') (x,y)表示结构元素中的像素坐标, x x x y y y分别表示像素在图像中的行和列坐标。 min ⁡ \min min表示取结构元素中所有像素的最小值,作为输出像素的像素值。

  1. 膨胀操作(MORPH_DILATE):

膨胀操作可以使物体边界向外扩张,使物体变大。膨胀操作的参数包括输入图像、输出图像、结构元素和迭代次数。在二值图像中,膨胀操作可以用于填充物体内部的空洞或者连接相互靠近的物体。

膨胀操作的公式如下:

d s t ( x , y ) = max ⁡ ( x ′ , y ′ ) ∈ S s r c ( x + x ′ , y + y ′ ) dst(x,y) = \max_{(x',y')\in S} src(x+x',y+y') dst(x,y)=(x,y)Smaxsrc(x+x,y+y)

其中, s r c ( x , y ) src(x,y) src(x,y)表示输入图像的像素值, d s t ( x , y ) dst(x,y) dst(x,y)表示输出图像的像素值, S S S表示结构元素, ( x ′ , y ′ ) (x',y') (x,y)表示结构元素中的像素坐标, x x x y y y分别表示像素在图像中的行和列坐标。 max ⁡ \max max表示取结构元素中所有像素的最大值,作为输出像素的像素值。

  1. 开运算(MORPH_OPEN):

开运算是先进行腐蚀操作,再进行膨胀操作。开运算的参数包括输入图像、输出图像、结构元素和迭代次数。开运算可以用于消除小的噪点、分离相互接触的物体、平滑物体的边缘等。

开运算的公式如下:

d s t = d i l a t e ( e r o d e ( s r c , S , i t e r a t i o n s ) , S , i t e r a t i o n s ) dst = \mathrm{dilate}(\mathrm{erode}(src, S, iterations), S, iterations) dst=dilate(erode(src,S,iterations),S,iterations)
继续回答上面提问的问题:

  1. 闭运算(MORPH_CLOSE):

闭运算是先进行膨胀操作,再进行腐蚀操作。闭运算的参数包括输入图像、输出图像、结构元素和迭代次数。闭运算可以用于填充物体内部的空洞、连接相互靠近的物体、平滑物体的边缘等。

闭运算的公式如下:

d s t = e r o d e ( d i l a t e ( s r c , S , i t e r a t i o n s ) , S , i t e r a t i o n s ) dst = \mathrm{erode}(\mathrm{dilate}(src, S, iterations), S, iterations) dst=erode(dilate(src,S,iterations),S,iterations)

其中, s r c src src表示输入图像, d s t dst dst表示输出图像, S S S表示结构元素, i t e r a t i o n s iterations iterations表示迭代次数。

  1. 形态学梯度(MORPH_GRADIENT):

形态学梯度是通过膨胀和腐蚀操作得到的差值图像。形态学梯度的参数包括输入图像、输出图像、结构元素和迭代次数。形态学梯度可以用于检测图像中物体的边缘和轮廓。

形态学梯度的公式如下:

d s t = d i l a t e ( s r c , S , i t e r a t i o n s ) − e r o d e ( s r c , S , i t e r a t i o n s ) dst = \mathrm{dilate}(src, S, iterations) - \mathrm{erode}(src, S, iterations) dst=dilate(src,S,iterations)erode(src,S,iterations)

其中, s r c src src表示输入图像, d s t dst dst表示输出图像, S S S表示结构元素, i t e r a t i o n s iterations iterations表示迭代次数。

  1. 礼帽操作(MORPH_TOPHAT):

礼帽操作是原图像和开运算之间的差值图像。礼帽操作的参数包括输入图像、输出图像、结构元素和迭代次数。礼帽操作可以用于检测图像中亮度变化较小的区域。

礼帽操作的公式如下:

d s t = s r c − o p e n ( s r c , S , i t e r a t i o n s ) dst = src - \mathrm{open}(src, S, iterations) dst=srcopen(src,S,iterations)

其中, s r c src src表示输入图像, d s t dst dst表示输出图像, S S S表示结构元素, i t e r a t i o n s iterations iterations表示迭代次数。

  1. 黑帽操作(MORPH_BLACKHAT):

黑帽操作是闭运算和原图像之间的差值图像。黑帽操作的参数包括输入图像、输出图像、结构元素和迭代次数。黑帽操作可以用于检测图像中亮度变化较大的区域。

黑帽操作的公式如下:

d s t = c l o s e ( s r c , S , i t e r a t i o n s ) − s r c dst = \mathrm{close}(src, S, iterations) - src dst=close(src,S,iterations)src

其中, s r c src src表示输入图像, d s t dst dst表示输出图像, S S S表示结构元素, i t e r a t i o n s iterations iterations表示迭代次数。

  1. 核外部梯度(MORPH_HITMISS):

核外部梯度是一种特殊的形态学操作,用于检测图像中特定的模式。核外部梯度的参数包括输入图像、输出图像、正结构元素、反结构元素和迭代次数。正结构元素用于表示模板中为1的像素,反结构元素用于表示模板中为0的像素。

核外部梯度的公式如下:

d s t = ( e r o d e ( s r c , S h i t , i t e r a t i o n s ) ∩ e r o d e ( ∼ s r c , S m i s s , i t e r a t i o n s ) ) c dst = (\mathrm{erode}(src, S_{hit}, iterations) \cap \mathrm{erode}(\sim src, S_{miss}, iterations))^c dst=(erode(src,Shit,iterations)erode(src,Smiss,iterations))c

其中, s r c src src表示输入图像, d s t dst dst表示输出图像, S h i t S_{hit} Shit表示正结构元素, S m i s s S_{miss} Smiss表示反结构元素, i t e r a t i o n s iterations iterations表示迭代次数, ∼ \sim 表示取反操作, ∩ \cap 表示集合交, c c c表示取补集操作。

这样,我们就对OpenCV morphologyEx函数中的8种形态学操作以及它们的公式进行了详细的介绍。

猜你喜欢

转载自blog.csdn.net/weixin_43763292/article/details/131256665
今日推荐