形态学操作实现
2016-06-23 22:34
197 查看
数学形态学的基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。数学形态学的基本运算有四个:腐蚀、膨胀、开和闭。基于这些基本运算还可以推导和组合成各种数学形态学实用算法。本实验分别实现针对二值图像和灰度图像的四种形态学操作。
一、二值图像的腐蚀、膨胀、开、闭操作
View Code
一、二值图像的腐蚀、膨胀、开、闭操作
function O=myimdilate(I,se,type) %%膨胀操作 %I:输入图像(二值或灰度) %se:结构元 %type:图像类型(gray、binary) %O:膨胀操作结果 se=reflect(se);%结构元反射 O=zeros(size(I)); [r,c]=size(I); [m,n]=size(se); lm=floor(m/2);%区别于erode ln=floor(n/2); rm=m-lm-1; rn=n-ln-1; orgm=lm+1;%结构元原点 orgn=ln+1; if(strcmp(type,'binary'))%二值图像 for i=1:r for j=1:c indexr=max(1,i-lm):min(r,i+rm);%边界处理 indexc=max(1,j-ln):min(c,j+rn); if(sum(sum(se(indexr-i+orgm,indexc-j+orgn)&I(indexr,indexc)))>=1) O(i,j)=1; end end end end if(strcmp(type,'gray'))%灰度图像 I=double(I); for i=1:r for j=1:c indexr=max(1,i-lm):min(r,i+rm);%边界处理 indexc=max(1,j-ln):min(c,j+rn); O(i,j)=max(max(I(indexr,indexc)+se(indexr-i+orgm,indexc-j+orgn))); end end end function newse=reflect(se) %%结构元反射操作 %se:输入结构元 %newse:反射后结构元 [m,n]=size(se); newse=zeros(m,n); for i=1:m for j=1:n newse(i,j)=se(m+1-i,n+1-j); end end
View Code
相关文章推荐
- scala学习手记19 - Option类型
- PDB文件:每个开发人员都必须知道的
- mean开发之五:探讨node配置之3种路径和2种模块类型
- js 面试大全
- 大一下学习总结
- 查看linux库文件32位还是64位
- 序列化与反序列化(一)
- ubuntu下C++两种方法解析json
- leetcode 108 Convert Sorted Array to Binary Search Tree
- 软件工程第十七周学习进度条
- div背景颜色设置成渐变色
- 《Java小游戏实现》:坦克大战(最后一点附加功能的实现)
- OSPF开放最短路径优先
- 关于libcurl库使用的一些问题
- 数组中制定元素排序
- ACM/ICPC竞赛之STL--vector
- 怎样将word中的图片插入到CSDN博客中
- js获取一组不重复的随机数的方法
- C,D,I 的C++实现
- python3.5安装BeautifSoup