形态学操作

形态学(Mathematical Morphology)是图像处理中重要的方法,专注于从图像中提取结构信息和形态特征。主要应用于二值图像,通过基本的形态学操作对图像进行变换和处理。
基本操作
腐蚀(Erosion**):通过结构元素(核)缩小图像中亮度较高区域的边界,用于去除小物体或
者连接物体。
膨胀(Dilation**)
:通过结构元素扩展图像中亮度较高区域的边界,增加物体的大小或者连接
相邻物体。
组合操作
开运算(Opening**)先进行腐蚀后再进行膨胀,用于去除小物体同时保留大物体的特征。
闭运算(Closing**)
先进行膨胀后再进行腐蚀,可以填充小的空洞同时保留大的物体。
高级操作
形态学梯度(Morphological Gradient**)膨胀图像减去腐蚀图像,用于检测图像中的边 界。
顶帽运算(Top Hat**)
原始图像减去开运算的结果,用于提取图像中的小物体或细节。
黑帽运算(Black Hat**)闭运算的结果减去原始图像,用于提取图像中的大物体或背景。
应用领域
视觉检测:边缘检测、形状分析和对象分割。
文字识别(OCR**)
:预处理文本图像以提高字符识别准确性

医学图像处理增强和分割医学图像中的细胞结构和器官轮廓等。
结构元**-**核:
在形态学操作中,结构元(kernel)是一个核心组件,决定了形态学操作的形状和大小。结构元通常是
一个小矩阵,用于在图像中扫描并执行形态学操作。
精确定义形态学操作: 结构元定义了形态学操作的形状和大小,使我们能够针对特定的图像特征进行精确的处理。
多样性和灵活性: 结构元可以有不同的形状和大小,如矩形、椭圆和十字形。
局部处理: 结构元通过局部扫描图像进行操作,这种局部处理方式能够在保持全局特征的同时,细 致地处理图像的局部细节。
核(kernel)其实就是一个小区域,通常为3*3、5*5、7*7大小,有着其自己的结构,比如矩形结构、椭圆结构、十字形结构。
Mat getStructuringElement(int shape, Size ksize, Point anchor = Point(-1, -1));
参数说明:
返回值:指定大小和形状的结构元素-核。
shape:指定结构元素的形状。常用的形状类型包括:
MORPH_RECT :矩形结构元素,所有元素值均为 1。适合处理规则形状的对象。
MORPH_ELLIPSE :椭圆形结构元素,适合处理圆形或椭圆形对象
MORPH_CROSS :十字形结构元素,适合处理线状结构
常用的形状类型及对应的整形值
MORPH_RECT = 0 (矩形结构元)
MORPH_CROSS = 1 (十字形结构元)
MORPH_ELLIPSE = 2 (椭圆结构元)
ksize: Size 类型,表示结构元素的大小。

anchor(可选):结构元素的锚点,即参考点,表示结构元素在图像上的应用位置。
腐蚀
腐蚀操作是一种形态学操作,用于图像处理,特别是二值图像的处理。其主要作用是收缩或细化图像中的前景部分,通过去除边界点实现噪声去除和元素分割等功能。
腐蚀操作步骤

  1. 将结构元的中心与图像中的一个像素对齐。
  2. 将结构元中值为1的区域与被覆盖的图像区域对应的像素值相乘,取这些像素值中的最小值。
  3. 结构元中心对应的像素点的像素值为此最小值。
  4. 移动结构元到下一个像素,重复上述步骤,直到处理完所有像素。
    结果是二值化图像中的白色部分被压缩,使图像中的前景部分"变瘦"。
    应用:
    去除噪声:腐蚀操作可以消除图像中的小噪声点。
    细化形状:使图像中的前景部分变瘦,突出结构细节。
    元素分割:通过腐蚀操作,可以将连在一起的对象分割开。
    腐蚀操作通过在二值图像上滑动结构元,并在每个位置计算最小值,来收缩前景部分。这一操作能够去除噪声、分割元和细化形状。
    void erode(InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor = Point(-1, -1),
    int iterations = 1,
    int borderType = BORDER_CONSTANT,
    const Scalar& borderValue = morphologyDefaultBorderValue()
    );
    参数说明
    src :需要进行腐蚀操作。可以是单通道或多通道图像。
    dst:腐蚀操作后的输出图像,类型与尺寸与输入图像相同。
    kernel :腐蚀操作中使用的结构元(或核)。
    anchor :结构元中锚点的位置。默认值为 Point(-1, -1) ,表示锚点位于结构元的中心。
    iterations (可选):腐蚀操作的迭代次数,默认值为****1
    borderType*(可选)*:边界填充类型,处理图像边界时指定填充方式。默认值为
    BORDER_CONSTANT 。

