如何用hough变换方法检测图像中的圆
1个回答
展开全部
Hough变换是实现图像边缘检测的一种有效方法,其基本思想是将测量空间的一点变换到参量空间中的一条曲线或一个曲面,而具有同一参量特征的点交换后在参量空间中相交,通过判断交点处的积累程度来完成特征曲线的检测,基于参量性质的不同,Hough变换可以检测直线、圆、椭圆、双曲线、抛物线等。同时,将概率论、模糊集理论、分层迭代的思想和级联的方法应用于Hough变换的过程中,大大地提高了Hough变换的效率,改善了Hough变换的性能。
实验主要使用的函数
MATLAB内部常数pi:圆周率 p(= 3.1415926...)
MATLAB常用基本数学函数:
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算子检测边缘
hough变换检测圆
分别显示灰度图像:
figure;subplot
Sobel:算子边缘检测图像
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_space = zeros(m,n,size_r);
[rows,cols] = find(BW);
ecount = size(rows);
for i=1:ecount
for r=1:size_r
for k=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(a>0&&a<=m&&b>0&&b<=n)
hough_space(a,b,r) = hough_space(a,b,r)+1;
end
end
end
end
max_para = max(max(max(hough_space)));
index = find(hough_space>=max_para*p);
length = size(index);
hough_circle = false(m,n);
for i=1:ecount
for k=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&&...
(rows(i)-par1)^2+(cols(i)-par2)^2>(r_min+(par3-1)*step_r)^2-5)
hough_circle(rows(i),cols(i)) = true;
end
end
end
for k=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;
par3 = r_min+(par3-1)*step_r;
fprintf(1,'Center %d %d radius %d\n',par1,par2,par3);
para(:,k) = [par1,par2,par3];
end
subplot(221),imshow(f);
subplot(222),imshow(BW);
subplot(223),imshow(hough_circle)
实验主要使用的函数
MATLAB内部常数pi:圆周率 p(= 3.1415926...)
MATLAB常用基本数学函数:
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算子检测边缘
hough变换检测圆
分别显示灰度图像:
figure;subplot
Sobel:算子边缘检测图像
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_space = zeros(m,n,size_r);
[rows,cols] = find(BW);
ecount = size(rows);
for i=1:ecount
for r=1:size_r
for k=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(a>0&&a<=m&&b>0&&b<=n)
hough_space(a,b,r) = hough_space(a,b,r)+1;
end
end
end
end
max_para = max(max(max(hough_space)));
index = find(hough_space>=max_para*p);
length = size(index);
hough_circle = false(m,n);
for i=1:ecount
for k=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&&...
(rows(i)-par1)^2+(cols(i)-par2)^2>(r_min+(par3-1)*step_r)^2-5)
hough_circle(rows(i),cols(i)) = true;
end
end
end
for k=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;
par3 = r_min+(par3-1)*step_r;
fprintf(1,'Center %d %d radius %d\n',par1,par2,par3);
para(:,k) = [par1,par2,par3];
end
subplot(221),imshow(f);
subplot(222),imshow(BW);
subplot(223),imshow(hough_circle)
上海华然企业咨询
2024-10-28 广告
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步...
点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询