数字图像处理报告 完成版

发布 2019-06-25 21:01:37 阅读 2882

数字图像处理实验报告。

姓名:班级:

学号:专业:

指导教师:实验日期:

实验一边缘检测。

一、基本原理。

本实验主要是对图像的边缘进行提取,通过对边缘的分析来分析图像的特征。

首先,了解一些术语的定义:

边缘点:图像中具有坐标[i,j]且处在强度显著变化的位置上的点。

边缘段:对应于边缘点坐标[i,j]及其方位,边缘的方位可能是梯度角。

边缘检测器:从图像中提取边缘(边缘点和边缘段)集合的算法。

轮廓:边缘列表,或者是一条表示边缘列表的拟合曲线。

边缘连接:从无序边缘表形成有序边缘表的过程,习惯上,边缘表的表示采用顺时针方向来排序。

边缘跟踪:一个用来确定轮廓的图像(指滤波后的图像)搜索过程。

边缘就是图像中包含的对象的边界所对应的位置。物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。

图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。

边缘检测(edge detection)在图像处理和对象识别领域中都是一个重要的基本问题。由于边缘的灰度不连续性,可以使用求导数的方法检测到。最早的边缘检测方法都是基于像素的数值导数的运算。

本实验主要是对图像依次进行sobel算子,prewitt算子,roberts算子,laplace算子和canny算子运算,比较处理结果。

边缘检测有三个共性准则,1,好的检测结果,或者说对边缘的误测率尽可能低,就是在图像边缘出现的地方检测结果中不应该没有;另一方面不要出现虚假的边缘。

2,对边缘的定位要准确,也就是我们标记出的边缘位置要和图像上真正边缘的中心位置充分接近。

3,对同一边缘要有尽可能低的响应次数,也就是检测响应最好是单像素的。

二、对图像进行各种算子运算。

本实验中主要是对图像依次进行sobel算子,prewitt算子,roberts算子,laplace算子和canny算子运算。

matlab**:

clear all;

close all;

warning off all;

