<>形态学梯度

基本梯度:经过膨胀操作的图像与经过腐蚀操作图像的差值图像,可以用来提取出物体的边缘部分。

内部梯度:原图像与经过腐蚀操作的图像的差值图像。

外部梯度:经过膨胀操作的图像与原图像的差值图像。

opencv中支持的是基本梯度,下面放一段代码和运行结果更直观的理解:
import cv2 import matplotlib.pyplot as plt img = cv2.imread("fig.jpg") kernel =
cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) gradient = cv2.morphologyEx(
img, cv2.MORPH_GRADIENT, kernel) plt.subplot(121); plt.imshow(img); plt.title(
"original") plt.subplot(122); plt.imshow(gradient); plt.title("gradient") plt.
show()

<>顶帽

原图像与经过开运算操作的图像的差值图像,作用是可以提取噪声,突出原图像中比周围亮的部分。(因为开运算本身可以去除一些孤立点,细微连接,毛刺等细节,所以这些细节就可以通过顶帽操作来提取出来)

下面一段代码和运行结果来更直观的理解:
import cv2 import matplotlib.pyplot as plt img = cv2.imread("fig.jpg") kernel =
cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25)) tophat = cv2.morphologyEx(
img, cv2.MORPH_TOPHAT, kernel) plt.subplot(121); plt.imshow(img); plt.title(
"original") plt.subplot(122); plt.imshow(tophat); plt.title("tophat") plt.show()

<>黑帽

经过闭运算操作的图像与原图像的差值图像,作用是突出原图像中比周围暗的区域。(比如闭运算本身可以填补物体内部的一些黑洞,这些黑洞就可以通过黑帽运算来凸显)

下面一段代码和运行结果来更直观的理解:
import cv2 import matplotlib.pyplot as plt img = cv2.imread("fig.jpg") kernel =
cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25)) blackhat = cv2.morphologyEx
(img, cv2.MORPH_BLACKHAT, kernel) plt.subplot(121); plt.imshow(img); plt.title(
"original") plt.subplot(122); plt.imshow(blackhat); plt.title("blackhat") plt.
show()

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信