当前位置: 首页 > news >正文

结合opencv解释图像处理中的结构元素(Structuring Element)

结构元素是数学形态学(Mathematical Morphology)中的核心概念,用于定义图像处理中腐蚀(Erosion)、膨胀(Dilation)、开运算(Opening)、闭运算(Closing)等形态学操作的邻域规则。它本质上是一个小型矩阵(或二维形状),通过在图像上滑动并相互作用来实现特定的像素变换效果。

1. 结构元素的核心组成

(1) 形状(Shape)

结构元素的形状决定了它对图像的作用方式,常见类型包括:

– 矩形(MORPH_RECT):全1矩阵,各向同性处理

[1, 1, 1]
[1, 1, 1]  # 3x3矩形结构元素
[1, 1, 1]

– 椭圆形(MORPH_ELLIPSE):近似圆形,适合处理球状物体

[0, 1, 0]
[1, 1, 1]  # 3x3椭圆形结构元素
[0, 1, 0]

– 十字形(MORPH_CROSS):方向敏感,用于边缘检测

[0, 1, 0]
[1, 1, 1]  # 3x3十字形结构元素
[0, 1, 0]

(2) 尺寸(Size)

定义结构元素的宽度和高度(如5×5、3×7等)。尺寸越大,形态学操作对图像的影响范围越广(例如膨胀更强烈)。

(3) 锚点(Anchor Point)

结构元素的基准点,默认为中心(如(-1,-1)表示自动居中)。
作用:
‌控制变换中心‌:在进行图像变换操作时,锚点决定了变换的中心位置。例如,在旋转图像时,锚点就是旋转的中心点;在缩放图像时,锚点决定了图像从哪一点开始放大或缩小。
‌定位与裁剪‌:在图像裁剪或定位操作中,锚点可以作为裁剪区域的起点或参考点,帮助用户精确地选择需要保留或移动的图像部分。
‌路径编辑‌:在矢量图形编辑中,锚点是路径的基本组成单元。通过移动或编辑锚点,用户可以改变路径的形状和走向。此外,锚点还分为直线点和曲线点,曲线点进一步分为平滑点和角点,这些不同类型的锚点具有不同的编辑方式和效果。

2. 结构元素的工作原理

(1) 腐蚀(Erosion)

规则:仅当结构元素完全覆盖目标区域时,中心像素保留为1(否则置0)。
# 原始二值图像       # 腐蚀结果(3x3矩形结构元素)
[1, 1, 1, 0]       [0, 0, 0, 0]
[1, 1, 1, 0][0, 1, 0, 0]
[1, 1, 1, 0]       [0, 0, 0, 0]

效果:消除细小噪点、分离粘连物体。

(2) 膨胀(Dilation)

规则:若结构元素至少覆盖一个1,将当前结构元素锚点所在的原始图像位置置1。
# 原始二值图像       # 膨胀结果(3x3矩形结构元素)
[0, 0, 0, 0]       [1, 1, 1, 0]
[0, 1, 0, 0][1, 1, 1, 0]
[0, 0, 0, 0]       [1, 1, 1, 0]

效果:填充孔洞、连接断裂边缘。

3. OpenCV中的代码示例

#include <opencv2/opencv.hpp>int main() {// 创建3x3矩形结构元素cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3));// 对图像进行腐蚀操作cv::Mat image = cv::imread("noisy.png", cv::IMREAD_GRAYSCALE);cv::Mat eroded;cv::erode(image, eroded, kernel);cv::imshow("Original", image);cv::imshow("Eroded", eroded);cv::waitKey(0);return 0;
}
http://www.lryc.cn/news/611224.html

相关文章:

  • 【Java企业级开发】(七)Spring框架
  • 区块链:重构信任的价值互联网革命​
  • 场外个股期权的额度为何受限?
  • 浮动IP(Floating IP)的删除通常需要满足什么条件
  • 基于ZYNQ ARM+FPGA的声呐数据采集系统设计
  • uniapp转app时,cover-view的坑
  • 什么情况下浮动IP(Floating IP)会“漂移”(Drift)
  • OneCode 3.0 前端架构全面研究
  • ​​机器学习贝叶斯算法
  • MinIO01-入门
  • 本地部署文档管理平台 BookStack 并实现外部访问( Windows 版本)
  • Claude Code 完整指南:入门到应用
  • Flux.1系列模型解析--Flux.1 Tools
  • 鸿蒙组件装饰器深度解析:@Component vs @ComponentV2
  • 代码随想录day57图论7
  • LLM开发——语言模型会根据你的提问方式来改变答案
  • cf.训练
  • 调试|谷歌浏览器调试长连接|调试SSE和websocket
  • 【Spring Cloud】-- RestTeplate实现远程调用
  • 【机器学习深度学习】 知识蒸馏
  • CodeBuddy IDE 使用测评——半小时做一个web可视化数据工具
  • 李宏毅深度学习教程 第12-13章 对抗攻击 + 迁移学习transfer learning
  • 深入理解Spring Boot自动配置原理
  • 解决IntelliJ IDEA 项目名称后带中括号问题(模块名不一致)
  • 解锁高效敏捷:2025年Scrum项目管理工具的核心应用解析
  • 数据结构---Makefile 文件(格式、文件变量、调用、伪目标)、gcc编译的四个步骤、双向链表(概念、作用、应用)
  • RAGFlow 0.20.0 : Multi-Agent Deep Research
  • 机器学习Adaboost算法----SAMME算法和SAMME.R算法
  • 机器学习③【模型训练、K近邻算法(KNN)、贝叶斯算法(Navie Bayes)、模型调优】
  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC05,完成霍尔传感器的校准