i = imread('

%没有噪声时的检测结果。

bw_sobel = edge(i,'sobel');

bw_prewitt = edge(i,'prewitt');

bw_roberts = edge(i,'roberts');

bw_laplace = edge(i,'log');

bw_canny = edge(i,'canny');

figure(1);

subplot(2,3,1),imshow(i),xlabel('原始图像');

subplot(2,3,2),imshow(bw_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(bw_prewitt),xlabel('prewitt检测');

subplot(2,3,4),imshow(bw_roberts),xlabel('roberts检测');

subplot(2,3,5),imshow(bw_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(bw_canny),xlabel('canny检测');

%加入高斯噪声(μ=0,σ^2=0.01)检测结果。

i_g1 = imnoise(i,'gaussian',0,0.01);

bw_sobel = edge(i_g1,'sobel');

bw_prewitt = edge(i_g1,'prewitt');

bw_roberts = edge(i_g1,'roberts');

bw_laplace = edge(i_g1,'log');

bw_canny = edge(i_g1,'canny');

figure(2);

subplot(2,3,1),imshow(i_g1),xlabel('加入高斯噪声(μ=0,σ^2=0.01)图像');

subplot(2,3,2),imshow(bw_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(bw_prewitt),xlabel('prewitt检测');

subplot(2,3,4),imshow(bw_roberts),xlabel('roberts检测');

subplot(2,3,5),imshow(bw_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(bw_canny),xlabel('canny检测');

%加入高斯噪声(μ=0,σ^2=0.02)检测结果。

i_g2 = imnoise(i,'gaussian',0,0.02);

bw_sobel = edge(i_g2,'sobel');

bw_prewitt = edge(i_g2,'prewitt');

bw_roberts = edge(i_g2,'roberts');

bw_laplace = edge(i_g2,'log');

bw_canny = edge(i_g2,'canny');

figure(3);

subplot(2,3,1),imshow(i_g2),xlabel('加入高斯噪声(μ=0,σ^2=0.02)图像');

subplot(2,3,2),imshow(bw_sobel),xlabel('sobel检测');

subplot(2,3,3),imshow(bw_prewitt),xlabel('prewitt检测');

subplot(2,3,4),imshow(bw_roberts),xlabel('roberts检测');

subplot(2,3,5),imshow(bw_laplace),xlabel('laplace检测');

subplot(2,3,6),imshow(bw_canny),xlabel('canny检测');

实验结果:三、实验分析:

通过对上述几种算子的研究,我们可以发现,prewit t 算子和sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,但是图像产生了一定的模糊, 而且有些边缘还检测不出来,所以检测精度比较低, 该类算子比较适用于图像边缘灰度值比较明显的情况。

robert s 算子检测精度比较高, 但容易丢失一部分边缘, 使检测的结果不完整,同时图像没经过平滑处理,不能抑制噪声,所以该算子对具有陡峭的低噪声图像响应最好。

laplace算子通过高斯函数对图像进行了平滑处理,对噪声的抑制作用比较明显, 但处理的同时也可能将原有的边缘平滑, 造成某些边缘无法检测到。此外,噪声对其影响也较大,检测到的图细节很丰富,同时就可能出现伪边缘。但是,如果要降低伪边缘的话,又可能使检测精度下降,丢失很多真边缘。

因此, 对于不同图像应选择不同参数。

canny 算子也采用高斯函数对图像进行平滑处理,也具有较强的去噪能力, 但同样可能会丢失一些边缘信息,但是,从图中可以看出,canny 算子比laplace算子的检测边缘的精度要高些。通过实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。

通过上述实验结果我们可以发现,在加入高斯噪声以后,canny算子的去噪能力减弱,对边缘检测的效果不太明显。相反,从图中可以发现sobel算子和prewitt算子对噪声的过滤作用较为明显。基本上能够检测出较为完整的边缘信号。

自编**:clc;

close all

图读取显示。

c=imread(''

subplot(1,3,1);

imshow(c)

m,n]=size(c);

得到一个m+2*n+2的矩阵,为模板卷积做准备。

cc=zeros(m+2,n+2); 初始化矩阵。

for i=1:m

for j=1:n

cc(i+1,j+1)=c(i,j);

endend

cc(1,1)=c(1,1); 四个角的赋值。

cc(1,m+2)=c(1,m);

cc(m+2,1)=c(m,1);

cc(m+2,n+2)=c(m,n);

for i=1:m %四边的赋值。

cc(i+1,1)=c(i,1);

endfor i=1:n

cc(1,i+1)=c(1,i);

endfor i=1:n

cc(m+2,i+1)=c(m,i);

endfor i=1:m

cc(i+1,n+2)=c(i,n);

endc1=zeros(m,n); 初始化一个新矩阵,用来存放水平模板卷积后的值。

c2=zeros(m,n); 初始化一个新矩阵,用来存放垂直模板卷积后的值。

c3=zeros(m,n); 初始化一个新矩阵,用来存放以2为范数(欧式距离)计算的值。

c4=zeros(m,n); 初始化一个新矩阵,用来存放以1为范数(城区距离)计算的值。

差分模板 d1=[-1,0,1;-1,0,1;-1,0,1]; 水平模板。

d2=[1,1,1;0,0,0;-1,-1,-1]; 垂直模板。

水平方向。for m=2:m+1

for n=2:n+1 c1(m-1,n-1)=(d1(1,1)*cc(m-1,n-1)+d1(1,2)*cc(m-1,n)+d1(1,3)*cc(m-1,n+1)..

d1(2,1)*cc(m,n-1)+d1(2,2)*cc(m,n)+d1(2,3)*cc(m,n+1)+.

d1(3,1)*cc(m+1,n-1)+d1(3,2)*cc(m+1,n)+d1(3,3)*cc(m+1,n+1))/9;

endend

垂直方向。for m=2:m+1

for n=2:n+1 c2(m-1,n-1)=(d2(1,1)*cc(m-1,n-1)+d2(1,2)*cc(m-1,n)+d2(1,3)*cc(m-1,n+1)+.

数字信号处理综合报告 数字音频信号的分析与处理

数字信号处理实验。题目数字音频信号的分析与处理 班级。姓名。学号。日期 2013.06.10 2013.06.24 1 复习巩固数字信号处理的基本理论 2 利用所学知识研究并设计工程应用方案。数字信号处理技术在音频信号处理中的应用日益增多,其灵活方便的优点得到体现。分频器即为其中一种音频工程中常用的...

数字信号处理实验报告三用FFT对信号作频谱分析

x1n ones 1,4 产生序列向量x1 n r4 n m 8 xa 1 m 2 xb m 2 1 1 x2n xa,xb 产生长度为8的三角波序列x2 n x3n xb,xa x1k8 fft x1n,8计算x1n的8点dft x1k16 fft x1n,16 计算x1n的16点dft x2k8...