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

上传人:b****6 文档编号:9141260 上传时间:2023-02-03 格式:DOCX 页数:12 大小:17.56KB
下载 相关 举报
边缘提取和边缘检测matlab程序代码大全汇编.docx_第1页
第1页 / 共12页
边缘提取和边缘检测matlab程序代码大全汇编.docx_第2页
第2页 / 共12页
边缘提取和边缘检测matlab程序代码大全汇编.docx_第3页
第3页 / 共12页
边缘提取和边缘检测matlab程序代码大全汇编.docx_第4页
第4页 / 共12页
边缘提取和边缘检测matlab程序代码大全汇编.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

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

《边缘提取和边缘检测matlab程序代码大全汇编.docx》由会员分享,可在线阅读,更多相关《边缘提取和边缘检测matlab程序代码大全汇编.docx(12页珍藏版)》请在冰豆网上搜索。

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

边缘提取和边缘检测matlab程序代码大全汇编

附录

Part1:

对cameraman原始图像处理的仿真程序:

clc

clearall

closeall

A=imread('cameraman.bmp');%读入图像

subplot(2,4,1);

imshow(A);title('原图');

x_mask=[10;0-1];%建立X方向的模板

y_mask=rot90(x_mask);%建立Y方向的模板

I=im2double(A);%将图像数据转化为双精度

dx=imfilter(I,x_mask);%计算X方向的梯度分量

dy=imfilter(I,y_mask);%计算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;000;121];

x_mask=y_mask';

I=im2double(A);

dx=imfilter(I,x_mask);

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;000;111];

x_mask=y_mask';

dx=imfilter(I,x_mask);

dy=imfilter(I,y_mask);

grad=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);%用阈值分割梯度图像

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);%将梯度矩阵转化为灰度图像

BW=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;000;121];%建立方向模板

mask2=[-2-10;-101;012];

mask3=[-101;-202;-101];

mask4=[012;-101;-2-10];

mask5=[121;000;-1-2-1];

mask6=[210;10-1;0-1-2];

mask7=[10-1;20-2;10-1];

mask8=[0-1-2;10-1;210];

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));%取差值变化最大的元素组成灰度变化矩阵

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=sqrt(B/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt

(2)*FW^2/FS;%计算最佳阈值

grad=mat2gray(BB);

BW2=im2bw(grad,T);%用最佳阈值分割梯度图像

subplot(2,4,8);

imshow(BW2);%显示分割后的图像,即边缘图像

title('sobel改进算子');

Part2加入高斯噪声后的cameraman仿真程序:

 

clc

clearall

closeall

A=imread('cameraman.bmp');%读入图像

V=0.009;

X=imnoise(A,'gaussian',0,V);

subplot(2,4,1);

imshow(X);%添加均值为0、方差0.09的高斯噪声

x_mask=[10;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=mat2gray(grad);%梯度矩阵转换成灰度图像

level=graythresh(grad);%计算灰度阈值

BW=im2bw(grad,level);%使用阈值分割梯度图像

subplot(2,4,2);

imshow(BW);%显示分割后的图像即边缘图像

title('Roberts');

y_mask=[-1-2-1;000;121];

x_mask=y_mask';

dx=imfilter(I,x_mask);

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;000;111];

x_mask=y_mask';

dx=imfilter(I,x_mask);

dy=imfilter(I,y_mask);

grad=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);%用阈值分割梯度图像

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);%将梯度矩阵转化为灰度图像

BW=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;000;121];%建立方向模板

mask2=[-2-10;-101;012];

mask3=[-101;-202;-101];

mask4=[012;-101;-2-10];

mask5=[121;000;-1-2-1];

mask6=[210;10-1;0-1-2];

mask7=[10-1;20-2;10-1];

mask8=[0-1-2;10-1;210];

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));%取差值变化最大的元素组成灰度变化矩阵

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=sqrt(B/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt

(2)*FW^2/FS;%计算最佳阈值

grad=mat2gray(BB);%将梯度矩阵转化为灰度图像

BW2=im2bw(grad,T);%用最佳阈值分割梯度图像

subplot(2,4,8);

imshow(BW2);%显示分割后的图像,即边缘图像

title('sobel改进算子');

加入椒盐噪声的边缘检测程序:

functionjingdian

I=imread('lenna.bmp');

I1=imnoise(I,'salt&pepper');%添加椒盐噪声,默认值为0.02

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('sobel算子检测');

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');%调用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('canny算子检测');

subplot(2,3,5)

imshow(B5);title('log算子检测');

mask1=[-1-2-1;000;121];%建立方向模板

mask2=[-2-10;-101;012];

mask3=[-101;-202;-101];

mask4=[012;-101;-2-10];

mask5=[121;000;-1-2-1];

mask6=[210;10-1;0-1-2];

mask7=[10-1;20-2;10-1];

mask8=[0-1-2;10-1;210];

I=im2double(I1);%将数据图像转化为双精度

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));%取差值变化最大的元素组成灰度变化矩阵

木质、石质、骨质、琉璃、藏银……一颗颗、一粒粒、一片片,都浓缩了自然之美,展现着千种风情、万种诱惑,与中国结艺的朴实形成了鲜明的对比,代表着欧洲贵族风格的饰品成了他们最大的主题。

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));

“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。

店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥利的施华洛世奇水晶、法国的仿金片、日本的梦幻珠等,五彩缤纷,流光异彩。

按照饰珠的质地可分为玻璃、骨质、角质、陶制、水晶、仿金、木制等种类,其造型更是千姿百态:

珠型、圆柱型、动物造型、多边形、图腾形象等,美不胜收。

全部都是进口的,从几毛钱一个到几十元一个的珠子,做一个成品饰物大约需要几十元,当然,还要决定于你的心意。

“碧芝”提倡自己制作:

端个特制的盘子到柜台前,按自己的构思选取喜爱的饰珠和配件,再把它们串成成品。

这里的饰珠和配件的价格随质地而各有同,所用的线绳价格从几元到一二十元不等,如果让店员帮忙串制,还要收取10%~20%的手工费。

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/256^2);

FS=sqrt(max(FX^2-FW^2,0));

T=sqrt

(2)*FW^2/FS;%计算最佳阈值

grad=mat2gray(BB);%将梯度矩阵转化为灰度图像

BW2=im2bw(grad,T);%用最佳阈值分割梯度图像

大学生对手工艺制作兴趣的调研subplot(2,3,6);

imshow(BW2);%显示分割后的图像,即边缘图像

title('加入椒盐噪声的sobel改进算子');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

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

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