0
点赞
收藏
分享

微信扫一扫

十三、计算机视觉-顶帽运算和底帽运算

栖桐 03-01 08:00 阅读 4

文章目录


1、概念

顶帽(Top Hat)和底帽(Black Hat)是计算机视觉中的两种形态学操作,通常用于图像处理和图像分析中。它们是形态学处理中的两种基本操作之一,用于提取图像中的局部特征或者突出特定目标。


2. 顶帽(Top Hat)

顶帽操作可以从图像中提取出较亮的、与背景不同的结构或物体。这个操作通常用于强调或者增强图像中的小型明亮区域,或者是与周围背景有较大对比度的区域。
看着上面介绍你可能还不太清晰顶帽到底是什么,接下来我们看下顶帽的计算方式或者原理你就明白了。
顶帽计算方式:原始图像 减去 开运算图像
我们回顾之前讲的内容 什么是开运算,开运算是先腐蚀在膨胀 开运算结果就是我们去掉了图像中的毛刺、杂点等。那我们拿原图减去 去掉杂点后的图像是什么呢?聪明的你肯定一下就明白了,得到的就是我们去掉的这些毛刺杂点。这就是顶帽的结果。
我们看下计算结果:

在这里插入图片描述

所以 顶帽操作通过突出图像中的亮部分和细微结构,以及抑制背景,可以帮助我们更好地理解图像内容,从而更有效地进行后续的图像分析和处理。也就是顶帽可以增强图像中的小型明亮结构或物体,使其更容易被识别和分析。

3. 底帽(Black Hat)

底帽操作的目标是突出图像中的暗部结构或物体,同时抑制背景。换句话说,底帽操作可以帮助我们发现图像中较暗的细节或物体,而不受周围背景的干扰。

底帽计算方式: 闭运算 减去 图像原始图像
回顾上节我们说了闭运算可以去除小的空洞或者噪声 可以使分离的部分相连。
例如我有一个图片上有一个空洞,我通过底帽把空掉填补上了,那我我拿填补上的图像减去原始图像是不是就得到了 我填补的空洞部分。这就是底帽的计算原理。
我们看下结果:
在这里插入图片描述
可以看到原图有一个比较暗的空洞的区域,在下图底运算中给展示出来了。
那底帽这个操作有什么实际用途呢?
我们举个例子:
假设我们有一张照片,照片中有一些微小的暗色斑点或线条,但它们被周围亮色的背景所掩盖。使用底帽操作,我们可以突出这些暗色的斑点或线条,从而更容易地分析它们或将它们与背景区分开来。再比如,在医学图像中,可能存在一些微小的病变或组织结构,它们在图像中比周围组织暗一些。底帽操作可以帮助我们突出这些暗部细节,以便更好地观察和分析它们。

4、具体实现

代码如下(示例):

import cv2
import numpy as np

# 读取图像
image = cv2.imread('yunfeng.jpg', cv2.IMREAD_GRAYSCALE)

# 定义结构元素(kernel)
kernel = np.ones((5,5), np.uint8)

# 执行底帽操作
blackhat = cv2.morphologyEx(image, cv2.MORPH_BLACKHAT, kernel)

# 执行顶帽操作
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)

# 显示原始图像、底帽结果和顶帽结果
cv2.imshow('Original ', image)
cv2.imshow('Black Hat', blackhat)
cv2.imshow('Top Hat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

举报

相关推荐

0 条评论