边缘提取和边缘检测matlab程序代码大全说课讲解.docx

上传人:b****5 文档编号:30284932 上传时间:2023-08-13 格式:DOCX 页数:12 大小:16.63KB
下载 相关 举报
边缘提取和边缘检测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));

dd=max(dd,abs(d8));

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

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

据调查,大学生对此类消费的态度是:

手工艺制品消费比“负债”消费更得人心。

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

随着社会经济、文化的飞跃发展,人们正从温饱型步入小康型,崇尚人性和时尚,不断塑造个性和魅力的现代文化价值观念,已成为人们的追求目标。

因此,顺应时代的饰品文化显示出强大的发展势头和越来越广的市场,从事饰品销售是有着广阔的市场空间。

BB=grad;

(4)创新能力薄弱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;%计算最佳阈值

(三)大学生购买消费DIY手工艺品的特点分析grad=mat2gray(BB);%将梯度矩阵转化为灰度图像

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

2、你大部分的零用钱用于何处?

subplot(2,3,6);

(一)上海的经济环境对饰品消费的影响imshow(BW2);%显示分割后的图像,即边缘图像

(2)物品的独一无二title('加入椒盐噪声的sobel改进算子');

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

当前位置:首页 > 求职职场 > 简历

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

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