OpenCV:顶帽与黑帽运算

相关阅读

OpenCV:开运算-CSDN博客

OpenCV:闭运算-CSDN博客


简述

在图像处理和分析中,顶帽运算黑帽运算是两种重要的形态学操作。它们用于从图像中提取特定的特征区域:顶帽运算突出亮点区域,黑帽运算强调暗点区域。这篇博文将详细介绍它们的定义、作用、相关接口及使用场景。


1. 顶帽运算

顶帽运算 = 原图 - 开运算

顶帽运算 是一种形态学操作,主要用于提取图像中比背景亮的细节。

它可以看作是原始图像与其 开运算结果的差值:

其中:

  • A 是输入图像。
  • B 是卷积核(kernel)。
  • (A∘B) 是图像 A 的开运算结果。

顶帽运算的作用:

  1. 提取比背景亮的细小区域。
  2. 去除大范围的低频背景信息,突出局部亮点。
  3. 增强对比度。

2. 黑帽运算

黑帽运算 = 原图 - 闭运算

黑帽运算 是一种形态学操作,主要用于提取图像中比背景暗的区域。

它可以看作是图像 闭运算结果与原始图像的差值:

其中:

  • A 是输入图像。
  • B 是卷积核(kernel)。
  • (A∙B) 是图像 A 的闭运算结果。

黑帽运算的作用:

  1. 提取比背景暗的小区域。
  2. 突出细小的暗纹和阴影区域。
  3. 增强对比度,适合背景亮、局部暗区域的图像。

3. 顶帽与黑帽运算的关系

运算类型 作用 应用场景
顶帽运算 提取亮点 提取比背景亮的局部区域
黑帽运算 提取暗点 提取比背景暗的局部区域

从数学表达来看,顶帽运算与黑帽运算是基于开运算和闭运算的差值变体,分别用于增强亮区域和暗区域的特征。


4. 顶帽与黑帽运算接口

在 OpenCV 中,顶帽和黑帽运算均由 cv2.morphologyEx() 函数实现,其相关参数如下:

python 复制代码
cv2.morphologyEx(src, op, kernel, dst=None, anchor=(-1, -1), iterations=1, borderType=cv2.BORDER_CONSTANT, borderValue=0)

4.1 参数说明

  • src:输入图像(灰度图或二值图像)。
  • op:形态学操作类型:cv2.MORPH_TOPHA 顶帽运算,cv2.MORPH_BLACKHAT 黑帽运算。
  • kernel:卷积核,定义运算的形状和大小。
  • iterations:操作的迭代次数,默认为 1。
  • borderType 和 borderValue:处理边界时的填充方式和边界值。

4.2 代码示例

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread('D:\\resource\\filter\\tophat.png')
image2 = cv2.imread('D:\\resource\\filter\\blackhat.png')

# 创建结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15, 15))

# 开运算去掉了小物体,保留了较大的物体;原图减去开运算后,留下了小物体。
open_img = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

# 顶帽运算 = 原图 - 开运算(腐蚀 + 膨胀)
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)

# 闭运算去掉了较小的孔洞,还原了较大的物体;原图减去闭运算后,留下了较小的孔洞。
close_img = cv2.morphologyEx(image2, cv2.MORPH_CLOSE, kernel)

# 黑帽运算 = 原图 - 闭运算(膨胀 + 腐蚀)
blackhat = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel)

# 显示结果
cv2.imshow('image', image)
cv2.imshow('open_img', open_img)
cv2.imshow('tophat', tophat)

cv2.imshow('image2', image2)
cv2.imshow('close_img', close_img)
cv2.imshow('blackhat', blackhat)

cv2.waitKey(0)
cv2.destroyAllWindows()

4.3 运行结果

原图1:

开运算后,去掉了小物体,保留了较大的物体:

顶帽运算 = 原图1 - 开运算,留下了小物体:

原图2:

闭运算后,去掉了较小的孔洞,还原了较大的物体:

黑帽运算 = 原图2 - 闭运算,留下了较小的孔洞:


5. 应用场景

顶帽运算

  • 提取和增强小亮点。
  • 应用于医学图像中的亮点检测,例如 X 光图像中的高亮特征。

黑帽运算

  • 突出暗纹或阴影区域。
  • 应用于文档图像处理,提取文字的阴影部分。

6. 总结

  • 顶帽运算:适合从背景中提取小的亮点区域,去除低频背景噪声。
  • 黑帽运算:适合从背景中提取暗点和阴影区域。
  • 两者基于形态学开运算和闭运算,通过简单的差值操作即可实现。
相关推荐
咖啡屋和酒吧15 小时前
健康管理:现代生活的科学守护
人工智能·生活·精选
星栈独行15 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
没有梦想的咸鱼185-1037-166315 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
kirs_ur15 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能
冬奇Lab16 小时前
AI 评测系列(06):DeepEval 实战——企业级 Agent 评测套件
人工智能
冬奇Lab16 小时前
开源项目第166期:worldmonitor — 实时全球情报仪表盘,73k Star 的 AI 驱动地缘政治监控平台
人工智能·开源·资讯
AI探索先锋16 小时前
AMD 2nm 芯片炸裂、欧洲首家人形机器人独角兽诞生、AI Agent 互联标准打响:10 条信号看懂产业变局|今日科技 AI 机器人快讯
大数据·人工智能·深度学习·搜索引擎·机器人
ARM|X86+FPGA工业主板厂家16 小时前
RK3588+FPGA+EtherCAT异构架构解析|工业场景如何同时保住AI算力与微秒级运动实时性
人工智能·fpga开发·架构
玖妍呐16 小时前
2026实测|3款一键AI求职证件照生成工具,适配简历网申(无水印/免费)
人工智能
tedcloud12316 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频