试验四图像的边缘与轮廓.docx
- 文档编号:7725106
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:19
- 大小:653.63KB
试验四图像的边缘与轮廓.docx
《试验四图像的边缘与轮廓.docx》由会员分享,可在线阅读,更多相关《试验四图像的边缘与轮廓.docx(19页珍藏版)》请在冰豆网上搜索。
试验四图像的边缘与轮廓
大连理工大学
本科实验报告
课程名称:
数字图像处理
学院(系):
电子信息与电气工程学部
专业:
电子信息工程
班级:
电0709班
学号:
200781532
姓名:
陈禹希
实验一图像的点运算
一、实验目的
熟悉窗口变换、阀值变换、灰度均衡、拉伸、线性变换等常用的点运算方法。
二、实验题目
(1)对于实验1中的图像1,显示其灰度图像,并统计其灰度图像的直方图
参考函数:
imread;imshow;rgb2gray
(2)对灰度图像进行简单的灰度线性变换(直方图均衡化)
参考实验原理中的线性变换介绍。
(3)观察灰度线性变换前后,其直方图的对应变化。
(4)对实验1中的图像2,自定义阈值,将图像二值化
实验程序:
clc
clearall
closeall
image1=imread('E:
\实验用图\实验一用图\1.jpg');%读入图像
im11=rgb2gray(image1);%彩色变黑白
figure
subplot(3,2,1),imshow(image1),title('原图')
subplot(3,2,2),imshow(im11),title('灰度图')
subplot(3,2,3),imhist(im11),title('灰度图像直方图')
subplot(3,2,4),histeq(im11),title('灰度线性变换图')
im12=histeq(im11)
subplot(3,2,5),imhist(im12),title('灰度线性变换直方图')
image2=imread('E:
\实验用图\实验一用图\2.jpg');%读入图像
im21=im2bw(image2,0.5);
figure
subplot(1,2,1),imshow(image2),title('原图')
subplot(1,2,2),imshow(im21),title('二值化图')
实验二图像的几何变换
一、实验目的
根据图像的几何变换原理,确定各种几何变换的数学模型,用C语言编程,实现位图的平移、旋转、镜象、转置、缩放等几何变换。
二、实验原理
1.平移(translation)
平移变换大概是几何变换中最简单的一种了。
如图2.1所示,初始坐标为(x0,y0)的点经过平移(tx,ty)(以向右,向下为正方向)后,坐标变为(x1,y1)。
这两点之间的关系是x1=x0+tx,y1=y0+ty。
图2.1平移的示意图
以矩阵的形式表示为:
我们更关心的是它的逆变换:
这是因为:
我们想知道的是平移后的图像中每个象素的颜色。
例如我们想知道,新图中左上角点的RGB值是多少?
很显然,该点是原图的某点经过平移后得到的,这两点的颜色肯定是一样的,所以只要知道了原图那点的RGB值即可。
那么到底新图中的左上角点对应原图中的哪一点呢?
将左上角点的坐标(0,0)入公式(2.2),得到x0=-tx,y0=-ty;所以新图中的(0,0)点的颜色和原图中(-tx,-ty)的一样。
2.旋转(rotation)
旋转有一个绕着什么转的问题,通常的做法是以图像的中心为圆心旋。
在我们熟悉的坐标系中,将一个点顺时针旋转a角后的坐标变换公式,如图2.2所示,
图2.2旋转的示意图图2.3两种坐标系间的转换关系
r为该点到原点的距离,在旋转过程中,r保持不变;b为r与x轴之间的夹角。
旋转前:
x0=rcosb;y0=rsinb
旋转a角度后:
x1=rcos(b-a)=rcosbcosa+rsinbsina=x0cosa+y0sina;
y1=rsin(b-a)=rsinbcosa-rcosbsina=-x0sina+y0cosa;
以矩阵的形式表示:
上面的公式中,坐标系xoy是以图像的中心为原点,向右为x轴正方向,向上为y轴正方向。
它和以图像左上角点为原点o’,向右为x’轴正方向,向下为y’轴正方向的坐标系x’o’y’之间的转换关系如何呢?
如图2.3所示。
设图像的宽为w,高为h,容易得到:
逆变换为:
有了上面的公式,我们可以把变换分成三步:
1.将坐标系o’变成o;
2.将该点顺时针旋转a角;
3.将坐标系o变回o’,这样,我们就得到了变换矩阵,是上面三个矩阵的级联。
这样,对于新图中的每一点,我们就可以根据公式求出对应原图中的点,得到它的灰度。
如果超出原图范围,则填成白色。
要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图像可能会出现锯齿)。
更精确的方法是采用插值,将在图像缩放时介绍。
3.镜象(mirror)
镜像分水平镜象和垂直镜象两种。
镜象的变换矩阵很简单。
设原图宽为w,高为h,变换后,图的宽和高不变。
水平镜象的变化矩阵为:
垂直镜象的变化矩阵为
4.缩放(zoom)
缩放的变换矩阵很简单(假设放大因子为ratio):
三、实验题目
参考函数:
maketform,imtransform。
实验二的关键是根据题目要求确定好变换矩阵,变换矩阵的确定可参考实验原理。
(1)对实验二中的图像1缩小2倍以及放大3倍,并显示缩放后的图像
T=maketform('affine',[200;020;001]);
tformfwd([1020],T);
I=imread('E:
\实验用图\实验二用图\3.jpg');
transformedI=imtransform(I,T);
figure,imshow(I),figure,imshow(transformedI);
(2)对实验二中的图像2顺时针旋转30度,并显示旋转前后的图像
T=maketform('affine',[0.870.50;-0.50.870;001]);
tformfwd([1020],T);
I=imread('E:
\实验用图\实验二用图\2.jpg');
transformedI=imtransform(I,T);
figure,imshow(I),figure,imshow(transformedI)
(3)对实验二中的图像3向右平移10列,向下平移10行,并显示平移前后的图像
T=maketform('affine',[100;010;10-101]);
tformfwd([1020],T);
I=imread('E:
\E:
\实验用图\实验二用图\3.jpg');
transformedI=imtransform(I,T);
figure,imshow(I),figure,imshow(transformedI)
(4)对实验二中的图像4进行水平镜像处理,并显示处理前后的图
T=maketform('affine',[-100;010;1001]);
tformfwd([1020],T);
I=imread('E:
\实验用图\实验二用图\4.jpg');
transformedI=imtransform(I,T);
figure,imshow(I),figure,imshow(transformedI)
(5)对实验二中的图像5进行FFT变换,并显示其频谱图
参考函数:
fft2;fftshift;imshow
I=imread('E:
\实验用图\实验二用图\5.jpg');
Y=fftshift(fft2(I));
subplot(2,2,1),imshow(I),title('原图');
subplot(2,2,2),imshow(Y),title(’二维fft变换后的图象');
实验三图像的增强
一、实验目的
实现图像的平滑(去噪声),中值滤波,锐化等处理。
二、实验原理
1.平滑(smoothing)
图像的平滑用信号处理的理论来解释,这种做法实现的是一种简单的低通滤波器(lowpassfilter)。
在灰度连续变化的图像中,如果出现了与相邻象素的灰度相差很大的点,这种情况被认为是一种噪声。
灰度突变在频域中代表了一种高频分量,低通滤波器的作用就是滤掉高频分量,从而达到减少图像噪声的目的。
平滑模板的思想是通过将一点和周围8个点作平均,从而去除突然变化的点,滤掉噪声,其代价是图像有一定程度的模糊。
这种做法实现起来很简单。
每一点的灰度和它周围八个点的灰度相加,然后除以9,作为新图中对应点的灰度,数学模型可以表示如下:
这种表示方法有点象矩阵,我们称其为模板(template)。
中间的点表示中心元素,即,用哪个元素做为处理后的元素。
这是一种平滑模板,称之为Box模板。
Box模板虽然考虑了邻域点的作用,但并没有考虑各点位置的影响,对于所有的9个点都一视同仁,所以平滑的效果并不理想。
实际上我们可以想象,离某点越近的点对该点的影响应该越大,为此,我们引入了加权系数,距离越近的点,加权系数越大。
数学模型可以表示如下:
系数加权后的新模板也是一个常用的平滑模板,称为高斯(Gauss)模板。
它是通过采样2维高斯函数得到的。
2.中值滤波
中值滤波也是一种典型的低通滤波器,它的目的是保护图像边缘的同时去除噪声。
所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,将中间值作为(x,y)处的灰度值(若窗口中有偶数个象素,则取两个中间值的平均)。
中值滤波的特点是容易去除孤立点,线的噪声同时保持图像的边缘;它能很好的去除二值噪声,但对高斯噪声无能为力。
要注意的是,当窗口内噪声点的个数大于窗口宽度的一半时,中值滤波的效果不好。
这是很显然的。
3.锐化(sharpening)
锐化和平滑恰恰相反,它是通过增强高频分量来减少图像中的模糊,因此又称为高通滤波(highpassfilter)。
锐化处理在增强图像边缘的同时增加了图像的噪声。
常用的锐化模板是拉普拉斯(Laplacian)模板如下,又是个数学家的名字,可见学好数学,走遍天下都不怕。
拉普拉斯模板的作法:
先将自身与周围的8个象素相减,表示自身与周围象素的差别;再将这个差别加上自身作为新象素的灰度。
可见,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图像的噪声。
因为图像中的边缘就是那些灰度发生跳变的区域,所以锐化模板在边缘检测中很有用。
要注意的是,运算后如果出现了大于255或者小于0的点,称为溢出,溢出点的处理通常是截断,即大于255时,令其等于255;小于0时,取其绝对值。
4.彩色编码
对于一幅灰度图像,我们需要将它人为地转换成一幅彩色图像,这在医学图像处理中是很常见的。
因为人眼对灰度微弱递变的敏感程度远远小于对彩色变化的敏感程度。
因此,将一幅灰度图像按照特定的彩色编码进行彩色变换,这样就可以看到图像更加精细的结构,以便于医师对疾病的诊断。
一般,要将灰度图进行为彩色变换,可以采用一个256色的调色板(我们称之为为彩色编码表),在里面我们定义了每个灰度对应的颜色的RGB值。
5.Pavlidis经典细化算法
对二值图像,用Pavlidis的经典细化算法细化黑区域(象素值为1)。
Pavlidis的经典细化算法是典型的并行算法,通过与两个模板进行匹配层剥边界象素。
所得到的骨架形态是8-连接的。
处理的过程是:
先令要处理的像素值为-1,然后用模板去匹配,先用第一个模板匹配,如果匹配。
记录下来该点设它的值为1。
如果不匹配,再用第二个模板匹配,同样记录下来匹配的点令它的值为1。
依次到第六个模板记录下匹配的像素,这些像素就是骨架像素。
而值为-1即为将要清除的像素。
三、实验题目
1、对实验三图像1,利用imnoise函数在图像中加入高斯噪声(噪声的均值和方差任意)、椒盐噪声(噪声密度自定)
2、对题目1加入噪声后的图像,利用邻域平均法对其进行平滑去噪,观察去噪后的图像
I=imread('E:
\实验用图\实验三用图\1.jpg');
Y=imnoise(I,'gaussian',0,0.01);
X=imnoise(I,'salt&pepper',0.05);
H=FSPECIAL('average',[33]);
A=IMFILTER(Y,H);
B=IMFILTER(X,H);
subplot(3,2,1),imshow(I),title('原图象')
subplot(3,2,2),imshow(Y),title('加入高斯噪声后的图象')
subplot(3,2,3),imshow(X),title('加入椒盐噪声后的图象')
subplot(3,2,4),imshow(A),title('对加入高斯噪声后的图象平滑滤波')
subplot(3,2,5),imshow(B),title('对加入椒盐噪声后的图象平滑滤波')
3、对题目1中加入噪声后的图像进行中值滤波,观察滤波效果,并与2中的结果进行对比。
I=imread('E:
\实验用图\实验三用图\1.jpg');
X=imnoise(I,'salt&pepper',0.02);
x=rgb2gray(X);
y=medfilt2(x);
figure
imshow(x);title('椒盐噪声的图象');
figure;
imshow(y);title('中值滤波后的图象');
实验四图像的边缘与轮廓
一、实验目的
实现对待处理图像的边沿检测与提取。
二、实验原理
1.Robert算子
ROBERTS边缘检测算子是一种利用局部差分算子寻找边缘的算子,它由下式给出:
其中g(x,y)是具有整数像素坐标的输入图像,平方根运算是该运算类似于在人类视觉系统中发生的过程。
2.Prewitt算子
PREWITT算子有两个,和SOBEL算子一样,图像中的每一个点都用和两个算子进行卷积,取最大值作为输出。
算子表示如下:
3.Sobel算子
在边沿检测中,常用的一种模板是Sobel算子。
Sobel算子有两个,一个是检测水平边沿的
;另一个是检测垂直平边沿的
。
与
和
相比,Sobel算子对于象素的位置的影响做了加权,因此效果更好。
Sobel算子另一种形式是各向同性Sobel(IsotropicSobel)算子,也有两个,一个是检测水平边沿的
,另一个是检测垂直平边沿的
。
各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。
下面的几幅图中,图5.1为原图;图5.2为普通Sobel算子处理后的结果图;图5.3为各向同性Sobel算子处理后的结果图。
图5.1原图
图5.2普通Sobel算子处理后的结果图
图5.3各向同性Sobel算子处理后的结果图
可以看出Sobel算子确实把图像中的边沿提取了出来。
4.Kirsch算子
KRISCH由8个卷积核组成。
图像中的每个点都用这8个掩模进行卷积,每个掩模都对某个定的边缘方向最大响,所有8个方向的最大值作为边缘幅度图像的输出。
最大响应掩模的序号构成了边缘方向的编码。
5.Gauss-Laplace算子
由于噪声点(灰度与周围点相差很大的点)对边沿检测有一定的影响,所以效果更好的边沿检测器是高斯拉普拉斯(LOG)算子。
高斯平滑滤波器和拉普拉斯锐化滤波器结合了起来,先平滑掉噪声,再进行边沿检测,所以效果会更好。
常用的LOG算子是5×5的模板,如下所示
到中心点的距离与位置加权系数的关系用曲线表示为图5.4。
图5.4LOG到中心点的距离与位置加权系数的关系曲线
是不是很象一顶墨西哥草帽?
所以,LOG又叫墨西哥草帽滤波器。
图5.5用LOG滤波器处理图5.1后的结果图
三、实验要求
1、对实验四中的图像1,分别利用sobel算子,robert算子进行边缘检测。
Y=imread('E:
\实验用图\实验四用图\1.jpg');
I=rgb2gray(Y);
BW1=edge(I,'sobel');
BM2=edge(I,'roberts');
subplot(221)
imshow(I);title('原图象的灰度图象')
subplot(222)
imshow(BW1);title('sobel算子边缘检测');
subplot(223)
imshow(BM2);title('robert算子边缘检测');
2、对实验四中的图像2,分别利用prewitt算子,log算子,canny算子进行边缘检测,并对比检测的效果。
Y=imread('E:
\实验用图\实验四用图\2.jpg');
I=rgb2gray(Y);
BW1=edge(I,'prewitt');
BM2=edge(I,'log');
BM3=edge(I,'canny');
subplot(221)
imshow(I);title('原图象的灰度图象')
subplot(222)
imshow(BW1);title('prewitt算子边缘检测');
subplot(223)
imshow(BM2);title('log算子边缘检测');
subplot(224)
imshow(BM3);title('canny算子边缘检测');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试验 图像 边缘 轮廓