精华内容
下载资源
问答
  • 对图像进行膨胀和腐蚀操作,简单验证膨胀和腐蚀功能
  • 二元膨胀和腐蚀的更快实现。 我们的函数利用了 MATLAB 对结构元素的分解,但它们的结果可能会快得多。 尝试运行 example.m 以查看速度改进因子,更改参数。 如果你觉得这个软件有用,请贡献。 向 luigi.rosa@...
  • 图像的膨胀和腐蚀

    2017-02-09 15:44:24
    图像处理中对字符图片进行膨胀和腐蚀操作,vs2012,opencv
  • 膨胀和腐蚀

    千次阅读 2019-05-10 09:48:48
    %膨胀和腐蚀 f=imread('aerial.tif'); subplot(2,2,1),imshow(f),title('原图像') se=strel('square',3);%结构算子 gd=imdilate(f,se);%膨胀 subplot(2,2,2),imshow(gd),title('膨胀后的图像') ge=imerode(f,se);%...
    %膨胀和腐蚀
    f=imread('aerial.tif');
    subplot(2,2,1),imshow(f),title('原图像')
    
    se=strel('square',3);%结构算子
    gd=imdilate(f,se);%膨胀
    subplot(2,2,2),imshow(gd),title('膨胀后的图像')
    
    ge=imerode(f,se);%腐蚀
    subplot(2,2,3),imshow(ge),title('腐蚀后的图像')
    
    morph_grad=imsubtract(gd,ge);%形态学梯度
    subplot(2,2,4),imshow(morph_grad),title('形态学梯度')
    
    
    展开全文
  • 膨胀和腐蚀.m

    2012-05-26 19:05:31
    用途与膨胀和腐蚀,可以对图像进行处理。请大家仔细分析
  • OpenCV的膨胀和腐蚀

    千次阅读 2019-08-01 22:20:53
    在OpenCV中,膨胀和腐蚀是基本的形态学操作,膨胀是使用像素邻域内的局部极大运算来膨胀一张图片,腐蚀是使用像素邻域内的局部极小运算来腐蚀一张图片,二者是一对相反的操作,但是都是对图像中的白色部分(高亮部分...

    在OpenCV中,膨胀和腐蚀是基本的形态学操作,膨胀是使用像素邻域内的局部极大运算来膨胀一张图片,腐蚀是使用像素邻域内的局部极小运算来腐蚀一张图片,二者是一对相反的操作,但是都是对图像中的白色部分(高亮部分)而言的,膨胀用dilate()函数,腐蚀用erode()函数,函数原型分别如下:

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

    一、实例代码:

    #include <opencv2/opencv.hpp>
    //#include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    #include <iostream>
    #define WINDOWNAME "【效果图】"
    using namespace std;
    using namespace cv;
    
    //------------------------【全局变量声明】
    Mat g_srcImage, g_dstImage;      //原始图和效果图
    int g_nTrackbarNumber = 0;       //0表示腐蚀erode,1表示膨胀dilate,初始值设为0表示用腐蚀
    int g_nStructElementSize = 3;    //结构元素(内核矩阵)的尺寸
    
    
    //-------------------------【全局函数声明】
    void Process();                           //膨胀和腐蚀的处理函数
    void on_TrackbarNumChange(int, void*);    //回调函数
    void on_ElementSizeChange(int, void*);    //回调函数
    
    
    int main()
    {
    	//改变console字体颜色
    	//system("color 2F");
    
    	//载入原图
    	g_srcImage = imread("F:\\TuPian\\littlecat.jpg");
    	if (g_srcImage.data == NULL)
    	{
    		cout << "读取srcImage失败!" << endl;
    	}
    
    	//显示原始图
    	const char* pName1 = "原始图";
    	namedWindow(pName1);
    	imshow(pName1, g_srcImage);
    
    	// 进行初次腐蚀操作并显示效果图
    	const char* Pname = "图2";
    	namedWindow(Pname);
    	Mat element = getStructuringElement(MORPH_RECT, Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1), Point(g_nStructElementSize,g_nStructElementSize));
    	erode(g_srcImage, g_dstImage, element);
    	imshow(Pname, g_dstImage);
    
    	namedWindow(WINDOWNAME);
    	//显示的图像是根据图像的名称来显示的
    	//只是创建了带有窗口名的一个窗口,里面并没有任何图像内容
    	//创建轨迹条
    	//在创建的窗体中创建一个滑动条控件
    
    	createTrackbar("腐蚀/膨胀", WINDOWNAME, &g_nTrackbarNumber, 1, on_TrackbarNumChange);  //第三个参数是滑块的初始位置,第4个参数是最大值
    	createTrackbar("内核尺寸", WINDOWNAME, &g_nStructElementSize, 21, on_ElementSizeChange);
    	//on_TrackbarNumChange(g_nTrackbarNumber, 0);          //【回调函数初始化】
    	//on_ElementSizeChange(g_nStructElementSize, 0);       //【回调函数初始化】
    	//需要进行回调函数初始化,不进行初始化就没有初始图像显示
    	
    	//按任意键退出
    	waitKey(0);
    
    	return 0;
    	//std::cout << "Hello World!\n"; 
    }
    
    
    //-----------------------------【Process()函数】
    //描述:进行自定义的腐蚀和膨胀操作
    void Process()
    {
    	//获取自定义内核
    	Mat element = getStructuringElement(MORPH_RECT, Size(2 * g_nStructElementSize + 1, 2 * g_nStructElementSize + 1), Point(g_nStructElementSize, g_nStructElementSize));
    	//进行膨胀或腐蚀操作
    	if (g_nTrackbarNumber == 0)
    	{
    		erode(g_srcImage, g_dstImage, element);
    	}
    	else
    	{
    		dilate(g_srcImage, g_dstImage, element);
    	}
    	
    	//显示效果图
    	imshow(WINDOWNAME, g_dstImage);
    }
    
    //-----------------------------【on_TrackbarNumChange()函数】
    //描述:腐蚀和膨胀之间切换开关的回调函数
    void on_TrackbarNumChange(int, void*)
    {
    	//腐蚀和膨胀之间效果已经切换,回调函数体内需调用一次Process函数,使改变后的效果立即生效并显示出来
    	Process();
    }
    
    //-----------------------------【on_ElementSizeChange()函数】
    //描述:腐蚀和膨胀操作内核改变时的回调函数
    void on_ElementSizeChange(int, void*)
    {
    	//内核尺寸已经改变,回调函数体内需调用一次Process函数,使改变后的效果立即生效并显示出来
    	Process();
    }
    

    二、结果:

     

    调整第3幅图上的滑块,结果如下图所示:

    第3幅图之所以最开始没有显示出图像,是因为没有进行函数的回调,代码中的这两行注释掉了,

    //on_TrackbarNumChange(g_nTrackbarNumber, 0);          //【回调函数初始化】
    //on_ElementSizeChange(g_nStructElementSize, 0);       //【回调函数初始化】

    如果不注释掉这两行,则第3幅图最开始就会显示出来。

     

     

    参考: 《OpenCV3编程入门》毛星云、冷雪飞等编著,电子工业出版社,2018年11月第19次印刷,p187-198。

     

    展开全文
  • 膨胀和腐蚀的形态操作函数
  • 膨胀和腐蚀简述

    2020-08-17 17:22:33
    首先需要一个卷积内核,通常是正方形,然后这个正方形可以定义一个锚点,也可以说是腐蚀膨胀作用像素点,一般定义在中心。 膨胀:把内核在图片上滑动,每次滑动,都会把内核中像素最高的值赋给锚点 原图: ...

    本文参考自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html

    首先需要一个卷积内核,通常是正方形,然后这个正方形可以定义一个锚点,也可以说是腐蚀或膨胀的作用像素点,一般定义在中心。

    膨胀:把内核在图片上滑动,每次滑动,都会把内核中像素最高的值赋给锚点

    原图:

    膨胀后:

    可见当内核划到一定位置使锚点处在像素值为0的点时,周围的像素值为255的值就会赋给锚点,也就会使黑色变少。

    腐蚀:把内核在图片上滑动,每次滑动,都会把内核中像素最低的值赋给锚点

    原图:

    腐蚀后:

    可见当内核划到一定位置使内核接触到黑色部分时,也就是内核中有的像素的像素值为0时,锚点周围的像素值最低值,也就是0,就会赋给锚点,也就会使黑色变多。

    另外加一个上课听老师讲到的经验,腐蚀或膨胀二值图像时,你使用的内核的形状会使黑色或白色的区域接近于内核,所以如果有和我一样在参加Naoqi高尔夫竞赛的朋友同学可以使用圆形的内核来膨胀二值图像哈哈哈。

    展开全文
  • opencv 膨胀和腐蚀

    2017-08-29 17:00:20
    膨胀腐蚀是对高亮部分的操作(及大像素值)膨胀腐蚀可以消除噪声,连接相邻区域,分割独立区域,寻求区域最大最小值 膨胀的原理是通过一个核去边缘覆盖,然后取这个核的最大值,把核的其他区域用最大值替换,...

    膨胀腐蚀是对高亮部分的操作(及大像素值)膨胀腐蚀可以消除噪声,连接相邻区域,分割独立区域,寻求区域最大最小值


    膨胀的原理是通过一个核去边缘覆盖,然后取这个核的最大值,把核的其他区域用最大值替换,结果就是白色区域扩张了,对于彩色或灰度图就是图片像素变大,变得更亮

    腐蚀的原理刚好与膨胀相反,腐蚀是把区域内的值用区域内的最小值代替,对于二值化图就是用0(黑)代替。



    一:膨胀函数 dilate

    dilate( InputArray src, OutputArray dst, InputArray kernel,   Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,  constScalar&borderValue=morphologyDefaultBorderValue() );

    第三个参数是Mat类的核可以用Mat elemt=getStructuringElement(MORPH_RECT,Size(5,5),Point(-1,-1));函数得到

    getStructuringElement中的第一个参数是核的形状MORPH_RECT=0--矩形, MORPH_CROSS=1--十字形, MORPH_ELLIPSE=2--椭圆

    第二个参数是内核大小

    第三个是锚点位置(-1,-1)表示锚点在中心

    dilate函数的第四个参数是内核位置(-1,-1)表示锚点在中心,

    第五个参数是腐蚀次数

    其函数最后最后几个参数一般默认




    二:腐蚀函数erode

    其参数类型和膨胀函数的参数类型一致

    erode(srcImage,dstImage,elemt);



    效果图



    腐蚀的有点严重线条全部不见了



    三:开运算(morph_open)

    开运算实质就是对图像先腐蚀再膨胀,开运算可以消除小物体,在纤细点处分离物体,并在平滑较大物体时不明显的改变面积


    四:闭运算(morph_close)

    闭运算时候先膨胀再腐蚀,闭运算可以消除小黑点


    五:形态学梯度(gradient)

    形态学梯度是膨胀图与腐蚀图只差,可以保留和突出边缘


    六:顶帽(morph_tophat)

    顶帽是闭运算结果与原图做差的结果,可以分离比临近点亮一些的斑块(一些大的亮斑)


    七:黑帽(morph_blacktop)

    黑帽是原图与开运算结果 相减的结果,可以分离比临近点暗的斑块

    展开全文
  • 膨胀和腐蚀是数字形态学里两个基本的操作。简单的说,膨胀是把亮的区域变大。腐蚀就是把暗的区域变大。 膨胀函数: B=imdilate(A,zore); A是ru
  • 腐蚀膨胀 VS2017编译通过,可直接运行 包括水平腐蚀 垂直腐蚀 全方位腐蚀 水平膨胀处理 垂直膨胀处理 全方向膨胀 开启与闭合运算
  • OpenCV图像处理-膨胀和腐蚀

    千次阅读 2019-08-06 11:27:18
    OpenCV图像处理-膨胀腐蚀前言概念结构元素膨胀腐蚀示例 前言 本文使用的环境为:Qt5.11 + OpenCV3.4.6 环境安装参考文档:https://blog.csdn.net/z634863434/article/details/89950961 概念 假设有图像A结构元素...
  • 灰度膨胀和腐蚀算法

    千次阅读 2016-01-15 12:01:16
    灰度膨胀算法: 1、膨胀可以使一个孤立的高亮噪音扩大化。 2、可以使用物体的一些高亮度的关键细节丢失。 灰度腐蚀算法: 1、腐蚀可以使一个孤立的低亮噪音扩大化。 2、可以使用物体的一些低亮度的...
  • 关于膨胀和腐蚀的概念请参考: https://blog.csdn.net/Ibelievesunshine/article/details/100522440 close all;clear all;clc; I = imread('rice.png'); se = strel('square',2); J = imdilate(I,se); K = ...
  • opencv无敌自学第九天膨胀和腐蚀.rtf
  • 图像腐蚀和膨胀

    2018-04-09 20:23:57
    图像腐蚀和膨胀案例,引用c
  • 文章目录前言一、腐蚀二、膨胀总结 前言 腐蚀作用:去除图像中不想要的小细节,比如一张二值图片中的噪点或者小细节。 膨胀作用膨胀的结果就是放大细节,放大的程度,取决于element B的大小。 一般都是先进行...
  • 膨胀和腐蚀的例子

    千次阅读 2016-05-18 19:26:25
    二值图像的腐蚀和膨胀图像数字处理中应用相当广泛,代码处理也很简单,只不过一些资料在介绍腐蚀和膨胀原理时,用一些形态学、集合上的概念术语,搞得也有些”高深莫测“了。  从图像处理角度看,二值图像的...
  • halcon学习-膨胀和腐蚀

    千次阅读 2019-01-23 22:55:26
    一个字节表示一个像素是灰度图像,三个字节表示一个像素是RGB图像,一个字节8位位深度为8,三个字节位深度...开运算:先腐蚀膨胀(也减少像素),可以将两个物体分开,可以消除离散点"毛刺",。 闭运算:是先膨...
  • 基于OpenCV的膨胀和腐蚀

    千次阅读 2016-11-07 23:59:24
    本博客讲解形态雪中的膨胀和腐蚀操作。使用的函数为: cv::erode cv::dilate
  • 目录1 膨胀和腐蚀介绍1.1 膨胀1.2 腐蚀 1 膨胀和腐蚀介绍 腐蚀和膨胀是形态学最基本的操作,都是针对白色部分(高亮部分)而言的。 膨胀就是使图像中高亮部分扩张,得到比原图更大的高亮区域;腐蚀是原图像中的高亮...
  • 膨胀和腐蚀算法原理

    千次阅读 2015-01-18 08:36:42
    腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图...
  • 膨胀和腐蚀在MATLAB中

    千次阅读 2016-05-18 19:52:10
    腐蚀和膨胀操作更细致的分析(主要谈论涉及图像边缘的腐蚀和膨胀运算)。 注:结构元素在扫描图像中的每个像素时,结构元素的邻域有部分会在图像外面。比如当结构元素扫描图像上方第一行像素值(这里默认结构元素为3×...
  • 基于 Matlab 的腐蚀和膨胀的边缘检测 一实验目的 : 掌握运用 Matlab 软件对灰度与二值图像的膨胀腐蚀的处理方法 二实验环境(软件条件) Windws2000/XP MATLAB 7.x 三实验内容 1图像膨胀的 Matlab 实现 实验原理 ...
  • opencv 图像处理——膨胀和腐蚀   腐蚀和膨胀是基本的形态学运算。形态学中最基本的概念是结构元素。结构元素可以简单的定义为像素的组合,在对应的元素上定义了一个原点(也称为锚点)。 Opencv中的API cv::Mat ...
  • Python-Opencv中的膨胀和腐蚀

    千次阅读 2019-04-17 21:43:36
    Python-Opencv中的膨胀和腐蚀 腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。 膨胀就是图像中的高亮部分进行膨胀,“邻域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中高亮部分被腐蚀,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,127
精华内容 5,650
关键字:

膨胀和腐蚀的作用