数字图像处理实验报告图像边缘检测.docx

上传人:b****6 文档编号:15904489 上传时间:2023-07-08 格式:DOCX 页数:18 大小:150.39KB
下载 相关 举报
数字图像处理实验报告图像边缘检测.docx_第1页
第1页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第2页
第2页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第3页
第3页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第4页
第4页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第5页
第5页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第6页
第6页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第7页
第7页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第8页
第8页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第9页
第9页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第10页
第10页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第11页
第11页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第12页
第12页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第13页
第13页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第14页
第14页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第15页
第15页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第16页
第16页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第17页
第17页 / 共18页
数字图像处理实验报告图像边缘检测.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字图像处理实验报告图像边缘检测.docx

《数字图像处理实验报告图像边缘检测.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告图像边缘检测.docx(18页珍藏版)》请在冰点文库上搜索。

数字图像处理实验报告图像边缘检测.docx

数字图像处理实验报告图像边缘检测

实验报告

实验名称

 实验三图像边缘检测

课程名称

数字图像处理

姓名

成绩

班级

学号

日期

地点

备注:

1、实验目得

(1)了解并掌握使用微分算子进行图像边缘检测得基本原理;

(2)编写程序使用Laplacian算子(二阶导数算子)实现图像锐化,进一步理解图像

锐化得实质;

(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测得原理、方法,根据

实验结果分析各种算子得工作效果;

(4)总结实验过程(实验报告,左侧装订):

方案、编程、调试、结果、分析、结论。

2、实验环境

(1)WindowsXP/7

(2)Matlab7、1/7、14

3、实验方法

本次实验要求对256×256大小,256级灰度得数字图像lena、img进行处理。

(1)对该图像进行锐化处理,要求采用Laplacian算子进行锐化,分α=1与α=2两种情况,按如下不同情况进行处理:

① g1(m,n)=f(m,n)-α∇f

② g2(m,n)=4αf (m,n)-α[f(m-1,n)+f(m+1,n)+f (m,n-1)+f(m,n+1)]

、要对图像进行处理,要先读取该图像,实验代码如下:

closeall;

clearall;

fid=fopen(’lena、img',’r');

image=fread(fid,[256,256],’uint8');

fclose(fid);

、读取图像后,对该图像得每一像素(不考虑图像得边界部分)进行遍历,根据公式①(公式①相当于做差分)对每一灰度进行计算,将所得得结果存入一矩阵g1中(矩阵g1初始化为该图像得矩阵),代码如下(仅以ɑ=1为例):

g1=image;

a=1;

[x,y]=size(image);

for i=2:

(x-1)

forj=2:

(y—1)  ﻩﻩ ﻩﻩﻩg1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j—1));

end

end

、根据公式②对图像得每一个像素(不考虑图像得边界部分)进行计算,将所得之存入矩阵g2中(g2初始化值为该图像得矩阵值),具体方法与上一步类似,代码如下(仅以ɑ=1为例):

g2=image;

a=1;

[x,y]=size(image);

fori=2:

(x-1)

 forj=2:

(y-1)

 ﻩg2(i,j)=4*a*image(i,j)—a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));

 end

end

(2)分别利用Roberts、Prewitt 与Sobel 边缘检测算子,对原图像进行边缘检测,显

示处理前、后图像。

I、同

(1)中

,不再赘述。

II、对图像进行边缘检测,要对图像得每一像素(不考虑图像得边界部分)得灰度进行遍历,分别用公式对图像得水平与垂直方向得边缘进行检测,并分别存储,在进行合成。

采用不同得算子时,变换得公式有所不同。

在合成时可以采用三种算法(街区法、棋盘法、欧式几何法),本次实验中均又采用,所以得到三层图像。

代码如下(仅以街区法得Roberts算子为例):

[x,y]=size(image);

g1=image;

gh1=image;

gv1=image;

for i=2:

(x-1)

forj=2:

(y-1)

   gh1(i,j)=image(i,j)-image(i-1,j—1);

 gv1(i,j)=image(i,j-1)-image(i—1,j);

 g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));

 end

end

4、实验结果分析

(1)、图像锐化

图像锐化结果如图a与图b(注:

图a为情况

结果;图b为情况

结果):

图a

图b

由图a与图b对比可知,图像得锐化实质就就是原图像与梯度信息进行叠加,相对于原图像而言,图像得边缘信息得到了加强。

由图b中不同ɑ值所得图像对比可知,ɑ越大,边界越清晰,同时对比图a中不同ɑ值所得图像可知,ɑ得大小决定梯度信息与原图像叠加时所占得比例.

(2)、图像边缘检测

街区法、棋盘法、欧式距离法得不同检测算子结果分别入图c、图d与图e:

图c

图d

图e

由图c、图d与图e对比可知,采用街区法所得得边界清晰度最高,欧式几何法其次,棋盘法最差。

对比同一张图中得不同子图可知,Sobel算子得性能更好,Prewitt算子其次,Roberts算子最差。

5、实验结论

本次实验就是对图像进行锐化与边缘检测,通过这次实验,我对数字图像处理中图像得锐化与边缘检测有了更加深刻得了解.加深了图像锐化与边缘检测得原理,掌握了图像边缘检测得不同方法。

学会了使用Laplacian算子(二阶导数算子)实现图像锐化得程序编写;掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测得原理、方法。

6、源代码

(1)图像锐化(g1)

closeall;

clearall;

fid=fopen('lena、img','r');

image=fread(fid,[256,256],’uint8’);

fclose(fid);

subplot(221);

imshow(uint8(image),[]);

title(’原图像');

%采用拉普拉斯算子

g1=image;

a=1;

[x,y]=size(image);

for i=2:

(x-1)

  forj=2:

(y—1)

   g1(i,j)=(1+4*a)*image(i,j)—a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));

  end

end

subplot(222);

imshow(uint8(g1),[]);

title('a=1时g1得图像’);

g1=image;

a=2;

[x,y]=size(image);

fori=2:

(x-1)

 forj=2:

(y—1)

  g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j—1));

end

end

subplot(223);

imshow(uint8(g1),[]);

title('a=2时g1得图像');

(2)图像锐化(g2)

closeall;

clearall;

fid=fopen(’lena、img',’r');

image=fread(fid,[256,256],’uint8’);

fclose(fid);

subplot(221);

imshow(uint8(image),[]);

title('原图像');

%采用拉普拉斯算子

g2=image;

a=1;

[x,y]=size(image);

for i=2:

(x-1)

  forj=2:

(y-1)

g2(i,j)=4*a*image(i,j)—a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1));

 end

end

subplot(222);

imshow(uint8(g2),[]);

title('a=1时g2得图像');

g2=image;

a=2;

[x,y]=size(image);

fori=2:

(x—1)

forj=2:

(y-1)

   g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i—1,j)+image(i,j+1)+image(i,j-1));

end

end

subplot(223);

imshow(uint8(g2),[]);

title('a=2时g2得图像');

(3)边缘检测

close all;

clearall;

fid=fopen('lena、img',’r');

image=fread(fid,[256,256],’uint8’);

fclose(fid);

figure('Name',’街区法’,'NumberTitle','off');

subplot(221);

imshow(uint8(image),[]);

title('原图像');

[x,y]=size(image);

g1=image;

gh1=image;

gv1=image;

for i=2:

(x—1)

forj=2:

(y-1)

   gh1(i,j)=image(i,j)—image(i—1,j-1);

   gv1(i,j)=image(i,j—1)-image(i-1,j);

  g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));

end

end

subplot(222);

imshow(uint8(g1),[]);

title('Roberts算子');

g2=image;

gh2=image;

gv2=image;

fori=2:

(x-1)

  forj=2:

(y—1)

 gh2(i,j)=((image(i+1,j—1)+image(i+1,j)+image(i+1,j+1))/3)-((image(i-1,j-1)+image(i—1,j)+image(i—1,j+1))/3);

 gv2(i,j)=((image(i—1,j+1)+image(i,j+1)+image(i+1,j+1))/3)—((image(i-1,j—1)+image(i,j—1)+image(i+1,j-1))/3);

   g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));

end

end

subplot(223);

imshow(uint8(g2),[]);

title('Prewitt算子’);

g3=image;

gh3=image;

gv3=image;

fori=2:

(x—1)

 forj=2:

(y—1)

 gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)-image(i-1,j-1)-2*image(i-1,j)—image(i—1,j+1))/4;

gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)—2*image(i,j-1)-image(i+1,j—1))/4;

  g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));

%   g3(i,j)=max(gh3(i,j),gv3(i,j));

%   g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));

 end

end

subplot(224);

imshow(uint8(g3),[]);

