急!Sobel算子边缘检测算法程序代码谁有啊,能不能发到我的邮箱794247962@qq.com

急!Sobel算子边缘检测算法程序代码谁有啊,能不能发到我的邮箱794247962@qq.com,第1张

close all

clear all

I=imread('tig.jpg')%读取图像

I1=im2double(I)%将彩图序列变成双精度

I2=rgb2gray(I1)%将彩色图变成灰色图

[thr, sorh, keepapp]=ddencmp('den','wv',I2)

I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp)%小波除噪

I4=medfilt2(I3,[9 9])%中值滤波

I5=imresize(I4,0.2,'bicubic')%图像大小

BW1=edge(I5,'sobel')%sobel图像边缘提取

BW2=edge(I5,'roberts')%roberts图像边缘提取

BW3=edge(I5,'prewitt')%prewitt图像边缘提取

BW4=edge(I5,'log')%log图像边缘提取

BW5=edge(I5,'canny')%canny图像边缘提取

h=fspecial('gaussian',5)%高斯滤波

BW6=edge(I5,'zerocross',[ ],h)%zerocross图像边缘提取

figure

subplot(1,3,1)%图划分为一行三幅图,第一幅图

imshow(I2)%绘图

figure

subplot(1,3,1)

imshow(BW1)

title('Sobel算子')

subplot(1,3,2)

imshow(BW2)

title('Roberts算子')

subplot(1,3,3)

imshow(BW3)

title('Prewitt算子')

I=imread('cameraman.tif')

p=[-1 -1 -1

0 0 0

1 1 1]

edgep=conv2(I,p,'same')

imshow(edgep)

方向应该是指算子的转置吧。

p=p'之类的,还有如下形式等

p=[-1 -1 0

1 0 -1

0 1 1]

说说我的做法~

在提取边缘时,前处理工作很重要!且,噪音全都去掉是比较困难的是

1.可以先做平滑cvSmooth,去除噪音

2.可以用正规化或者直方图均衡化来处理图像像素~

3.用CLAHE算法,增加对比度

4.prewitt,sobel,算子都不是很精确,canny算子虽比较好但是不能提取封闭轮廓。你可以用snake,或者GVFsnake来动态提取边缘,但是之前得提取初始边缘。

以上,如果你想用prewitt,sobel的话可以到opencv论坛去搜索,答案有很多。

http://www.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5这是论坛

http://www.opencv.org.cn/index.php/Canny%E8%BE%B9%E7%BC%98%E6%A3%80%E6%B5%8B这是canny检测的例子

http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm这是函数的用法

祝你成功


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7864405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存