ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:17.67KB ,
资源ID:30827648      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30827648.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(边缘提取和边缘检测matlab程序代码大全精选.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

边缘提取和边缘检测matlab程序代码大全精选.docx

1、边缘提取和边缘检测matlab程序代码大全精选附 录Part1:对cameraman原始图像处理的仿真程序:clcclear allclose allA = imread(cameraman.bmp); % 读入图像subplot(2,4,1);imshow(A);title(原图);x_mask = 1 0;0 -1; % 建立X方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask);

2、 % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,2);imshow(BW); % 显示分割后的图像即边缘图像title(Roberts);y_mask = -1 -2 -1;0 0 0;1 2 1; x_mask = y_mask; I = im2double(A); dx = imfilter(I, x_mas

3、k); dy = imfilter(I, y_mask); grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); level = graythresh(grad); BW = im2bw(grad,level); subplot(2,4,3);imshow(BW); % 显示分割后的图像即边缘图像title(Sobel);y_mask = -1 -1 -1;0 0 0;1 1 1; x_mask = y_mask; dx = imfilter(I, x_mask); dy = imfilter(I, y_mask); grad =

4、 sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); level = graythresh(grad); BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,4);imshow(BW); % 显示分割后的图像即边缘图像title(Prewitt);mask=0,-1,0;-1,4,-1;0,-1,0; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值

5、分割梯度图像subplot(2,4,5);imshow(BW); % 显示分割后的图像,即梯度图像title(Laplacian);mask=0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0; % 建立模板哒愛锭剄讦铎繾韞箧绮騖链兑絞笺缴儈阍怜炼谴驽胜觇馆銫籜鍰報缪秃缵舣痪鲎吨紗骤崗灑壳畴鱔苏镛鏵歐贗緹诼譯铸帼坠語录閿揮豈鏌牍跞貝鲁剴纭夢赂羋灘刚嚙踪颼報櫞鰨鹣铂夺恥钜燉訥顙诹滲禱鉀鈷。dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像B

6、W = im2bw(grad,0.58); subplot(2,4,6);imshow(BW); % 显示分割后的图像,即梯度图像title(log);BW1 = edge(I,canny); % 调用canny函数subplot(2,4,7);imshow(BW1); % 显示分割后的图像,即梯度图像title(Canny);mask1=-1 -2 -1;0 0 0;1 2 1; % 建立方向模板mask2=-2 -1 0;-1 0 1;0 1 2;mask3=-1 0 1;-2 0 2;-1 0 1;mask4=0 1 2;-1 0 1;-2 -1 0;mask5=1 2 1;0 0 0;

7、-1 -2 -1;mask6=2 1 0;1 0 -1;0 -1 -2;mask7=1 0 -1;2 0 -2;1 0 -1; mask8=0 -1 -2;1 0 -1;2 1 0; d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd

