实验四 图像分割
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电学院
实验报告
实验名称图像分割
课程名称数字图像处理A
姓名成绩
班级学号
日期2011.6.21 地点3#531
实验四图像分割
1. 实验任务
(1)了解并掌握图像分割的基本原理;
(2)编写程序使用Hough 变换处理图像,进行线检测;
(3)编写程序使用阈值处理方法进行图像分割,根据实验结果分析效果; (4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2. 实验环境及开发工具
Windws2000/XP MATLAB 7.x
3. 实验内容
对256级灰度的数字图像camera.bmp (如图4.1所示)和car.bmp (如图4.2所示)进行如下处理:
(1)对图像camera.bmp 进行Hough 变换进行线检测,显示处理前、后图像:
思考如何利用Hough 变换进行圆检测;
(2)对图像car.bmp 分别利用不同的阈值处理方法进行图像中汽车及车牌的分割,显示处理前、后图像;
思考不同的阈值处理算法对分割效果的影响? 4.实验分析
在MatLab 中输入各程序代码后运行程序,得到输出结果如图所示 (1)程序运行图(对图像camera.bmp 进行Hough 变换进行线检测):
图4.1 实验图像camera.bmp
图4.2 实验图像
car.bmp
(2)程序运行图(对图像car.bmp 利用不同的阈值处理方法进行图像中汽车及车牌的分割)
<1>利用直方图阈值法对图像进行分割
原图
象
边缘检测图像
hough 变换后的图象
θ
ρ
50
100
150
200250300350
经典hough 变换提取的图像
原图像
分割图
<2>利用Otsu 算法法对图像进行分割图像进行分割
5.实验结论
Hough 变换处理图像:为提高Hough 变换的计算速度,是参加Hough 变换的点不是整幅图像的每个像素,。而是边缘检测即从图像平面中提取边缘点或特征点,然后再二值化处理与细化,得到Hough 变换后的图像,最后再用经典Hough 变换从camera.bmp 图像的边缘检测后的变换二值图像中提取图像,通过这样的处理,能够减少图像中的噪声点,以提高边缘检测的准确性同时采用通过细化可减少Hough 变换的点数。
利用不同的阈值处理图像:利用Otsu 算法分割原始图像,将汽车、车牌号分割,
改变阈值选取最优图像,使用Otsu 算法阈值分割能够分割出图像中特定的目标,更清晰的分辨出图像中的目标通过该算法对于多目标对象分割效果是很明显的。 附件
50
100
150
200
250
直方图
原图像
Otsu 分割图
程序
1)程序(对图像camera.bmp进行Hough变换进行线检测)
I = imread('camera.bmp');%jaynes-thesis
[x,y]=size(I);
BW=edge(I);
figure;imshow(I);title('原图象')
figure;imshow(BW);title('边缘检测图像')
rho_max=floor(sqrt(x^2+y^2))+1; %由原图数组坐标算出ρ最大值,并取整数部分加1
%此值作为ρ,θ坐标系ρ最大值
accarray=zeros(rho_max,180); %定义ρ,θ坐标系的数组,初值为0。
%θ的最大值,180度
Theta=[0:pi/180:pi]; %定义θ数组,确定θ取值范围
for n=1:x,
for m=1:y
if BW(n,m)==1
for k=1:180 %将θ值代入hough变换方程,求ρ值
rho=(m*cos(Theta(k)))+(n*sin(Theta(k)));
%将ρ值与ρ最大值的和的一半作为ρ的坐标值(数组坐标),这样做是为了防止ρ值出现负数
rho_int=round(rho/2+rho_max/2);
%在ρθ坐标(数组)中标识点,即计数累加
accarray(rho_int,k)=accarray(rho_int,k)+1;
end
end
end
end
figure;colormap gray;
imagesc(accarray);title('hough变换后的图象')
xlabel('\theta'), ylabel('\rho');
%利用hough变换提取直线
%寻找100个像素以上的直线在hough变换后形成的点
K=1; %存储数组计数器
for rho_n=1:rho_max %在hough变换后的数组中搜索
for theta_m=1:180
if accarray(rho_n,theta_m)>=15 %设定直线的最小值。
case_accarray_n(K)=rho_n; %存储搜索出的数组下标
case_accarray_m(K)=theta_m;
K=K+1;
end
end
end
%把这些点构成的直线提取出来,输出图像数组为I_out
I_out=zeros(x,y);
I_jiao_class=zeros(x,y);