0
点赞
收藏
分享

微信扫一扫

【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算

程序员漫画编程 2022-03-30 阅读 86

目录

😺一、引言

在【OpenCV-Python】:形态学操作之腐蚀与膨胀中介绍了形态学处理的两个基本操作:腐蚀与膨胀;

在【OpenCV-Python】:形态学操作之开运算与闭运算中介绍了基于腐蚀与膨胀的另外两个形态学操作:开运算、闭运算;

本节带来基于上述运算的形态学梯度 + 顶帽、黑帽操作。

😺二、形态学梯度

🐶2.2 什么是形态学梯度

形态学梯度能描述图像亮度变化的剧烈程度,我们可以使用形态学梯度突出物体边缘。

常见的几种梯度:

  • 基本梯度:膨胀后的图像减腐蚀后的图像;
  • 内部梯度:原图减腐蚀后的图像;
  • 外部梯度:膨胀后的图像减原图;
  • 方向梯度:使用X方向与Y方向的直线作为结构元素之后得到的图像梯度。

我们常说的形态学梯度一般指基本梯度。

🐶2.2 程序编写及结果可视化

import cv2
import numpy as np


ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")
k = np.ones((5, 5), np.uint8)
gradient = cv2.morphologyEx(ori, cv2.MORPH_GRADIENT, k)

cv2.imshow("original", ori)
cv2.imshow("gradient", gradient)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\gradient.jpg", gradient)
cv2.waitKey()

下图为程序执行的结果,可以看到图像的边缘部分得到了加强!

在这里插入图片描述

😺三、顶帽

🐶3.1 什么是顶帽

顶帽可不是⬇️⬇️⬇️⬇️⬇️⬇️⬇️
请添加图片描述
顶帽指原图减去原图的开运算得到的图像,顶帽运算又叫礼帽运算。

顶帽作用:突出原图轮廓的周边区域,分离比邻近点亮一些的斑块。

🐶3.2 程序编写及结果可视化

import cv2
import numpy as np


ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")

k = np.ones((5, 5), np.uint8)
tophat = cv2.morphologyEx(ori, cv2.MORPH_TOPHAT, k)

cv2.imshow("original", ori)
cv2.imshow("topha", tophat)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\tophat.jpg", tophat)
cv2.waitKey()
cv2.destroyAllWindows()

下图为程序执行的结果,可以看到图像轮廓的周边区域得到了加强!

在这里插入图片描述

😺四、黑帽

🐶4.1 什么是黑帽

闭运算减去原图得到的图像叫做黑帽。

黑帽作用:黑帽与顶帽相反,黑帽突出原图轮廓的暗区域,分离比邻近点暗一些的斑块。

🐶4.2 程序编写及结果可视化

import cv2
import numpy as np


ori = cv2.imread(r"C:\Users\Lenovo\Desktop\original.jpg")

k = np.ones((5, 5), np.uint8)
blackhat = cv2.morphologyEx(ori, cv2.MORPH_BLACKHAT, k)

cv2.imshow("original", ori)
cv2.imshow("blackhat", blackhat)
cv2.imwrite(r"C:\Users\Lenovo\Desktop\blackhat.jpg", blackhat)
cv2.waitKey()
cv2.destroyAllWindows()

下图为程序执行的结果,可以看到图像轮廓的暗周边区域得到了加强!
在这里插入图片描述

举报

相关推荐

0 条评论