数字图像处理实验 图像分割

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

实验名称实验四图像分割

课程名称数字图像处理A

姓名成绩

班级学号

日期地点

1.实验目的

(1)了解并掌握图像分割的基本原理;

(2)编写程序使用Hough变换处理图像,进行线检测;

(3)编写程序使用阈值处理方法进行图像分割,根据实验结果分析效果;

(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。

2.实验环境(软件条件)

Windws2000/XP

MATLAB 7.0

3.实验方法

对256级灰度的数字图像camera.bmp(如图4.1所示)和car.bmp(如图4.2所示)进行如下处理:

(1)对图像camera.bmp进行Hough变换进行线检测,显示处理前、后图像:

思考如何利用Hough变换进行圆检测;

(2)对图像car.bmp分别利用不同的阈值处理方法进行图像中汽车及车牌的分割,显示处理前、后图像;思考不同的阈值处理算法对分割效果的影响?

4.实验分析

实验原理

Hough变换是最常用的直线提取方法,它的基本思想是:将直线上每一个数据点变换为参数平面中的一条直线或曲线,利用共线的数据点对应的参数曲线相交于参数空间中一点的关系,使直线的提取问题转化为计数问题。Hough变换提取直线的主要优点是受直线中的间隙和噪声影响较小。

思考:

Hough变换对圆的检测:

Hough变换的基本原理在于,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线。

圆的方程为:222

()()

x a y b r

-+-=,通过Hough变换,将图像空间(,)

x y对应到参数空间(,,)

a b r。

第一题结果图

图4.1 实验图像camera.bmp 图4.2 实验图像car.bmp

\T \R -500

50

-300

-200

-100

第二题

实验原理:基于灰度的分割最简单的处理思想是,高于某一灰度的像素划分到一个区域中,低于某灰度的像素划分到另一区域中,这种基于灰度阈值的分割方法称为灰度门限法。最简单的灰度分割方法—灰度门限法,他是基于灰度阈值的分割方法,也是基于区域的分割方法。主要将高于某一灰度的像素划分到一个区域中,低于某灰度的像素划分到另一区域中。 结果图

思考:

直方图阈值法:理论分析和实验结果表明,该方法分割效果好,运算速度快,具有较高的实用价值。

Otsu 法:该方法选取出来的阈值非常理想,对各种情况的表现都较为良好。虽然它在很多情况下都不是最佳的分割,但分割质量通常都有一定的保障,可以说是最稳定的分割。

直方图阈值法

原图像

0100200

直方图分割后的图像

Otsu 法

原图像

分割后的图像

5.实验结论

Matlab 提供了三个与Hough 变换有关的函数:Hough 函数,Houghpeaks 函数和Houghlines 函数。在算法实现中,考虑到噪声的影响和参数空间离散化得需要,求交点的问题成为一个累加器问题。

直方图阈值法:利用灰度直方图求双峰或多峰,选择两峰之间的谷底作为阈值。

自动阈值法:Otsu 法。Otsu 法是使类间方差最大而推导出的一种能自动确定阈值的方法,具有简单,处理速度快的特点。在Matlab 工具箱中,Graythresh 函数基于Otsu 算法求取灰度阈值。Graythresh 函数的语法格式为:level=fraythresh(I).

附件

第一题源程序

clear all ;

RGB = imread('C:\Documents and Settings\Administrator\桌面\camera.bmp');

I=RGB;

%I = rgb2gray(RGB);

BW = edge(I,'canny'); % 利用Canny算子提取图像边缘

[H,T,R] = hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5); subplot(121)

imshow(T,R,H,[],'notruesize'), axis on, axis normal

xlabel('\T'), ylabel('\R')

p = houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));

%找到5个较明显的Hough变换峰值

hold on

plot(T(p(:,2)),R(p(:,1)),'s','color','white');

lines = houghlines(BW,T,R,p,'FillGap',10,'MinLength',10);

%查找并链接线段

figure, imshow(BW), hold on%在二值图中叠加显示这些线段

for k = 1:length(lines)

xy = [lines(k).point1; lines(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');

end

第二题源程序

%用直方图阈值法

I=imread('C:\Documents and Settings\Administrator\桌面\car.bmp');

subplot(2,2,1);

imshow(I);

title('原图像');

I1=rgb2gray(I);

subplot(2,2,2);

imhist(I1);

title('直方图');

subplot(2,2,3);

I2=im2bw(I1,165/415);

imshow(I2);

title('分割后的图像');

%用Otsu算法

I=imread('C:\Documents and Settings\Administrator\桌面\car.bmp');

subplot(2,1,1);

imshow(I);

title('原图像');

subplot(2,1,2);

level=graythresh(I);

BW=im2bw(I,level);

imshow(BW);

title('分割后的图像');

相关文档
最新文档