.
实 验 报 告
实验名称 课程名称
实验四 图像分割
数字图像处理A
姓名
成绩
班级
学号
日期
地点
备注:
1.实验目的
(1)了解并掌握图像分割的基本原理;
(2)编写程序使用Hough变换处理图像,进行线检测;
'.
.
(3)编写程序使用阈值处理方法进行图像分割,根据实验结果分析效果;
(4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2.实验环境(软件条件)
Windws2000/XP
MATLAB 7.0
3.实验方法
对256级灰度的数字图像camera.bmp(如图4.1所示)和car.bmp(如图4.2所示)进行如下处理:
图4.1 实验图像camera.bmp
图4.2 实验图像car.bmp
(1)对图像camera.bmp进行Hough变换进行线检测,显示处理前、后图像: 思考如何利用Hough变换进行圆检测;
(2)对图像car.bmp分别利用不同的阈值处理方法进行图像中汽车及车牌的分割,显示处理前、后图像;思考不同的阈值处理算法对分割效果的影响?
4.实验分析
实验原理
Hough变换是最常用的直线提取方法,它的基本思想是:将直线上每一个数据点变换为参数平面中的一条直线或曲线,利用共线的数据点对应的参数曲线相交于参数空间中一点的关系,使直线的提取问题转化为计数问题。Hough变换提取直线的主要优点是受直线中的间隙和噪声影响较小。 思考:
Hough变换对圆的检测: Hough变换的基本原理在于,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线。
圆的方程为:(x?a)?(y?b)?r,通过Hough变换,将图像空间(x,y)对应到参数空间(a,b,r)。 第一题结果图
222'.
.
-300-200-100\\R0100200300-500\\T50
第二题
实验原理:基于灰度的分割最简单的处理思想是,高于某一灰度的像素划分到一个区域中,低于某灰度的像素划分到另一区域中,这种基于灰度阈值的分割方法称为灰度门限法。最简单的灰度分割方法—灰度门限法,他是基于灰度阈值的分割方法,也是基于区域的分割方法。主要将高于某一灰度的像素划分到一个区域中,低于某灰度的像素划分到另一区域中。 结果图 思考:
直方图阈值法:理论分析和实验结果表明,该方法分割效果好,运算速度快,具有较高的实用价值。
Otsu法:该方法选取出来的阈值非常理想,对各种情况的表现都较为良好。虽然它在很多情况下都不是最佳的分割,但分割质量通常都有一定的保障,可以说是最稳定的分割。
直方图阈值法
'.
.
原图像1500100050000分割后的图像直方图100200
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('分割后的图像');
'.
数字图像处理实验 图像分割
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)