图像处理基础及OpenCV实现(七)

七、 图像形态学处理

图像形态学是基于数学拓扑学的概念,主要分析图像几何结构,几何距离、形状、连通性和边界等特点,包括腐蚀(erosion)、膨胀(dilation)、开(opening)、闭(closing)四种基本运算。图像形态学操作一般用于二值图像。二值图像是一种2bit图像,每个像素点的值只有0和1两种情况,二值图像的处理运算速度快,方便提取图像的某些典型的信息,因此广泛地用于各类图像处理中。步骤通常是先依据某些规则将图像二值化,经过处理后提取特征再进行识别。

1、 图像腐蚀

图像腐蚀操作可以缩小图形边界,使整个图形边界向内部收缩。过程描述为对图形A用模板B来腐蚀,将A中每个点扩大成B的形状,若该点仍然包含在A中,则保留,若该点扩大后存在不在A之内的区域,则该点被腐蚀。腐蚀模板可根据具体需求,取正方形、菱形、圆形、十字形等,具体操作可以等效为取模板内的最小值,对二值图像来说,对应点的模板内区域若存在0,则该点被腐蚀。

Opencv函数 做腐蚀操作

	CVAPI(void)  cvErode( const CvArr* src, CvArr* dst,
                      IplConvKernel* element CV_DEFAULT(NULL),
                      int iterations CV_DEFAULT(1) );

参数一:源图像
参数二:输出图像
参数三:结构核元素,默认NULL为3*3矩形
参数四:腐蚀次数,默认1次

注:腐蚀操作实际上是取模板区域内的最小值,对于灰度图像来说,值越大越接近白色,腐蚀操作会让黑色区域变小,白色区域变大。

Opencv函数 创建结构元素,作为腐蚀膨胀的参数

CVAPI(IplConvKernel*)  cvCreateStructuringElementEx(
            int cols, int  rows, int  anchor_x, int  anchor_y,
            int shape, int* values CV_DEFAULT(NULL) );

参数一:列数目
参数二:行数目
参数三:锚点的水平偏移量,为0时以结构元素水平中心做操作
参数四:锚点的垂直偏移量,为0时以结构元素垂直中心做操作
参数五:结构元素形状

enum MorphShapes_c
{
   
   
    		CV_SHAPE_RECT      =0,
    		CV_SHAPE_CROSS     =1,
    		CV_SHAPE_ELLIPSE   =2,
    		CV_SHAPE_CUSTOM    =100 //自定义元素
};

参数六:当参数5是自定义元素时,表示自定义元素的数组指针,其中非零值表示属于该结构元素形状中的一点;当为NULL时,表示默认的矩形形状。

代码如下:

IplImage *g_src, *dst;
g_src = cvCreateImage(cvGetSize(m_ipl), IPL_DEPTH_8U, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值