菜单
  

    圆的极坐标方程为: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. 基波磁通补偿的串联混合...

  2. MATLAB数字图像处理的空间滤波器设计

  3. MATLAB温室作物蒸腾作用建模与试验

  4. 数字图像处理的温室作物...

  5. 轧钢加热炉控制系统的设计MATLAB仿真

  6. PC构件生产线的堆垛机控制部分设计+PLC梯形图

  7. 110KV变电站综合自动化系统设计

  8. 巴金《激流三部曲》高觉新的悲剧命运

  9. C++最短路径算法研究和程序设计

  10. NFC协议物理层的软件实现+文献综述

  11. 浅析中国古代宗法制度

  12. 高警觉工作人群的元情绪...

  13. 现代简约美式风格在室内家装中的运用

  14. 江苏省某高中学生体质现状的调查研究

  15. g-C3N4光催化剂的制备和光催化性能研究

  16. 中国传统元素在游戏角色...

  17. 上市公司股权结构对经营绩效的影响研究

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回