matlab 霍夫变换 检测车辆,matlab 霍夫变换—检测圆

该博客介绍了如何利用MATLAB实现霍夫变换来检测图像中的圆形物体,特别是车辆。通过`hough_circle`函数,对二值图像进行处理,通过调整参数如半径步长、角度步长和阈值,能够精确识别多个不同半径的圆。博客还展示了主要代码段,包括边缘检测、参数空间构建和圆心、半径的计算。最后,通过实例展示了检测结果并给出了统计分析。
摘要由CSDN通过智能技术生成

文件1---hough_circle.m

function [hough_space,hough_circle,para] = hough_circle(BW,step_r,step_angle,r_min,r_max,p)

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% input

% BW:二值图像;

% step_r:检测的圆半径步长

% step_angle:角度步长,单位为弧度

% r_min:最小圆半径

% r_max:最大圆半径

% p:阈值,0,1之间的数 通过调此值可以得到图中圆的圆心和半径

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% output

% hough_space:参数空间,h(a,b,r)表示圆心在(a,b)半径为r的圆上的点数

% hough_circl:二值图像,检测到的圆

% para:检测到的圆的圆心、半径

circleParaXYR=[];

para=[];

[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);%非零坐标的个数

% Hough变换

% 将图像空间(x,y)对应到参数空间(a,b,r)

% a = x-r*cos(angle)

% b = y-r*sin(angle)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值