《图像边缘检测Matlab程序-使用线检测模板(共2页).doc》由会员分享,可在线阅读,更多相关《图像边缘检测Matlab程序-使用线检测模板(共2页).doc(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上检测图像中的边缘利用方向梯度模板的基本思想,可以设计检测不同方向线的方向模板。对于单像素宽度线,可通过阈值检测其梯度来完成线的检测,并确定其走向。线检测模板如下所示:计算, k=1,2,3,4.其中是原图像中以(i,j)为中心的一个33小矩阵,“*”是对应元素相乘并相加。如果原图像中(i,j)像素不为0,且, 对所有的, 则可以说该点的方向与方向一致。%Matlab程序检测图像中的边缘%使用线检测模板clcclearA=imread(22.png); %读入彩色图像,图像存放在Matlab工作路径下B=rgb2gray(A); %将彩色图像转为灰度图像C=im2bw(
2、B); %将灰度图像转为2值图像subplot(1,2,1); %子图imshow(C); %绘图m,n=size(C);W=zeros(3,3,4); W(:,:,1)=-1 -1 -1; 2 2 2; -1 -1 -1; %竖直方向模板W(:,:,2)=-1 -1 2; -1 2 -1; 2 -1 -1; %45度方向模板W(:,:,3)=-1 2 -1; -1 2 -1; -1 2 -1; %水平方向模板W(:,:,4)=2 -1 -1; -1 2 -1; -1 -1 2; %-45度方向模板D=zeros(m,n); %产生全0矩阵D,保存检测结果;如果D(i,j)为0,则该点不是边缘
3、;为1则是竖直方向边缘;为2则是45度方向边缘;为3则是水平方向边缘;为4则是-45度方向边缘R=zeros(4,1);M=zeros(3,3);for i=2:m-1 for j=2:n-1 if(C(i,j) M(:,:)=C(i-1:i+1, j-1:j+1); %取出以i,j为中心,大小为3*3的子矩阵 for k=1:4 R(k)=sum(sum(W(:,:,k).*M); %与方向模板做卷积运算 end R,Ri=sort(R); %排序 if(R(end)R(end-1) %如果最大值比次大值还大,则认为该点的方向是最大值所对应的模板方向 D(i,j)=Ri(end); end end endend%由检测结果D构建边缘图像EE=zeros(m,n);for i=2:m-1 for j=2:n-1 if(D(i,j)0) E(i-1:i+1, j-1:j+1) = W(:,:,D(i,j)+1; end endendsubplot(1,2,2);imshow(logical(E);%绘边缘图像结果示例:专心-专注-专业