导航:首页 > 源码编译 > opencv膨胀算法

opencv膨胀算法

发布时间:2025-08-03 17:46:19

‘壹’ 图像膨胀腐蚀算法原理

膨胀和腐蚀的主要用途:
消除噪声;
分割出独立的图像元素,在图像中连接相邻的元素;
寻找图像中明显的极大值或极小值区;
求出图像的梯度;
【注】:
腐蚀和膨胀是对像素值大的部分而言的,即高亮白部分而不是黑色部分;
膨胀是图像中的高亮部分进行膨胀,领域扩张,效果图拥有比原图更大的高亮区域;
腐蚀是图像中的高亮部分被腐蚀掉,领域缩减,效果图拥有比原图更小的高亮区域;
2
/9
膨胀原理:
膨胀:求局部最大值;
①定义一个卷积核B,
核可以是任何的形状和大小,且拥有一个单独定义出来的参考点-锚点(anchorpoint);
通常和为带参考点的正方形或者圆盘,可将核称为模板或掩膜;
②将核B与图像A进行卷积,计算核B覆盖区域的像素点最大值;
③将这个最大值赋值给参考点指定的像素;
因此,图像中的高亮区域逐渐增长。
3
/9
腐蚀原理:
腐蚀:局部最小值(与膨胀相反);
①定义一个卷积核B,
核可以是任何的形状和大小,且拥有一个单独定义出来的参考点-锚点(anchorpoint);
通常和为带参考点的正方形或者圆盘,可将核称为模板或掩膜;
②将核B与图像A进行卷积,计算核B覆盖区域的像素点最小值;
③将这个最小值赋值给参考点指定的像素;
因此,图像中的高亮区域逐渐减小。
4
/9
OpenCV中膨胀函数-dilate()
格式:
void dilate(
InputArray src,//输入
OutputArray dst, //输出
InputArray kernel, //核大小
Point anchor=Point(-1,-1),// 锚位置,(-1,-1)为中心
int iterations=1, //迭代次数
int borderType=BORDER_CONSTANT,//图像边界像素模式
const Scalar& borderValue=morphologyDefaultBorderValue()//边界值
)
【注】:
关于核,一般配合getStructuringElement()使用;
getStructuringElement():返回指定形状和尺寸的结构元素;
格式:
getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1));
参数:
shape:表核的形状,矩形MORPH_RECT;交叉形MORPH_CROSS;椭圆形MORPH_ELLIPSE;
ksize:核尺寸大小;
anchor:锚点的位置,锚点只影响形态学运算结果的偏移;
5
/9
OpenCV中腐蚀函数-erode()
格式:
void erode(
InputArray src,//输入
OutputArray dst, //输出
InputArray kernel, //核大小
Point anchor=Point(-1,-1),// 锚位置,(-1,-1)为中心
int iterations=1, //迭代次数
int borderType=BORDER_CONSTANT,//图像边界像素模式
const Scalar& borderValue=morphologyDefaultBorderValue()//边界值
)
6
/9
形态学开运算:
开运算(Open Operation):先腐蚀后膨胀的过程;
功能:
消除小物体;
在纤细处分离物体;
平滑较大的边界并不明显改变其面积;
7
/9
形态学闭运算:
闭运算(Closing Openration),先膨胀后腐蚀;
功能:
排除小型黑洞(黑斑);
8
/9
OpenCV:morphologyEx()
功能:morphologyEx函数利用基本的膨胀和腐蚀技术,来执行更加高级形态学变换,
如开闭运算,形态学梯度,“顶帽”、“黑帽”等等。

‘贰’ 数字图像处理(c++ opencv):形态学图像处理-图像膨胀

在数字图像处理的世界中,C++与OpenCV的结合为我们提供了强大的工具,特别是形态学操作,如图像膨胀。其核心目标是增强图像中的目标或连接它们,使它们在视觉上更为明显。

膨胀操作的关键在于结构元,一个白色的像素模板,它会在图像中移动并替换其周围与结构元相匹配的像素。这导致了一个有趣的现象:对于白色背景,膨胀会让黑色目标区域变小,反之,对于黑色背景,白色目标区域会扩大。这本质上是由于结构元的白色像素会扩张图像中的白色区域,而黑色区域会受到腐蚀。

要实现图像膨胀,首先需要调用getStructuringElement函数来创建结构元,它接受多个参数如形状、大小等。然后,dilate函数是实际进行膨胀操作的函数,它接收图像数据、结构元、迭代次数等参数。通过这两个函数,我们可以灵活地控制膨胀的强度和效果。

‘叁’ python中开闭运算函数

在Python中,开运算和闭运算通常使用OpenCV库中的morphologyEx函数来实现

开运算

闭运算

总结

‘肆’ 图像处理知识汇总(一)