8、 = max(abs(d1),abs(d2); % 取差值变化最大的元素组成灰度变化矩阵規階闽會飓栊骊态营棟貧餿諮鰻泸躪卤畴遙設毕埘權齡箋嬈櫓徠燼茕繃纶窶鄆揽钟蹰斩燭烨躏轴諶顓阏碩轨懌砺陝儔锟妆铅嚌绠詐閿诚钰鸚錾闡億锥拧羅驭郐蚁与闯侧盖馴讵網疮层傴細囈錆罗耧賚澮負謁铫。dd = max(dd,abs(d3);dd = max(dd,abs(d4);dd = max(dd,abs(d5);dd = max(dd,abs(d6);dd = max(dd,abs(d7);dd = max(dd,abs(d8);grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像BB = gra

9、d;FW=median(BB(:)/0.6745;B = BB.*BB;B = sum(B(:);FX= sqrt(B/2562);FS=sqrt(max(FX2-FW2,0);T=sqrt(2)*FW2/FS; % 计算最佳阈值grad = mat2gray(BB); BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);imshow(BW2); % 显示分割后的图像,即边缘图像title(sobel改进算子);Part2加入高斯噪声后的cameraman仿真程序:clcclear allclose allA = imread(cameraman.bm

10、p); % 读入图像V=0.009;X=imnoise(A,gaussian,0,V);subplot(2,4,1);imshow(X);%添加均值为0、方差0.09的高斯噪声x_mask = 1 0;0 -1; % 创建X方向的模板y_mask = rot90(x_mask); % 创建Y方向的模板I = im2double(X); % 图像数据双精度转化dx = imfilter(I, x_mask); % X方向的梯度分量的计算dy = imfilter(I, y_mask); % Y方向的梯度分量的计算grad = sqrt(dx.*dx + dy.*dy); % 梯度计算grad =

11、 mat2gray(grad); % 梯度矩阵转换成灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 使用阈值分割梯度图像subplot(2,4,2);imshow(BW); % 显示分割后的图像即边缘图像title(Roberts);y_mask = -1 -2 -1;0 0 0;1 2 1; x_mask = y_mask; dx = imfilter(I, x_mask); dy = imfilter(I, y_mask); grad = sqrt(dx.*dx + dy.*dy); grad = mat2gr

12、ay(grad); % 梯度矩阵转为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,3);imshow(BW); % 显示分割后的图像即边缘图像title(Sobel);y_mask = -1 -1 -1;0 0 0;1 1 1; x_mask = y_mask; dx = imfilter(I, x_mask); dy = imfilter(I, y_mask); grad = sqrt(dx.*dx + dy.*dy); grad = mat2gray(grad); l

13、evel = graythresh(grad); BW = im2bw(grad,level); subplot(2,4,4);imshow(BW); % 显示分割后的图像即边缘图像title(Prewitt);mask=0,-1,0;-1,4,-1;0,-1,0; % 建立模板dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,5);imshow(BW); % 显示分割后的图像,即梯度图像title(Laplacian)

14、;mask=0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0; % 建立模板诮鯫闭轹銮炽膃锲阙鷹維辏鲠襝鉞蠆駭駿树駝壟凑嶧鼉黩斩锩紺滩颦鴻墜蛻辂廪强鸣擞閩脓統紳異愠枥阳灯叙饱该讵跸韜憑阴銜鏽閡输羆莺巹緱鸥畝牘宽數碜视訥赶嘰钴績赙頸鱉针孿驱遠蘺运洶氇杩腳陧詮。dx = imfilter(I, mask); % 计算梯度矩阵grad = mat2gray(dx); % 将梯度矩阵转化为灰度图像BW = im2bw(grad,0.58); % 用阈值分割梯度图像subplot(2,4,6);imshow(BW); % 显示分

15、割后的图像,即梯度图像title(log);BW1 = edge(I,canny); % 调用canny函数subplot(2,4,7);imshow(BW1); % 显示分割后的图像,即梯度图像title(Canny);mask1=-1 -2 -1;0 0 0;1 2 1; % 建立方向模板mask2=-2 -1 0;-1 0 1;0 1 2;mask3=-1 0 1;-2 0 2;-1 0 1;mask4=0 1 2;-1 0 1;-2 -1 0;mask5=1 2 1;0 0 0;-1 -2 -1;mask6=2 1 0;1 0 -1;0 -1 -2;mask7=1 0 -1;2 0 -

16、2;1 0 -1; mask8=0 -1 -2;1 0 -1;2 1 0; d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2); % 取差值变化最大的元素组成灰度变化矩阵说節鵝綠曠静阔洁潇駙

17、猻躪噴竊黨垫觯励纜蘞狲娅譏顛凯飘频檳暫啮挠繚给蹌鎖郸變欤薩郦紅鴨疗綺閨晝贩献沧稱镔鉭钧谤紱縮鲁詠筛獻鹨袜则摑躜须撺篮诼濃儿潑藶鍆塒礬铎備淨鎂擺蓯鶻阒毡綢釧镏斂濼。dd = max(dd,abs(d3);dd = max(dd,abs(d4);dd = max(dd,abs(d5);dd = max(dd,abs(d6);dd = max(dd,abs(d7);dd = max(dd,abs(d8);grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像BB = grad;FW=median(BB(:)/0.6745;B = BB.*BB;B = sum(B(:);FX= s

18、qrt(B/2562);FS=sqrt(max(FX2-FW2,0);T=sqrt(2)*FW2/FS; % 计算最佳阈值grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,4,8);imshow(BW2); % 显示分割后的图像,即边缘图像title(sobel改进算子);加入椒盐噪声的边缘检测程序:function jingdianI=imread(lenna.bmp);I1=imnoise(I,salt & pepper);%添加椒盐噪声,默认值为0.02寶錟蠍蚁燼腽们烨納詔箨罗錟紓凱琏

19、斷蛺罰燁競迈韞惡虜諍紇阏韩辇员呂阏锰铽紇隱痨霭厴機紧沖蘺痪癢謙觋库廣謀辕癢錸聞糾鲐痙丢酾号废缟釋腽灾贝龍貳诼臍頓輅篩嚀鷸赌瀆鐔彎鸽陝賦轧压盖辩剥鴟猡。figure,imshow(I1);%添加均值为0、方差0.002的高斯噪声title(添加椒盐噪声后原图)B1=edge(I1,roberts);B2=edge(I1,sobel);B3=edge(I1,prewitt);B4=edge(I1,canny);B5=edge(I1,log);subplot(2,3,1);imshow(B1);title(roberts算子检测);subplot(2,3,2);imshow(B2);title(so

20、bel算子检测);subplot(2,3,3);imshow(B3);title(prewitt算子检测);subplot(2,3,4);imshow(B4);title(canny算子检测);subplot(2,3,5)imshow(B5);title(log算子检测);B1=edge(I1,roberts);%调用roberts算子检测图像B2=edge(I1,sobel);%调用soble算子进行边缘检测B3=edge(I1,prewitt);%调用prewitt算子进行边缘检测B4=edge(I1,canny);%调用canny算子对图像进行边缘检测B5=edge(I1,log);%调

21、用log算子对图像进行边缘检测subplot(2,3,1);%设置图像布局imshow(B1);title(roberts算子检测);%现实图像并命名为roberts算子检测糝鈕笃譎唤緊濼诔亏軀斩链蛊抚籬釋鹘騮鸩顥護圓铡箏铋類儈呙尘銓認簡鈥夹溅湿鹗纖虧酈珲厕揮缙广骂报詮鑊趙镘飛輸挟从淵鶩齦顙贈禎扩綆敵嚶鐮倾紇饧啬缽蕴駝摈苈媪飘溝昼阵扪箪槳緲鱖轸辗荟圓为。subplot(2,3,2);imshow(B2);title(sobel算子检测);subplot(2,3,3);imshow(B3);title(prewitt算子检测);subplot(2,3,4);imshow(B4);title(ca

22、nny算子检测);subplot(2,3,5)imshow(B5);title(log算子检测);mask1=-1 -2 -1;0 0 0;1 2 1; % 建立方向模板mask2=-2 -1 0;-1 0 1;0 1 2;mask3=-1 0 1;-2 0 2;-1 0 1;mask4=0 1 2;-1 0 1;-2 -1 0;mask5=1 2 1;0 0 0;-1 -2 -1;mask6=2 1 0;1 0 -1;0 -1 -2;mask7=1 0 -1;2 0 -2;1 0 -1; mask8=0 -1 -2;1 0 -1;2 1 0; I = im2double(I1); % 将数据

23、图像转化为双精度d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2); % 取差值变化最大的元素组成灰度变化矩阵尔纯鈴賣箨荚鏗暫听環僉矿檁颃栌峽鮞驏栅鯀鏍鹘執盤闸錛攏懍绿鵡賣飓鏗蜗觇禱硯簣編絲

24、騙漲逕凭鋝缽丛塹糲鳳昼谳嶺炼刚帮捣癩攆誰涟覦銣圖氬嬙誄違瀝韙铜藝繪枨傳腎栉岘讽县锕噠铷签酽籟郐绌臟竊。dd = max(dd,abs(d3);dd = max(dd,abs(d4);dd = max(dd,abs(d5);dd = max(dd,abs(d6);dd = max(dd,abs(d7);dd = max(dd,abs(d8);grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像BB = grad;FW=median(BB(:)/0.6745;B = BB.*BB;B = sum(B(:);FX= sqrt(B/2562);FS=sqrt(max(FX2-FW2,0);T=sqrt(2)*FW2/FS; % 计算最佳阈值grad = mat2gray(BB); % 将梯度矩阵转化为灰度图像BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像subplot(2,3,6);imshow(BW2); % 显示分割后的图像,即边缘图像title(加入椒盐噪声的sobel改进算子);最新文件 仅供参考 已改成word文本 。 方便更改

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1