borderValue*(可选)*:在边界填充类型为 BORDER_CONSTANT 时,指定填充值。默认值为0。
膨胀
膨胀与腐蚀刚好相反,膨胀操作将与当前对象(前景)接触到的背景点合并到当前对象内,从而实现将图像 的边界点向外扩张。
膨胀操作

  1. 将结构元的中心与图像中的一个像素对齐。
  2. 结构元值为1的区域与被结构元覆盖的对应区域进行相乘,取这些像素值中的最大值。
  3. 最大值赋值给结构元中心对应的图像像素。
  4. 移动结构元到下一个像素,重复上述步骤,直到处理完所有像素。
    void cv::dilate ( InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor = Point(-1,-1),
    int iterations = 1,
    int borderType = BORDER_CONSTANT,
    const Scalar & borderValue = morphologyDefaultBorderValue()
    );
    dst:膨胀操作后的目标图像。输出图像与输入图像 src 类型和大小相同。
    src:输入的原始图像,需要进行膨胀操作的图像。
    kernel:膨胀操作时使用的结构元(或核)。
    anchor(可选):锚点是结构元的中心点。
    iterations(可选):膨胀操作的迭代次数,默认为 1 。-重复的次数
    borderType:指定图像边界的处理方式。

borderValue(可选):当使用 cv::BORDER_CONSTANT 时,用于设置填充的常量值,默认为 0 .
OpenCV****中的形态学运算
void cv::morphologyEx(InputArray src,
OutputArray dst,
int op,
InputArray kernel,
Point anchor = Point(-1, -1),
int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue =
morphologyDefaultBorderValue()
);
src:需要进行形态学运算的原始图像。
dst :形态学运算后的输出图像,与输入图像 src 类型和大小相同。
op :指定形态学操作的类型。常见的类型包括:

kernel:用于形态学运算的结构元素,可以通过 cv.getStructuringElement 函数生成。
anchor(可选):结构元素的锚点,即参考点。默认值为 (-1, -1) ,表示锚点位于结构元素的中
心。
iterations(可选):形态学运算的迭代次数,默认值为1。
borderType(可选):像素外插法,默认为 cv.BORDER_CONSTANT 。

borderValue(可选):边界像素的填充值,默认情况下为 0。
开运算
开运算是先将图像腐蚀,再对腐蚀的结果进行膨胀。开运算可以用于去噪、计数等。

  1. 去除小物体和噪声

  2. 平滑图像边界

  3. 提取大物体的主要特征

  4. 计数
    闭运算
    闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,同时保
    持物体的整体形状,还可以将不同的前景图像进行连接。
    1**、噪声消除**
    2**、孔洞填充**

3**、对象连接**
形态学梯度运算
通过对图像进行膨胀操作后减去腐蚀操作的结果,从而提取出原始图像中前景物体的边缘。
原理与步骤

  1. 膨胀操作(Dilation: 膨胀操作会扩展图像中前景(白色)像素的边界,使得前景区域变大。
  2. 腐蚀操作(Erosion: 腐蚀操作会收缩图像中前景(白色)像素的边界,使得前景区域变小。
  3. 边缘提取: 将膨胀操作后的图像减去腐蚀操作后的图像。

利用形态学梯度运算可以清晰地突出前景物体的轮廓,捕捉图像当中的边界信息。
礼帽运算
顶帽运算是一种形态学图像处理技术,其主要用于提取图像中的细微结构和亮斑区域,进而突出图像中的特定信息。它的基本原理是将原始图像减去其开运算(Opening)结果。
优点:
提取细微结构.
突出亮斑区域.

噪声信息提取.
黑帽运算
黑帽运算(Black-hat Transformation)是一种在形态学图像处理中常用的技术。
原理
黑帽运算将闭运算处理后的图像减去原始图像。
应用

  1. 提取细小暗斑
  2. 检测孔洞和缝隙

相关推荐
AI人工智能+2 小时前
人脸核身技术:通过身份证识别、炫彩活体检测和人脸比对三步验证,实现高效安全的身份认证
人工智能·深度学习·ocr·人脸核身
Christo32 小时前
2024《A Rapid Review of Clustering Algorithms》
人工智能·算法·机器学习·数据挖掘
IT一氪2 小时前
InstaPPT 一款由 AI 驱动的 PowerPoint 翻译工具
人工智能·powerpoint
AndrewHZ2 小时前
【图像处理基石】图像梯度:核心算法原理与经典应用场景全解析
图像处理·算法·计算机视觉·cv·算子·边缘提取·图像梯度
小苑同学2 小时前
判断大语言模型(LLMs)是否被“越狱成功“的四类方法
人工智能·语言模型·自然语言处理
Francek Chen2 小时前
【自然语言处理】应用03:情感分析:使用卷积神经网络
人工智能·pytorch·深度学习·神经网络·自然语言处理·cnn
fei_sun2 小时前
数字图像处理
人工智能·算法·计算机视觉
AI工具指南2 小时前
2025年AI生成PPT工具技术评测:主流方案对比与选型指南
人工智能·信息可视化·powerpoint
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch Agent Builder 构建对话式费用助手,结合 Telegram, n8n 和 AWS Bedrock
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·aws