用Sobel算子、Roberts算子、Prewitt算子对图像进行边缘检测的程序,在matlab环境下,程序要完整,最好有图

用Sobel算子、Roberts算子、Prewitt算子对图像进行边缘检测的程序,在matlab环境下,程序要完整,最好有图,第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算子')

clear I=imread('bai.jpg') %读入图像

q=imadjust(I,[.2 .3 0.6 .7 1],[])%增强图像的对比度

j=rgb2gray(q) %彩色图像变灰度图像

j1=im2bw(q,230/255)%二值化

se90=strel('line',3,90) %构造元素

se0=strel('line',3,0) %同上

BW2=imdilate(j1,[se90 se0]) % 用构造的元素膨胀

BW3=bwareaopen(BW2,100)%开 *** 作

BW3=~BW3%取反

BW4=bwareaopen(BW3,20)%开

BW5=bwperim(BW4)%计算BW4周长

[imx,imy]=size(BW5)计算长宽

L=bwlabel(BW5,8)%用不同的数字根据是否连通标记图像,

a=max(max(L))%得到L图像中标记结果的最大值

BW6=bwfill(BW5,'hole')%填充背景

I2=I

for i=1:3I2(:,:,i)=I2(:,:,i).*uint8(BW6)

end imshow(I2)有大神能逐条解释一下语句吗,本人是菜鸟啊,跪求!!


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存