clear
clc
II=imread('Sample_BW.jpg');
figure(1),imshow(II)
I=double(II);
[m,n]=size(I);
%用Canny算子进行像素边缘检测,判别阈值为0.1
ff=edge(I,'canny',0.1);
figure(2),imshow(ff)
f=double(ff);
%求原函数梯度函数
R=zeros(m,n);
for xi=2:1:m-1
for yi=2:1:n-1
R(xi,yi)=abs(I(xi+1,yi+1)+2*I(xi,yi+1)+I(xi-1,yi+1)-I(xi-1,yi-1)-2*I(xi,yi-1)-I(xi+1,yi-1))+abs(I(xi-1,yi-1)+2*I(xi-1,yi)+I(xi-1,yi+1)-I(xi+1,yi+1)-2*I(xi+1,yi)-I(xi+1,yi-1));
end
end
%开始求坐标
nn=1;
W=zeros(m,n);
for x=2:1:m-1
for y=2:1:n-1
if f(x,y)==0
W(x,y)=0;
else
i=[R(x-1,y),R(x,y),R(x+1,y)];
j=[R(x,y-1),R(x,y),R(x,y+1)];
if (i(2)>i(1))&(i(2)>i(3))&(j(2)>j(1))&(j(2)>j(3))
Xe=x+(i(1)-i(3))/((i(1)-2*i(2)+i(3))+eps);%求亚像素边缘坐标[Xe,Ye]
Ye=y+(j(1)-j(3))/((j(1)-2*j(2)+j(3))+eps);
if (Xe<m)&(Xe>0)&(Ye<n)&(Ye>0)
Xe1(nn)=Xe; %得到的亚像素边缘点
Ye1(nn)=Ye;
Xe2(nn)=round(Xe); %得到的逼近的边缘点
Ye2(nn)=round(Ye);
W(Xe2(nn),Ye2(nn))=1; %把检测到的边缘点直观的表示出来
nn=nn+1; %设置循环,用数组的形势表示Xe2,Ye2,方便后期查看处理亚像素边缘点坐标
end
end
end
end
end
figure(3),imshow(W)
亚像素边缘检测源代码
4星 · 超过85%的资源 需积分: 41 46 浏览量
2010-07-29
19:08:31
上传
评论 38
收藏 8KB RAR 举报
benqiangchan
- 粉丝: 13
- 资源: 5
最新资源
- 三次样条插值的介绍-什么是三次样条插值原理
- http的一些相关介绍-对于我们来说什么是http
- 全卷积网络基于voc2012数据集简单pytorch实现
- pycharm的一些介绍-用于更好的学习python
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
- 基于python实现的三次样条插值和均值插值法实现
- Python语言教程2-python批量图片大小处理-多文件夹
- Python语言教程1-python批量图片重命名,将后缀某几个不想要的字去除
- Space Combat Kit 太空战斗套件Unity游戏开发插件资源unitypackage C#
- Universal Device Preview 通用设备预览Unity游戏开发插件资源unitypackage
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
- 6
前往页