用Hough变换检测二值图像中的圆(共7页).docx
《用Hough变换检测二值图像中的圆(共7页).docx》由会员分享,可在线阅读,更多相关《用Hough变换检测二值图像中的圆(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上用Hough变换检测二值图像中的圆 Hough 变换简介Hough变换是实现图像边缘检测的一种有效方法,其基本思想是将测量空间的一点变换到参量空间中的一条曲线或一个曲面,而具有同一参量特征的点交换后在参量空间中相交,通过判断交点处的积累程度来完成特征曲线的检测,基于参量性质的不同,Hough变换可以检测直线、圆、椭圆、双曲线、抛物线等。同时,将概率论、模糊集理论、分层迭代的思想和级联的方法应用于Hough变换的过程中,大大地提高了Hough变换的效率,改善了Hough变换的性能。实验主要使用的函数 MATLAB内部常数pi:圆周率p(=3.)MATLAB常用基本数学函
2、数: abs(x):纯量的绝对值或向量的长度;round(x):四舍五入至最近整数; floor(x):地板函数,即舍去正小数至最近整数; MATLAB常用三角函数sin(x):正弦函数cos(x):余弦函数;向量的常用函数max(x):向量x的元素的最大值。MATLAB图像类型转换函数:rgb2gray:将一副真彩色图像转换成灰度图像;im2bw:通过设定高度阈值将真彩色,索引色,灰度图转换成二值图像;MATLAB图形图像文件的读取和显示函数imread(filename);MATLAB二进制图像及其显示imshow(f1)。用double对二值图像双精度化图形处理:sobel算子检测边缘h
3、ough变换检测圆 分别显示灰度图像:figure;subplotSobel:算子边缘检测图像hough变换检测后的图像实验相关代码 I=imread(*.jpg);f=rgb2gray(I);f1=im2bw(f,200/255);BW1=double(f1); BW=edge(BW1,sobel,0.4);r_max=50; r_min=10;step_r=10;step_angle=pi/12;p=0.7;m,n=size(BW); size_r=round(r_max-r_min)/step_r)+1;size_angle=round(2*pi/step_angle);hough_sp
4、ace=zeros(m,n,size_r);rows,cols=find(BW);ecount=size(rows);fori=1:ecountforr=1:size_r fork=1:size_angle a=round(rows(i)-(r_min+(r-1)*step_r)*cos(k*step_angle);b=round(cols(i)-(r_min+(r-1)*step_r)*sin(k*step_angle);if(a0&a0&b=max_para*p);length=size(index); hough_circle=false(m,n);fori=1:ecount fork=
5、1:length par3=floor(index(k)/(m*n)+1; par2=floor(index(k)-(par3-1)*(m*n)/m)+1;par1=index(k)-(par3-1)*(m*n)-(par2-1)*m; if(rows(i)-par1)2+(cols(i)-par2)2(r_min+(par3-1)*step_r)2-5)hough_circle(rows(i),cols(i)=true;endendend fork=1:length par3=floor(index(k)/(m*n)+1; par2=floor(index(k)-(par3-1)*(m*n)
6、/m)+1;par1=index(k)-(par3-1)*(m*n)-(par2-1)*m;par3=r_min+(par3-1)*step_r; fprintf(1,Center%d%dradius%dn,par1,par2,par3);para(:,k)=par1,par2,par3;end subplot(221),imshow(f);subplot(222),imshow(BW); subplot(223),imshow(hough_circle) 图像读取 图像处理的第一步就是对所采集的图像进行读入,本次研究采集的图像是24位真彩色的JPG格式的图像。真彩色图像可用双精度存储,亮度值
7、范围是0,1;比较符合习惯的存储方法是用无符号整型存储,亮度值范围0,255。 在实验中我们开始因为遇到了sobel算子无法识别二值图像的问题,后来用了double解决问题。 MATLAB中图形图像文件的读取利用函数imread()完成。图像灰度与二值化处理白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。用灰度表示的图像称作灰度图。 MATLAB中rgb2gray()函数可以实现图像灰度化,它是以R、G、B为轴建立空间直角坐标系,则RGB图的每个象素的颜色可以用该三维空间的一个点来表示,而Gray图的每个象素的颜色可以用直线R=G=B上的一个点来表示。于是rgb转gray图的
8、本质就是寻找一个三维空间到一维空间的映射,最容易想到的就是射影(即过rgb空间的一个点向直线R=G=B做垂线),事实上MATLAB也是这样做的,并且有Gray=0.29900*R+0.58700*G+0.11400*B。 图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。全局二值化最常用的方法就是设定一个全局的阈值P,用P将图像的数据分成两部分:大于P的像素群和小于P的像素群。将大于P的像素群的像素值设定为白色(或者黑色),小于P的像素群的像素值设定为黑色(或者白色)。 MATLAB中使用im2bw函数,f1=im2bw(f,阈值)即
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hough 变换 检测 图像 中的
限制150内