c下的边缘检测程序,sobel

wangw89 2011-08-15 08:44:22
现在正在弄图像处理的项目,在matlab下的edge函数(sobel),要用c实现,但是按照sobel的理论做出来的图像和matlab下做出的图像不一样,就影响了后续的处理,大家谁有c的边缘检测(sobel算子)的程序啊,或者matlab下edge函数的定义也行啊,不胜感激!!
...全文
920 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zs542507066 2013-03-27
  • 打赏
  • 举报
回复
2楼的可以运行出来么? 我这边怎么运行到“原始图像”这一部分????
yun1st 2011-08-17
  • 打赏
  • 举报
回复
网上找不到这种东东的,我毕业设计也涉及这方面~
苦寻无果啊~~
只能自己编了个渣渣~
WUWEI5611 2011-08-15
  • 打赏
  • 举报
回复
牛的!!!
至善者善之敌 2011-08-15
  • 打赏
  • 举报
回复
楼上的很强大
W170532934 2011-08-15
  • 打赏
  • 举报
回复
不是可以使用matlab和vc交叉使用的么,尝试下看看能不能把matlab的函数 编译成dll。具体的我不是很懂了
W170532934 2011-08-15
  • 打赏
  • 举报
回复
不是可以使用matlab和vc交叉使用的么,尝试下看看能不能把matlab的函数 编译成dll。具体的我不是很懂了
tianmo2010 2011-08-15
  • 打赏
  • 举报
回复
下面利用sobel算子对图像进行边缘检测:

使用edge函数实现图像的边缘检测,其调用格式为:

BW=edge(I,'sobel',thresh,direction) 根据指定的敏感阈值thresh用Sobel算子对图像进行边缘检测,edge函数忽略了所有小于阈值的边缘,如果没有指定阈值thresh或为空,函数自动选择参数值,direction指定Sobel算子边缘检测的方向,其参数值为'horizontal','vertical'或'both'(默认)。



程序代码:

I=imread('cameraman.tif');

imshow(I)

title('原始图像')

BW=edge(I,'sobel');

%以自动域值选择法对图像进行Sobel算子边缘检测

figure,imshow(BW);

title('自动域值的Sobel算子边缘检测')

[BW,thresh]=edge(I,'sobel');

%返回当前Sobel算子边缘检测的阈值

disp('sobel算子自动选择的阈值为:')

disp(thresh)

BW1=edge(I,'sobel',0.02,'horizontal');

%以域值为0.02水平方向对图像进行Sobel算子边缘检测

figure,imshow(BW1)

title('域值为0.02的水平方向的sobel算子检测')

BW2=edge(I,'sobel',0.02,'vertical');

%以域值为0.02垂直方向对图像进行Sobel算子边缘检测

figure,imshow(BW2)

title('域值为0.02的垂直方向的sobel算子检测')

BW3=edge(I,'sobel',0.05,'horizontal');

%以域值为0.05水平方向对图像进行Sobel算子边缘检测

figure,imshow(BW3)

title('域值为0.05的水平方向的sobel算子检测')

BW4=edge(I,'sobel',0.05,'vertical');

%以域值为0.05垂直方向对图像进行Sobel算子边缘检测

figure,imshow(BW4)

title('域值为0.05的垂直方向的sobel算子检测')

测试结果图:

(请自己运行查看)

sobel算子自动选择的阈值为:0.1433

由图可以看出,在采用水平和垂直方向的Sobel算子对图像进行边缘检测时,分别对应的水平和垂直方向上的边缘有较强的响应,阈值越小,检测的图像的边缘细节数越多,而增大阈值时,有些轮廓则未能检测出。
jixingzhong 2011-08-15
  • 打赏
  • 举报
回复
看看高级图像处理一书中是否有,记得哪里看到过......

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