资源简介

改进后的霍夫变换对圆的检测速度更快,定位更加准确。

资源截图

代码片段和文件信息

clc
clear
close all
[filenamefilepath] = uigetfile({‘*.jpg;*.*‘}‘选择图片‘‘C:\Users\thinkpad\Desktop\张诗\‘);
I = imread([filepathfilename]);
[mnl] = size(I);
if l == 3
    I = rgb2gray(I);
end
BW = edge(I‘sobel‘);  
  
step_r = 1;  
step_angle = 0.1;  
minr = 8; 
maxr = 30;  
thresh = 0.51;  
  
[hough_spacehough_circlepara] = hough_circle(BWstep_rstep_angleminrmaxrthresh);  
figure(1)imshow(I)title(‘原图‘)  
figure(2)imshow(BW)title(‘边缘‘)  
figure(3)imshow(hough_circle)title(‘检测结果‘)  
  
circleParaXYR=para;  
  
%输出  
fprintf(1‘\n---------------圆统计----------------\n‘);  
[rc]=size(circleParaXYR);%r=size(circleParaXYR1);  
fprintf(1‘  检测出%d个圆\n‘r);%圆的个数  
fprintf(1‘  圆心     半径\n‘);%圆的个数  
for n=1:r  
fprintf(1‘%d (%d,%d)  %d\n‘nfloor(circleParaXYR(n1))floor(circleParaXYR(n2))floor(circleParaXYR(n3)));  
end  
  
%标出圆  
figure(4)imshow(I)title(‘检测出图中的圆‘)  
hold on;  
 plot(circleParaXYR(:2) circleParaXYR(:1) ‘r+‘);  
 for k = 1 : size(circleParaXYR 1)  
  t=0:0.01*pi:2*pi;  
  x=cos(t).*circleParaXYR(k3)+circleParaXYR(k2);y=sin(t).*circleParaXYR(k3)+circleParaXYR(k1);  
  plot(xy‘r-‘);  
 end  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      49941  2018-05-14 09:20  张诗\1.jpg

     文件       1242  2018-05-14 09:51  张诗\circledetection.m

     文件       3842  2018-05-14 09:47  张诗\hough_circle.m

     目录          0  2018-05-14 09:47  张诗

----------- ---------  ---------- -----  ----

                55025                    4


评论

共有 条评论