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

✨博客主页:米开朗琪罗~
✨博主爱好:羽毛球
✨年轻人要:Living for the moment(活在当下)!
推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】

目录

  • 一、引言
  • 二、形态学梯度
    • 2.2 什么是形态学梯度
    • 2.2 程序编写及结果可视化
  • 三、顶帽
    • 3.1 什么是顶帽
    • 3.2 程序编写及结果可视化
  • 四、黑帽
    • 4.1 什么是黑帽
    • 4.2 程序编写及结果可视化

一、引言

在【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()

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

【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算_第1张图片

三、顶帽

3.1 什么是顶帽

顶帽可不是⬇️⬇️⬇️⬇️⬇️⬇️⬇️
【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算_第2张图片
顶帽指原图减去原图的开运算得到的图像,顶帽运算又叫礼帽运算。

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

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()

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

【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算_第3张图片

四、黑帽

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()

下图为程序执行的结果,可以看到图像轮廓的暗周边区域得到了加强!
【OpenCV-Python】:形态学操作之形态学梯度+顶帽运算与黑帽运算_第4张图片

你可能感兴趣的:(图像处理,python,图像处理,opencv)