笔记:形态学操作-----腐蚀Erode && 膨胀 Dilate
2012-11-28 19:34
309 查看
通俗的说:
膨胀算法使图像扩大一圈。
腐蚀算法使二值图像减小一圈。
腐蚀:删除对象边界的某些像素
膨胀:给图像中的对象边界添加像素
算法:
从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。
膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。
腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。
注意:
opencv里面的腐蚀膨胀都是针对 白色 目标区域的。
说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~
~~~腐蚀,亦然。
====================================
代码:
图示:
附:
Dilate 使用任意结构元素膨胀图像
void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
输入图像.
dst
输出图像.
element
用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
膨胀的次数
对彩色图像,每个彩色通道单独处理。
Erode 使用任意结构元素腐蚀图像
void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
输入图像.
dst
输出图像.
element
用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
腐蚀的次数
函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值象素点的邻域形状:
膨胀算法使图像扩大一圈。
腐蚀算法使二值图像减小一圈。
腐蚀:删除对象边界的某些像素
膨胀:给图像中的对象边界添加像素
算法:
从图像处理角度看,二值图像的腐蚀和膨胀就是将一个小型二值图(结构元素,一般为3*3大小)在一个大的二值图上逐点移动并进行比较,根据比较的结果作出相应处理而已。
膨胀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为0,结构图像的该像素为0,否则为1.结果:使二值图像扩大一圈。
腐蚀算法:用3X3的结构元素,扫描二值图像的每一个像素,用结构元素与其覆盖的二值图像做“与”运算,如果都为1,结构图像的该像素为1,否则为0.结果:使二值图像减小一圈。
注意:
opencv里面的腐蚀膨胀都是针对 白色 目标区域的。
说,膨胀使图像 变大一圈, 那是指 图像中的 白色目标区域 扩大了一圈~~~
~~~腐蚀,亦然。
====================================
代码:
#include "stdafx.h" #include <stdio.h> #include <cv.h> #include <highgui.h> #include "cvaux.h" //必须引此头文件 int main( int argc, char** argv ) { IplImage *img = cvLoadImage("rice.png",0); if(img == NULL) { printf("img load failed!\n"); return 0; } IplImage *img_erode = cvCreateImage(cvGetSize(img), 8, 1); IplImage *img_dilate = cvCreateImage(cvGetSize(img), 8, 1); cvErode( img,img_erode, NULL,1); //腐蚀 cvDilate( img,img_dilate, NULL,1); //膨胀 cvNamedWindow("img_erode"); cvNamedWindow("img_dilate"); cvShowImage("img_erode",img_erode); cvShowImage("img_dilate",img_dilate); cvWaitKey(-1); cvReleaseImage(&img_dilate); cvReleaseImage(&img_erode); cvDestroyAllWindows(); return 0; }
图示:
附:
Dilate 使用任意结构元素膨胀图像
void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
输入图像.
dst
输出图像.
element
用于膨胀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
膨胀的次数
对彩色图像,每个彩色通道单独处理。
Erode 使用任意结构元素腐蚀图像
void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
src
输入图像.
dst
输出图像.
element
用于腐蚀的结构元素。若为 NULL, 则使用 3×3 长方形的结构元素
iterations
腐蚀的次数
函数 cvErode 对输入图像使用指定的结构元素进行腐蚀,该结构元素决定每个具有最小值象素点的邻域形状:
相关文章推荐
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- Opencv学习笔记(七):腐蚀,膨胀,开操作,闭操作及其他相关的形态学操作
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- 形态学处理(一)膨胀(dilate)与腐蚀(erode)
- OpenCV学习笔记(六) 滤波器 形态学操作(腐蚀、膨胀等)
- OpenCV学习笔记-形态学操作-腐蚀膨胀-开闭运算
- 形态学中的腐蚀、膨胀、开操作和闭操作的理解
- 形态学图像处理——图像膨胀&图像腐蚀
- 形态学中的腐蚀 膨胀 开关操作
- 图像形态学操作—腐蚀膨胀深入
- 图像形态学操作—腐蚀膨胀深入
- c++ 实现 膨胀(dilate)腐蚀(erode)
- opencv图像的形态学操作:腐蚀与膨胀
- OpenCV形态学操作 腐蚀 膨胀 开闭
- openCV 形态学 腐蚀、膨胀、开操作和比操作、形态梯度 、顶帽、黑帽
- 图像腐蚀erode与膨胀dilate综合示例
- 腐蚀、膨胀以及开闭操作等形态学处理