opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
来源:互联网 发布:数控铣床手工编程 编辑:程序博客网 时间:2024/06/05 16:04
腐蚀和膨胀是最基本的形态学运算。数学形态学最基本的工具是结构元素。结构元素简单的定义为像素的结构(形状)以及一个原点(锚点)。使用形态学滤波涉及对图像的每个像素应用这个结构元素。当结构元素的原点与给定的像素对齐,它与图像相交部分定义了一组进行形态学运算的像素。
腐蚀:每个像素与结构相交的集合替换成最小的像素值
膨胀:每个像素与结构相交的集合替换成最小的像素值
void erode( InputArray src, OutputArray dst, InputArray kernel,
Point anchor = Point(-1,-1), int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue() );
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( 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 Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,const Scalar& borderValue=morphologyDefaultBorderValue() );
可见,腐蚀和膨胀的参数完全一样。
参数:
src:原图像。
dst:目标图像。
element:腐蚀操作的内核。 如果不指定,默认为一个简单的 矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement().
anchor:默认为Point(-1,-1),内核中心点。省略时为默认值。
iterations:腐蚀次数。省略时为默认值1。
borderType:推断边缘类型,具体参见borderInterpolate函数。默认为BORDER_DEFAULT,省略时为默认值。
borderValue:边缘值,具体可参见createMorphoogyFilter函数。可省略。
通常情况下,我们可以使用函数getStructuringElement()来制作操作内核。
Mat getStructuringElement(int shape, Size esize, Point anchor=Point(-1,-1));
参数:
shape:内核形状,主要有MORPH_RECT,MORPH_CROSS和MORPH_ELLIPSE,分别为矩形、椭圆形和交叉形,对应的值分别为0,1,2
enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };
esize:内核大小。
anchor:内核锚点,默认为内核中心点。
例:
Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) ); /// 腐蚀操作 erode( src, dst, element );
Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) ); /// 膨胀操作 dilate( src, dst, element );
#include <iostream>#include "opencv2/opencv.hpp"using namespace std;using namespace cv;int main(){Mat image, eroded, dilated;image = imread("D:/1.jpg", 0);erode(image, eroded, Mat());dilate(image, dilated, Mat());namedWindow("image");imshow("image", image);namedWindow("eroded");imshow("eroded", eroded);namedWindow("dilated");imshow("dilated", dilated);waitKey(0);}
- opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- openCv学习笔记(四)-数学形态学1(二值图像的膨胀、腐蚀、开运算和闭运算)
- 【OpenCV学习笔记 008】基于形态学运算的图像变换
- opencv----形态学运算:腐蚀、膨胀
- OpenCV学习笔记-形态学操作-腐蚀膨胀-开闭运算
- 数学形态学图像处理——图像腐蚀,膨胀,开闭运算(《学习OpenCV》练习题第五章第四题)
- 第五章 基于形态学运算的图像变换
- 使用形态学滤波对图像进行腐蚀、膨胀运算
- 使用形态学滤波对图像进行腐蚀、膨胀运算
- 基于形态学运算的腐蚀,膨胀,开运算,闭运算
- 基于形态学运算的腐蚀,膨胀,开运算,闭运算
- 图像形态学运算--腐蚀与膨胀
- 图像形态学运算之腐蚀-膨胀篇
- opencv 3.0 形态学运算 膨胀与腐蚀
- opencv学习笔记第五章 使用形态学滤波对图像进行开闭运算
- OpenCV2编程手册笔记之 5.2形态学滤波对图像进行腐蚀、膨胀运算
- myEclipse2017添加tomcat服务器
- HTML与JSP页面的区别
- java中HashMap详解
- LeetCode83. Remove Duplicates from Sorted List
- RAII资源分配与智能指针
- opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
- [教程]解决ubuntu16.04下Qt5.9.1无法输入中文
- 实验二 单链表实现学生成绩
- Java并发编程:线程池的使用
- 二叉树数据结构实现
- Spark:宽依赖(shuffle dependency)和窄依赖(narrow dependency)
- Tomcat下载汇总
- Moreau-Yosida 正则化和近似算子(proximal operator)
- 【洛谷】P1628 合并序列