title(’Sobel算子');

%subplot(235)

%imshow(uint8(gh3),[]);

%title(’检测水平边界');

% subplot(236);

%imshow(uint8(gv3),[]);

%title('检测竖直边界’);

figure(’Name',’棋盘法','NumberTitle','off’);

subplot(221);

imshow(uint8(image),[]);

title(’原图像');

[x,y]=size(image);

g1=image;

gh1=image;

gv1=image;

for i=2:

(x-1)

forj=2:

(y-1)

gh1(i,j)=image(i,j)-image(i-1,j—1);

  gv1(i,j)=image(i,j—1)—image(i-1,j);

%  g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));

     g1(i,j)=max(gh1(i,j),gv1(i,j));

end

end

subplot(222);

imshow(uint8(g1),[]);

title('Roberts算子’);

g2=image;

gh2=image;

gv2=image;

fori=2:

(x—1)

 forj=2:

(y—1)

  gh2(i,j)=((image(i+1,j-1)+image(i+1,j)+image(i+1,j+1))/3)—((image(i-1,j-1)+image(i-1,j)+image(i-1,j+1))/3);

    gv2(i,j)=((image(i-1,j+1)+image(i,j+1)+image(i+1,j+1))/3)-((image(i—1,j—1)+image(i,j—1)+image(i+1,j-1))/3);

% g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));

  g2(i,j)=max(gh2(i,j),gv2(i,j));

  end

end

subplot(223);

imshow(uint8(g2),[]);

title('Prewitt算子’);

g3=image;

gh3=image;

gv3=image;

for i=2:

(x—1)

   forj=2:

(y-1)

    gh3(i,j)=(image(i+1,j—1)+2*image(i+1,j)+image(i+1,j+1)—image(i-1,j-1)-2*image(i—1,j)-image(i—1,j+1))/4;

 gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)—image(i—1,j—1)—2*image(i,j—1)-image(i+1,j-1))/4;

  g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));

  g3(i,j)=max(gh3(i,j),gv3(i,j));

% g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));

 end

end

subplot(224);

imshow(uint8(g3),[]);

title('Sobel算子’);

figure('Name’,'欧式几何法','NumberTitle','off’);

subplot(221);

imshow(uint8(image),[]);

title('原图像’);

[x,y]=size(image);

g1=image;

gh1=image;

gv1=image;

for i=2:

(x-1)

 forj=2:

(y-1)

  gh1(i,j)=image(i,j)-image(i-1,j-1);

   gv1(i,j)=image(i,j-1)—image(i-1,j);

%  g1(i,j)=abs(gh1(i,j))+abs(gv1(i,j));

%   g1(i,j)=max(gh1(i,j),gv1(i,j));

   g1(i,j)=sqrt(gh1(i,j)*gh1(i,j)+gv1(i,j)*gv1(i,j));

  end

end

subplot(222);

imshow(uint8(g1),[]);

title(’Roberts算子');

g2=image;

gh2=image;

gv2=image;

fori=2:

(x—1)

  forj=2:

(y-1)

  gh2(i,j)=((image(i+1,j-1)+image(i+1,j)+image(i+1,j+1))/3)-((image(i—1,j-1)+image(i-1,j)+image(i-1,j+1))/3);

     gv2(i,j)=((image(i-1,j+1)+image(i,j+1)+image(i+1,j+1))/3)-((image(i—1,j—1)+image(i,j-1)+image(i+1,j—1))/3);

%     g2(i,j)=abs(gh2(i,j))+abs(gv2(i,j));

%  g2(i,j)=max(gh2(i,j),gv2(i,j));

   g2(i,j)=sqrt(gh2(i,j)*gh2(i,j)+gv2(i,j)*gv2(i,j));

 end

end

subplot(223);

imshow(uint8(g2),[]);

title(’Prewitt算子');

g3=image;

gh3=image;

gv3=image;

fori=2:

(x—1)

forj=2:

(y-1)

  gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)—image(i—1,j-1)-2*image(i-1,j)—image(i-1,j+1))/4;

   gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)—2*image(i,j—1)-image(i+1,j-1))/4;

% g3(i,j)=abs(gh3(i,j))+abs(gv3(i,j));

%  g3(i,j)=max(gh3(i,j),gv3(i,j));

 g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j));

 end

end

subplot(224);

imshow(uint8(g3),[]);

title(’Sobel算子’);

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2