您的位置:首页 > 运维架构

Opencv 基础学习二(对图片进行腐蚀处理、膨胀处理)

2017-11-21 23:54 726 查看
形态学概述:(摘自 OpenCV 3入门编程)

形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中指的形态学,往往表示的是数学形态学。下面一起来了解数学形态学的概念。

数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。

简单来讲,形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有两种,他们是:膨胀(dilate)与腐蚀(eroad)

膨胀与腐蚀能实现多种多样的功能,主要如下:

1.消除噪声

2.分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。

3.寻找图像中的明显的极大值区域或极小值区域

4.求出图像的梯度
       在进行腐蚀和膨胀的讲解之前,首先需要注意,腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。

现在直接上代码:

腐蚀:

// 对图片进行腐蚀处理
+ (UIImage *)ImageToMPRPHView:(UIImage *)image
{
//实现功能
//第一步:将iOS图片->OpenCV图片(Mat矩阵)
Mat mat_image_src;
UIImageToMat(image, mat_image_src);
Mat erodeElement = getStructuringElement(cv::MORPH_RECT, cv::Size(20,20));
Mat mat_image_dst;
erode(mat_image_src, mat_image_dst, erodeElement);
return MatToUIImage(mat_image_dst);
}


膨胀

// 对图片进行膨胀处理
+ (UIImage *)ImageToDilateView:(UIImage *)image
{
//实现功能
//第一步:将iOS图片->OpenCV图片(Mat矩阵)
Mat mat_image_src;
UIImageToMat(image, mat_image_src);
Mat erodeElement = getStructuringElement(cv::MORPH_RECT, cv::Size(20,20));
Mat mat_image_dst;
dilate(mat_image_src, mat_image_dst, erodeElement);
return MatToUIImage(mat_image_dst);
}

注意:

OpenCV提供了一个函数getStructuringElement,可以获取常用的结构元素的形状:矩形(包括线形)、椭圆(包括圆形)及十字形。

MORPH_RECT, MORPH_ELLIPSE, MORPH_CROSS





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: