首页 > 其他分享 >OpenCV(cv::erode())

OpenCV(cv::erode())

时间:2024-09-14 11:47:35浏览次数:1  
标签:erode 卷积 像素 OpenCV 腐蚀 图像 cv

目录



cv::erode() 是 OpenCV 中的图像形态学变换函数之一,用于执行图像的腐蚀操作。腐蚀是一种将图像中的白色区域缩小的操作,通常用于去除噪声、分离相邻的物体,或将小的图像细节消除。



1. 函数定义

void cv::erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1,-1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue() );

参数:

  1. srcInputArray 类型,表示输入的源图像。图像必须是单通道或多通道的二值图像或灰度图像。

  2. dstOutputArray 类型,表示输出的目标图像。目标图像的尺寸和类型与源图像相同。

  3. kernelInputArray 类型,表示腐蚀操作的结构元素(也叫做卷积核)。可以通过函数 cv::getStructuringElement() 来生成。这个核用于决定腐蚀的方式。常见的核包括矩形(MORPH_RECT)、椭圆形(MORPH_ELLIPSE)和十字形(MORPH_CROSS)等。kernel 的尺寸影响腐蚀效果,越大的核,腐蚀的效果越明显。

  4. anchorPoint 类型,表示腐蚀操作的锚点(即核的中心点)。默认值为 Point(-1, -1),这意味着锚点位于结构元素的中心。

  5. iterationsint 类型,表示腐蚀操作重复的次数。默认值是 1,如果需要更强的腐蚀效果,可以增大此值。

  6. borderTypeint 类型,指定边界的处理方式。

    • BORDER_CONSTANT:使用常数值填充边界。
    • BORDER_REPLICATE:重复最外边缘的像素。
    • BORDER_REFLECT:边界以镜像的方式反射。
  7. borderValueScalar 类型,仅当 borderTypeBORDER_CONSTANT 时使用,指定填充边界的值。



2. 工作原理

腐蚀操作:将卷积核在图像上滑动,滑动到每个位置时,计算卷积核覆盖区域的最小值,并将最小值赋给目标图像中相应的位置。

换句话说,只有当卷积核完全覆盖在图像的前景(白色部分)上时,输出像素才会保留原样,否则会被腐蚀。

假设有一个 3x3 的卷积核:

1 1 1
1 1 1
1 1 1

当该卷积核在图像上滑动时,核覆盖区域内的最小像素值将作为输出。如果在二值图像中,前景像素为 1,背景像素为 0,腐蚀会使前景变得更小,背景像素扩展。



3. 示例

以下是一个使用 cv::erode() 的 C++ 示例代码:

#include <opencv2/opencv.hpp>
using namespace cv;

int main() {
    Mat src = imread("image.jpg", IMREAD_GRAYSCALE);  // 读取灰度图像
    Mat dst;

    // 创建 3x3 矩形结构元素
    Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));

    // 执行腐蚀操作
    erode(src, dst, kernel);

    // 显示结果
    imshow("Original Image", src);
    imshow("Eroded Image", dst);
    waitKey(0);
    return 0;
}

在这段代码中,我们使用 getStructuringElement() 创建了一个 3x3 的矩形卷积核,然后调用 erode() 对图像进行腐蚀。腐蚀后的图像中,白色区域会缩小,细小的白色噪声也可能被去除。



4. 应用场景

  • 去除噪声:腐蚀可以用来去除图像中的小噪声点(如在二值化处理后的图像中)。
  • 分离物体:如果图像中的两个物体彼此接触,通过腐蚀可以使它们分开。
  • 形态学梯:腐蚀和膨胀操作可以结合使用,获取图像的形态学梯度(即边缘)。


总结

cv::erode() 是一种常用于图像处理的形态学操作,主要功能是缩小图像中的前景对象。通过调整结构元素的大小和形状,可以控制腐蚀的程度和方向。在实际应用中,它通常与其他形态学操作如膨胀(cv::dilate())结合使用,完成更复杂的图像处理任务。



标签:erode,卷积,像素,OpenCV,腐蚀,图像,cv
From: https://www.cnblogs.com/keye/p/18413680

