c下的边缘检测程序,sobel
现在正在弄图像处理的项目,在matlab下的edge函数(sobel),要用c实现,但是按照sobel的理论做出来的图像和matlab下做出的图像不一样,就影响了后续的处理,大家谁有c的边缘检测(sobel算子)的程序啊,或者matlab下edge函数的定义也行啊,不胜感激!!
[解决办法]
看看高级图像处理一书中是否有,记得哪里看到过......
[解决办法]
下面利用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算子对图像进行边缘检测时,分别对应的水平和垂直方向上的边缘有较强的响应,阈值越小,检测的图像的边缘细节数越多,而增大阈值时,有些轮廓则未能检测出。
[解决办法]
不是可以使用matlab和vc交叉使用的么,尝试下看看能不能把matlab的函数 编译成dll。具体的我不是很懂了
[解决办法]
楼上的很强大
[解决办法]
牛的!!!
[解决办法]
网上找不到这种东东的,我毕业设计也涉及这方面~
苦寻无果啊~~
只能自己编了个渣渣~