腐蚀和膨胀

腐蚀:

cvErode

锚点:用于判断的中心点

关心点:为0不关心,为1关心

腐蚀的时候锚点对准图像的像素,这个像素的值取锚点和关心点中的最小值,注意都是和原图像对比,前面因腐蚀变化的点不影响后面腐蚀的点

膨胀:

cvDilate

和腐蚀相反,取锚点和关心点中的最大值

程序:

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int ErodeDilate(int argc,char** argv)
{
IplImage* image=cvLoadImage("e:\\picture\\5.JPG");
cvNamedWindow("src");
cvShowImage("src",image);
//步骤1:创建自定义元素
int cols=4; //定义元素的列数
int rows=4; //定义元素的行数
int anchor_x=2; //定义锚点在这个元素中的x坐标,注意坐标从0开始
int anchor_y=2; //定义锚点的y坐标
int value[]={0,0,0,0,
         0,0,1,0,
 0,1,1,0,
 0,0,0,0
};
IplConvKernel* element=cvCreateStructuringElementEx(cols,rows,anchor_x,anchor_y,CV_SHAPE_CUSTOM,value);
//步骤2:先膨胀,取最大值,去掉黑色(小值)点
IplImage* DilateDst=cvCreateImage(cvGetSize(image),8,3);
cvDilate(image,DilateDst,element,5);
cvNamedWindow("DilateDst");
cvShowImage("DilateDst",DilateDst);
//步骤3:再腐蚀,扩大小值(如黑色部分)
IplImage* ErodeDst=cvCreateImage(cvGetSize(DilateDst),8,3);
cvErode(DilateDst,ErodeDst,element,5);
cvNamedWindow("ErodeDst");
cvShowImage("ErodeDst",ErodeDst);
cvWaitKey(0);
cvDestroyWindow("src");
cvDestroyWindow("DilateDst");
cvDestroyWindow("ErodeDst");
cvReleaseImage(&image);
cvReleaseImage(&DilateDst);
cvReleaseImage(&ErodeDst);
return 0;
}

腐蚀和膨胀

时间: 2024-08-08 09:38:43

腐蚀和膨胀的相关文章

opencv2函数学习之erode、dilate:图像腐蚀和膨胀

图像腐蚀和图像膨胀是图像中两种最基本形态学操作. void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() ); void dilate( const Ma

OpenCV图像处理篇之腐蚀与膨胀

转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最基本的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算.腐蚀和膨胀的应用非常广泛,而且效果还很好: 腐蚀可以分割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作很容易去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像分割 等等...(在文后给出一则简单实用膨胀操作提

opencv中的腐蚀与膨胀(转)

图像腐蚀和图像膨胀是图像中两种最基本形态学操作. void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() ); void dilate( const Ma

图像的腐蚀与膨胀

数字图像处理中的形态学 转自:http://blog.csdn.net/sunny3106/archive/2007/08/15/1745485.aspx (摘自某文献,因为贴图的数目有限制,后面的公式图片没有能够上,电脑重装后文档已经找不到了,囧) 一    引言        数学形态学是一门建立在集论基础上的学科,是几何形态学分析和描述的有力工具.数学形态学的历史可回溯到19世纪.1964年法国的Matheron和Serra在积分几何的研究成果上,将数学形态学引入图像处理领域,并研制了基于

Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

19      腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RECT,交叉形MORPH_CROSS,椭圆形MORPH_ELLIPSE.Matlab中会有更多一点的模板. 例如: Mat element = getStructuringElement(MORPH_RECT,Size(15,15)); erode(srcImage,dstImage,

形态学滤波:(1)腐蚀与膨胀 (2)开运算,闭运算,形态学梯度,顶帽,黑帽

一.形态学概述 图像处理中的形态学一般指的是数学形态学. 数学形态学是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论.其基本运算包括:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度等. 简单来讲,形态学操作就是基于形状的一系列图像处理操作. 二.形态学滤波 (1)腐蚀与膨胀 膨胀和腐蚀能实现多种多样的功能,主要如下: 消除噪声: 分割(isolate)

OpenCV学习 7:图像形态学:腐蚀、膨胀

原创文章,欢迎转载,转载请注明出处 首先什么是图像形态学?额,这个抄下百度到的答案.基本思想:    用具有一定形态的结构元素去度量和提取图像中的对应形状已达到对图像分析和识别的目的,形态学图像处理表现为一种领域运算方式(这个和前面的模糊运算是一样的运算方式),效果取决于结构元素(就是前面smooth里面的核)的大小,内容以及逻辑运算的性质.看了这些定义是不是很晕,对很晕...我比较关心的是它的用途和怎么计算.    用途是:简化图像数据,保持他们基本的形状特性,并出去不相干的结构.    基本

图像腐蚀、膨胀、基本原理和程序实现

图像的腐蚀与膨胀 一.原理: ⑴ 图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界.骨架以及凸壳,还包括用于预处理或后处理的形态学过滤.细化和修剪等.图像形态学处理中我们感兴趣的主要是二值图像. ⑵ 二值图像的逻辑运算 逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段.在图像处理中用到的主要逻辑运算是:与.或和非(求补),它们可以互相组合形成其他逻辑运算. ⑶ 膨胀和腐蚀 膨胀

Qt 5.3 下OpenCV 2.4.11 开发(13)腐蚀与膨胀

默认的腐蚀与膨胀操作: #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; int main() { Mat src = imread("lena.jpg", 0); Mat