图像处理知识汇总

  1. 图像滤波

    • 定义:在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。
    • 平滑:也称模糊,是简单且常用的一种图像处理方法,主要用于减弱噪声。
  2. 线性滤波器

    • 低通滤波器:允许低频通过。
    • 高通滤波器:允许高频通过。
    • 带通滤波器:允许一定范围的频率通过。
    • 带阻滤波器:允许一定范围的频率通过并阻止其他频率。
    • 全通滤波器:允许所有频率通过,仅改变相位。
    • 陷波滤波器:阻止一个狭窄频率范围通过。
  3. 线性滤波与非线性滤波

    • 线性滤波:方框滤波、均值滤波、高斯滤波。
      • 方框滤波:每个输出像素是内核邻域像素值的平均值得到。
      • 均值滤波:用均值代替原图像中的各个像素值。
      • 高斯滤波:适用于消除高斯噪声,广泛应用于图像处理的减噪过程。
    • 非线性滤波:中值滤波、双边滤波。
      • 中值滤波:用像素点邻域灰度值的中值代替该像素点的灰度值,常用于去除椒盐噪声。
      • 双边滤波:结合图像的空间邻近度和像素值相似度的一种折衷处理。
  4. 其他滤波器

    • 维纳滤波:自适应最小均方差滤波器,基于图像和噪声各自相关的相关矩阵。
  5. 边缘检测

    • 目的:找到图像中亮度变化剧烈的像素点构成的集合,表现为轮廓。
    • 边缘检测算子:Roberts Cross算子、Prewitt算子、Sobel算子、Canny算子、罗盘算子、Laplacian算子、MarrHildreth等。
    • 传统算法步骤:滤波、增强、提取边缘。
    • Sobel算子:结合高斯平滑和微分求导,计算图像灰度函数的近似梯度。
    • Canny边缘检测:John Canny在1986年提出的多阶段算法。
  6. 特征提取与匹配

    • SIFT:尺度不变特征变换,检测、描述和匹配图像局部特征点的方法,保持旋转不变性。
    • SURF:加速鲁棒特征,用于检测、描述、匹配图像局部特征点的特征描述子。
    • LBP特征:局部二值模式,描述图像局部纹理特征的算子。
    • HOG特征:方向梯度直方图,用于进行物体检测的特征描述子。
    • 常用特征检测算法:FAST、STAR、SIFT、SURF、ORB等。
  7. 形态学操作

    • 膨胀:图像中的高亮部分进行膨胀。
    • 腐蚀:原图中的高亮部分被腐蚀。
    • 开运算:先腐蚀后膨胀,用于消除小物体、分离物体、平滑较大物体的边界。
    • 闭运算:先膨胀后腐蚀,排除小型黑洞。
    • 形态学梯度:膨胀图与腐蚀图之差,用于保留物体的边缘轮廓。
    • 顶帽运算:原图像与开运算的结果图之差,用于分离比临近点亮一些的斑块。
    • 黑帽运算:闭运算结果图与原图像之差,用于分离比邻近点暗一些的斑块。
  8. 其他图像处理技术

    • 漫水填充法:用特定的颜色填充算法填充连通区域,用于标记或分离图像的一部分进行处理或分析。
    • 仿射变换:线性变换和平移的组合,保持了二维图形的平直性和平行性。
    • 图像金字塔:包括高斯金字塔和拉普拉斯金字塔。
    • 凸包:将最外层的点连接起来构成的凸多边形,用于理解物体形状或轮廓。
    • 反向投影:记录给定图像中的像素点如何适应直方图模型像素分布的方式。
    • Harris角点检测算法:直接基于灰度图像的角点提取算法,稳定性高。
    • 分水岭算法:图像区域分割法,将跟临近像素间的相似性作为重要的参考依据。
  9. OpenCV相关

    • 主要模块:包括Core、图像滤波、几何图像变换、混合图像变换、直方图、结构分析及形状描述、运动分析及目标跟踪、特征及目标检测等。
    • 数据类型:如CV_8UC3表示8位无符号整型,3个通道。
    • Scalar类:表示具有4个元素的数组,用于传递像素值。
    • 文件扩展:.hpp将实现代码混入.h头文件,无需单独编译

以上内容涵盖了图像处理中的基础概念、滤波方法、边缘检测、特征提取与匹配、形态学操作以及其他相关技术,并简要介绍了OpenCV的一些基本内容。

阅读全文

与opencv膨胀算法相关的资料

热点内容
贴标签的app叫什么 浏览:997
二级代理服务器地址 浏览:433
怎么加密文件夹吗 浏览:859
perl源码编译生成库 浏览:583
做一个教育app有什么资源可以利用 浏览:504
安卓手机如何迁移苹果 浏览:961
浙江大学java 浏览:569
在文件夹中怎么新建256色位图 浏览:56
大话设计模式python 浏览:609
程序员干到多少岁 浏览:667
卡盟系统源码免费 浏览:163
程序员官网报名 浏览:106
国外程序员最好的网站 浏览:749
python中mesh库 浏览:761
安卓手机obe锁了怎么办 浏览:305
可编译的运行模块代码 浏览:318
android自定义控件方法 浏览:658
内网ubuntu怎么访问服务器地址 浏览:401
安卓手机如何用闪光灯投影 浏览:727
Python用字典做账号密码 浏览:399