MATLAB 软件使用简介 轮廓线提取 实验2 图像轮廓线提取技术 实验(8)

2019-04-14 20:50

化率,而方向α上的灰度变化率可以用相应公式进行计算;对于数字图像,应该采用差分运算代替求导,差分公式参考相关教材。

函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模。利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。为了运算简便,实际中采用梯度模的近似形式。另外,还有一些常用的算子,如Roberts算子和Sobel算子。 由于Sobel算子是滤波算子的形式,用于提取边缘。也可以利用快速卷积函数,简单有效,因此应用很广泛。

拉普拉斯高斯(loG)算法是一种二阶边缘检测方法。它通过寻找图像灰度值中二阶微分中的过零点(Zero Crossing)来检测边缘点。其原理为,灰度级变形成的边缘经过微风算子形成一个单峰函数,峰值位置对应边缘点;对单峰函数进行微分,则峰值处的微分值为0,峰值两侧符号相反,而原先的极值点对英语二阶微分中的过零点,通过检测过零点即可将图像的边缘提取出来。

MATLAB的图像处理工具箱中提供的edge函数可以实现检测边缘的功能,其语法格式如下:

1:采用Sobel算子进行边缘检测 BW = edge(I,'sobel')

2:指定算子方向的Sobel算子边缘检测 BW = edge(I,'sobel',direction) 其中: direction=‘horizontal’,为水平方向; direction=‘vertical’,为垂直方向;

direction=‘both’,为水平和垂直两个方向。 3:Roberts算子

BW = edge(I,'roberts') 4:拉普拉斯高斯算子 BW = edge(I,'log') 七、 练习

1.任意选取一个灰度图像和彩色图像,对算法中若干关键语句中的参数进行调整,得出不同的实验结果,并对这些结果进行分析。 2.根据自己所学知识,提出自己的轮廓线提取方法,与简单阈值法进行比较分析。 3.练习matlab自带算子的检测结果。 4.写出图像轮廓线提取的实验报告。

实验2 RGB向量空间中的图像分割技术

一、 实验目的与要求:

1、 能熟练应用matlab去分析问题、解决问题;

2、 熟悉对matlab的图像处理的功能,掌握基本的图像处理的若干命令; 3、 在应用matlab进行图像处理方面具备一定的编程能力。

4、 掌握figure,imread,image,colormap,imshow,imwrite,subplot,title,

rgb2gray,imfinfo等语句的基本使用方法。 5、 掌握图像分割技术中的简单方法并上机实现。 6、 进一步提高对复杂图像处理的能力。 二、 问题描述

“图像分割”简单地说,就是要把图像中有意义的区域与背景分离开,依据的原则是同一区域具有“同质性”。“区域”是图像中相邻的具有类似性质的点组成的集合。

图像分割是在图像预处理的基础上对信息进行组织与加工,它是在对图像自动识别与理解之前必不可少的步骤,其目标就是将图像划分为具有区域强相关性的各组成部分。 三、 问题分析

“图像分割”模拟提取图像中景物的信息。因此,可以通过图像中物体所具备的特征(如大小、形状、颜色、纹理等)来指导分割,并利用这些特征之间的相互信息,进行更复杂的分割。

常见的分割方法有:阈值法、类间最大距离法、区域增长法等。本实验重点实现前面两种方法。 四、 背景知识介绍

重点介绍两种简单的分割方法,简单阈值法和类间最大距离法。 1.

简单阈值法 在理想状态下,背景与对象之间的灰度值相差很大,且同一个对象具有基本相同的灰度值。体现在图像的灰度直方图上,就是直方图呈明显的双峰分布,两类灰度级之间无交叠。 因此,可以认为处于直方图谷底的灰度值就是目标对象和背景之间的分界线。称该灰度为“阈值”,选取了阈值以后,根据实际情况,把灰度高于该阈值的像素点置为白色,低于该阈值的像素点置为黑色。这样处理之后就可以把目标图像和

背景分开了。

设f(x, y)表示原图像,g(x, y)表示分割后的图像,T为选定的灰度阈值,分割算法表示为:

f(x,y)?T?255, g(x,y)??f(x,y)?T?0,

从表达式可以看出,算法的关键在于阈值T的确定。在理想状态下,我们可以取直方图中处于谷底的点作为阈值;或者通过多次调试,确定效果最优的灰

度值作为阈值。 2.

类间最大距离法

前面介绍的简单阈值法有一个最大的不足,就是阈值的选取不够智能化。于是我们想寻求一种智能的分割方法。类间最大距离法就是其中一种方法。 显然,一幅灰度图像的目标区域跟背景区域有较大的灰度区别,才能使我们分辨出目标和背景。因此可以设计一种算法,以不同区域之间的距离达到最大为目标,用运筹学中的规划方法,得到实现目标的最优阈值。现在,关键的问题是如何定义区域之间的“距离”。可以采用不同的方法来衡量距离,这里采取一种相对简单的方法,就是把两类区域像素灰度均值的方差作为度量的距离。 ?

灰度均值的计算:

ui = Σf(x,y) /N; (1) 其中:f(x,y)表示二维图像(x,y)处像素点的灰度值,N表示像素点的个数。 ?

两区域间相对距离的计算:

给定一个初始阈值Th0,将图像分为C1和C2两区域,对应区域的灰度均值分别为U1、 U2。则两区域的相对距离为:

S = (U2 – Th0)×(Th0 – U1)/(U2 – U1)^2 (2) ?

选择最佳的阈值

给定阈值变化的区间[a,b],用优化函数fmin()获得区间范围内的最佳阈值Th,使得图像按照该阈值Th分为C1和C2两类后,满足:

STh?max{ST}

T?[a,b]五、 实验过程

1. 简单阈值分割实验

实验流程图:

源代码(.m文件): function I = smpthrshd(A , T)

%简单阀值法的源代码,为了提高函数的可重用型,把原图像作为参数 I = A; %I是目标图像,与原图像大小相同 [n , m] = size(I); %读出原图像的大小 for i = 1 : n

for j = 1 : m %两重循环,实现扫描矩阵的每一个像素点 if A(i , j) <= T %以下代码实现:

I(i , j) = 0; %当像素点的灰度小于阈值则置为黑色 elseif A(i , j) > T

I(i , j ) = 255; %当像素点的灰度大于阈值则置为白色 end; end; end;

imshow(I); %显示分割后的图像

title('经过简单阀值分割后的图像'); 2.

类间最大距离法分割实验

算法流程图如下:

算法源代码(.m文件)如下:

%——————子函数1,计算灰度均值——————% function [U1, U2] = getaverage(I, Th) %计算两个区域的灰度均值

%阈值Th把图像分成两个区域:灰度高于Th的区域和灰度低于Th的区域 [n,m] = size(I);

sum1 = 0; %设置灰度和的初始值 sum2 = 0;

num1 = 0; %设置每个区域像素点个数的初值 num2 = 0;

for i = 1 : n %两重循环,实现扫描整个矩阵 for j = 1 : m

if I(i , j) <= Th %如果灰度小于或等于阈值,则属于区域1 num1 = num1 + 1; %区域1 的像素个数加1

sum1 = sum1 + I(i , j);%区域1灰度之和加上当前像素点的灰度 else %否则,该像素点属于区域2

sum2 = sum2 + I(i , j);%区域2 灰度之和加上当前像素点的灰度 end; end; end;


MATLAB 软件使用简介 轮廓线提取 实验2 图像轮廓线提取技术 实验(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高二下家长会物理老师的发言稿

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: