图像形态学操作—腐蚀膨胀深入
2014-07-01 22:15
274 查看
这里我们主要想讲解冈萨雷斯的数字图像处理这本书上膨胀腐蚀的定义及用opencv实现的结果,然后对比它们之间的差异。
一:opencv实现
在这之前可以看我的另外一篇blog:http://blog.csdn.net/lu597203933/article/details/17184439
膨胀:
案例代码:
结果:
![](http://img.blog.csdn.net/20140701221125884?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHU1OTcyMDM5MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
膨胀就是如果结构元B有一处非0,而A对应位置非0,则求出A中与B中对应非0处所有像素最大值来代替当前像素点值。Opencv中默认的结构元是3*3的矩阵,全部非0。
腐蚀:
案例代码:
结果:
![](http://img.blog.csdn.net/20140701220929461?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHU1OTcyMDM5MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
腐蚀就是结构元B处非0,则A对应位置也全非0,且取全非0处最小值来代替当前像素点的值。
二:书中定义
膨胀: .
![](http://img.blog.csdn.net/20140701221313400?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHU1OTcyMDM5MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这里的B是结构元,B~是结构元的反射,反射不明白可以看书,就是旋转或者按中心点对称。如:
0 1 的反射就是 1 1
1 1 1 0
与opencv中唯一的区别就是必须得求反射,而opencv中则直接用给定的结构元B。
腐蚀:
![](http://img.blog.csdn.net/20140701221328641?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHU1OTcyMDM5MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
案例:
![](http://img.blog.csdn.net/20140701220919812?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTHU1OTcyMDM5MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
作者:小村长 出处:http://blog.csdn.net/lu597203933 欢迎转载或分享,但请务必声明文章出处。
(新浪微博:http://weibo.com/2653613245/profile , 欢迎交流!)
一:opencv实现
在这之前可以看我的另外一篇blog:http://blog.csdn.net/lu597203933/article/details/17184439
膨胀:
案例代码:
int main() { int a[8][8] = { {0,0,0,0,0,0,0,0}, {0,0,5,1,0,0,1,1}, {0,1,0,1,0,1,0,0}, {0,1,1,2,1,0,1,0}, {0,0,0,1,0,1,0,0}, {0,1,0,0,0,0,0,1}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0} }; Mat S = Mat::zeros(8, 8, CV_8UC1); for(int j = 0; j < S.rows; j++) { for(int i = 0; i < S.cols; i++) { S.at<uchar>(j,i) = a[j][i]; } } cout << "S = " << endl << " " << S << endl; Mat result; Mat dilated = Mat::zeros(3, 3, CV_8UC1); dilated.at<uchar>(0,1) = 1; //eroded.at<uchar>(0,2) = 1; dilated.at<uchar>(1,0) = 1; dilated.at<uchar>(1,1) = 2; // 结构元素非0即1 dilated.at<uchar>(1,2) = 1; dilated.at<uchar>(2,1) = 1; cout << "dilated = " << endl << " " << dilated << endl; dilate(S, result, dilated); cout << "result = " << endl << " " << result << endl; return 0; }
结果:
膨胀就是如果结构元B有一处非0,而A对应位置非0,则求出A中与B中对应非0处所有像素最大值来代替当前像素点值。Opencv中默认的结构元是3*3的矩阵,全部非0。
腐蚀:
案例代码:
int main() { int a[8][8] = { {0,0,0,0,0,0,0,0}, {0,0,5,1,0,0,1,1}, {0,1,0,1,0,1,0,0}, {0,1,1,2,1,0,1,0}, {0,0,0,1,0,1,0,0}, {0,1,0,0,0,0,0,1}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0} }; Mat S = Mat::zeros(8, 8, CV_8UC1); for(int j = 0; j < S.rows; j++) { for(int i = 0; i < S.cols; i++) { S.at<uchar>(j,i) = a[j][i]; } } cout << "S = " << endl << " " << S << endl; Mat result; Mat eroded = Mat::zeros(3, 3, CV_8UC1); eroded.at<uchar>(0,1) = 1; //eroded.at<uchar>(0,2) = 1; eroded.at<uchar>(1,0) = 1; eroded.at<uchar>(1,1) = 2; // 结构元素非0即1 eroded.at<uchar>(1,2) = 1; eroded.at<uchar>(2,1) = 1; cout << "eroded = " << endl << " " << eroded << endl; erode(S, result, eroded); cout << "result = " << endl << " " << result << endl; return 0;
结果:
腐蚀就是结构元B处非0,则A对应位置也全非0,且取全非0处最小值来代替当前像素点的值。
二:书中定义
膨胀: .
这里的B是结构元,B~是结构元的反射,反射不明白可以看书,就是旋转或者按中心点对称。如:
0 1 的反射就是 1 1
1 1 1 0
与opencv中唯一的区别就是必须得求反射,而opencv中则直接用给定的结构元B。
腐蚀:
案例:
作者:小村长 出处:http://blog.csdn.net/lu597203933 欢迎转载或分享,但请务必声明文章出处。
(新浪微博:http://weibo.com/2653613245/profile , 欢迎交流!)
相关文章推荐
- 图像形态学操作—腐蚀膨胀深入
- 图像形态学操作—腐蚀膨胀深入
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV之imgproc 模块. 图像处理(1)图像平滑处理 腐蚀与膨胀(Eroding and Dilating) 更多形态学变换 图像金字塔 基本的阈值操作
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- OpenCV1.0图像处理形态学操作腐蚀Erode与膨胀Dilate
- 灰度图像--形态学处理:腐蚀、膨胀、开操作、闭操作、顶帽、底帽等
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
- 图像形态学,腐蚀,膨胀操作原理
- 图像形态学概要-腐蚀、膨胀、开运算、闭运算、形态学梯度(形态学边缘提取)、顶帽操作、黑帽操作
- opencv图像的形态学操作:腐蚀与膨胀
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- Opencv--形态学图像处理--膨胀与腐蚀,开操作与闭操作
- OpenCV形态学操作 腐蚀 膨胀 开闭
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
- OpenCV形态学操作 腐蚀 膨胀 开闭
- OpenCV学习 7:图像形态学:腐蚀、膨胀
- Opencv学习笔记(七):腐蚀,膨胀,开操作,闭操作及其他相关的形态学操作
- opencv中的图像形态学——腐蚀膨胀