菜单
  

    圆的极坐标方程为:x = a + r cosθ   y = b + r sinθ
    则圆的参数为:x = a + r cosθ      y = b + r sinθ
    其中θ为梯度角,对于每一个在(x,y)处的,并且具有边缘方向角θ的边缘点,如果半径已知,即可设置一个增量累加器,根据上述公式求出对应的 a、b 值,从而进行累加,确定圆心的位置。
    如上传统的 Hough 有如下的特点:
    (1) 参数由直线的两个参数即截距和斜率,上升到三个即圆心坐标和半径;每个点映射成参数空间的一个曲面是一对多映射,因而计算量急剧增大;
     
    图 5.2.4.1 Hough 变换检测圆心      图 5.2.4.2 针对性 Hough 检测圆周
    (2) 需占用大量内存空间,耗时久、实时性差;


    5.3演示实例
    5.3.1识别圆的实例
    RGB = imread('pillsetc.png');%读取图像
    figure; imshow(RGB);%显示
    I = rgb2gray(RGB);%转化为灰度图像
    threshold = graythresh(I);%阈值
    bw = im2bw(I,threshold);%转化为二值图像
    figure; imshow(bw)%显示二值图像
    bw = bwareaopen(bw,30);%去除小目标
    se = strel('disk',2);%圆形结构元素
    bw = imclose(bw,se);%关操作
    bw = imfill(bw,'holes');%填充孔洞
    figure; imshow(bw)%显示填充孔洞后的图像
    [B,L] = bwboundaries(bw,'noholes');%图像边界
    figure; imshow(label2rgb(L, @jet, [.5 .5 .5]))%不同颜色显示
    hold on
    for k = 1:length(B)
     boundary = B{k};
     plot(boundary(:,2),boundary(:,1), 'w', 'LineWidth', 2)%显示白色边界
    end
    stats = regionprops(L,'Area','Centroid');%求取面积、质心等
    threshold = 0.94;%阈值
    for k = 1:length(B)
      boundary = B{k};
      delta_sq = diff(boundary).^2;
      perimeter = sum(sqrt(sum(delta_sq,2)));%求取周长
      area = stats(k).Area;%面积
      metric = 4*pi*area/perimeter^2;%圆形的量度
      metric_string = sprintf('%2.2f',metric);
      if metric > threshold
        centroid = stats(k).Centroid;
        plot(centroid(1),centroid(2),'ko');%标记圆心
      end
      text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color',...
          'y', 'FontSize',14,'FontWeight','bold');%标注圆形度量
    end
    title(['Metrics closer to 1 indicate that ',...
           'the object is approximately round']);
    输出:
    5.3.2检测半径实例
    RGB = imread('tape.png');%读取图像
    figure; imshow(RGB);%显示
    text(15,15,'Estimate radius of the roll of tape',...
         'FontWeight','bold','Color','y');
    I = rgb2gray(RGB);%转化为灰度图像
    threshold = graythresh(I);%阈值
    BW = im2bw(I,threshold);%转化为二值图像
    figure; imshow(BW)%显示二值图像
    dim = size(BW);%图像大小
    col = round(dim(2)/2)-90;%边界起始点的列
    row = find(BW(:,col), 1);%边界起始点的行
    connectivity = 8;%连通性为8
    num_points   = 180;%边界点的个数
    contour = bwtraceboundary(BW, [row, col], 'N',...
        connectivity, num_points);%求取圆周
    figure;  imshow(RGB);%显示原图像
    hold on;
    plot(contour(:,2),contour(:,1),'g','LineWidth',2);%显示绿色边界
    x = contour(:,2); y = contour(:,1);
    abc = [x y ones(length(x),1)] \ -(x.^2+y.^2);%计算参数
    a = abc(1); b = abc(2); c = abc(3);
    xc = -a/2;%圆心的x轴坐标
    yc = -b/2;%圆心的y轴坐标
  1. 上一篇:MC33035小功率无刷直流电动机调速系统设计+电路原理图
  2. 下一篇:无刷直流电机控制研究+Matlab仿真模型
  1. MATLAB小电流接地故障选相方法研究

  2. Matlab基于前馈控制的加热炉温度控制系统设计

  3. Matlab微流控芯片热键合工艺优化研究

  4. MATLAB永磁同步电机矢量控制模型与算法设计

  5. MATLAB排爆机器人移动平台控制系统的设计

  6. 基于LabVIEW和MATLAB混合编程...

  7. LabVIEW的语音特征提取+MATLAB代码

  8. 中考体育项目与体育教学合理结合的研究

  9. 电站锅炉暖风器设计任务书

  10. java+mysql车辆管理系统的设计+源代码

  11. 酸性水汽提装置总汽提塔设计+CAD图纸

  12. 大众媒体对公共政策制定的影响

  13. 河岸冲刷和泥沙淤积的监测国内外研究现状

  14. 当代大学生慈善意识研究+文献综述

  15. 杂拟谷盗体内共生菌沃尔...

  16. 乳业同业并购式全产业链...

  17. 十二层带中心支撑钢结构...

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回