相关文章

  • OpenCV(cv::GaussianBlur())
    目录1.函数定义2.高斯模糊原理2.1高斯核\((3\times3)\)2.1.1高斯核的创建2.1.2卷积操作2.1.3边界处理2.1.4完成模糊处理2.1.5总结2.2高斯核\((5\times5)\)3.示例4.高斯核的生成5.高斯模糊的应用场景6.高斯模糊与其他模糊方式的对比7.总结cv::GaussianBlur()......
  • opencv-python学习笔记9-图像分割
    目录一、图像分割的概述、技术现状、应用:技术现状:传统图像分割技术:深度学习驱动的图像分割技术:应用领域:二、 图像分割的方法和分类:(1)基于阈值的分割方法:(2)基于区域的分割方法:(3)基于边缘的分割方法:(4)基于特定理论的分割方法:(5)基于深度学习的分割方法:三、图像分割的原理:......
  • CVE-2015-5254(ActiveMQ-反序列化漏洞)
    漏洞描述编号:CVE-2015-5254影响版本:ApacheActiveMQ5.13.0之前5.x版本CVE地址:CVE-2015-5254漏洞原理:该漏洞源于程序没有限制可在代理中序列化的对象。远程攻击者可借助特制的序列化的JavaMessageService(JMS)ObjectMessage对象利用该漏洞执行任意代码复现环境windows,doc......
  • VU9P加速卡设计原理图 :410-基于XCVU9P+ C6678的100G光纤的加速卡
    基于XCVU9P+C6678的100G光纤的加速卡一、板卡概述     二、技术指标 •  板卡为自定义结构,板卡大小332mmx260mm; •  FPGA采用Xilinx Virtex UltralSCALE+ 系列芯片 XCVU9P; •  FPGA挂载4组FMC HPC 连接器; •  板载4路QS......
  • 视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践
    随着科技的飞速发展,视频监控平台在社会安全、企业管理、智慧城市构建等领域发挥着越来越重要的作用。一个高效的视频监控平台,不仅依赖于先进的硬件设备,更离不开强大的视频处理技术作为支撑。这些平台集成了多种先进的视频技术,以确保实时监控、智能分析、高效传输和存储。今天我们......
  • 解码未来:H.265与H.266技术对比及EasyCVR视频汇聚平台编码技术优势
    随着视频技术的不断发展,视频编码标准也在不断更新迭代。H.265(也称为HEVC,HighEfficiencyVideoCoding)和H.266(也称为VVC,VersatileVideoCoding)作为当前和未来的主流视频编码标准,各自在提升视频压缩效率、画质以及支持新视频类型方面展现出了显著的优势。本文将深入探讨H.265与H.2......
  • opencv实战项目二十三:基于BEBLID描述符的特征点匹配实现表盘校正
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、特征点匹配介绍二、特征点检测三、特征描述符计算四,描述符的匹配筛选五,根据匹配结果映射图片六,整体代码:七,效果:前言在数字化时代,图像处理技术的应用日益广泛,其中表盘校正作为一项重要......
  • 为什么H.266未能普及?EasyCVR视频编码技术如何填补市场空白
    H.266,也被称为VersatileVideoCoding(VVC),是近年来由MPEG(MovingPictureExpertsGroup)和ITU(InternationalTelecommunicationUnion)联合开发并发布的新一代国际视频编码标准。该标准于2020年定稿,旨在提高视频压缩效率,特别是在4K和8K超高清视频领域。然而,尽管H.266拥有诸多技术优势......
  • ubuntu20.04源码安装支持cuda的opencv4.5.5,显卡Geforce RTX4090
    ubuntu20.04源码安装支持cuda的opencv4.5.5,显卡GeforceRTX4090参考了这位博主的内容:https://blog.csdn.net/u013454780/article/details/128357962sudoapt-getupdatesudoapt-getupgrade安装依赖//安装前的必备包sudoapt-getinstallbuild-essentialsudoap......
  • 《OpenCV计算机视觉》—— 身份证号码识别案例
    文章目录一、案例实现的整体思路二、代码实现1.首先定义两个函数2.模板图像中数字的定位处理3.身份证号码数字的定位处理4.使用模板匹配,计算匹配得分,找到正确结果一、案例实现的整体思路下面是一个数字0~9的模板图片案例身份证如下:对数字模板的处理通过对模板......