• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: matlab  

资源简介

使用matlab识别出图像中的圆形,计算并标注出原形坐标和圆的位置

资源截图

代码片段和文件信息

%---------------------------------------------%
%       %
%          工作室提供代做matlab仿真       %
%       %
%  详情请访问:http://cn.mikecrm.com/DeOOXFc  %
%       %
%---------------------------------------------%
%识别图像中的圆,并画出来。
function[xy] =step2(ImageFile)
% Step 1: 读入彩色图像
RGB = imread(‘08.jpg‘);
figure
imshow(RGB)
title(‘Original Image‘);

% Step 2: 转化为灰度图像 
GRAY = rgb2gray(RGB);
figure
imshow(GRAY)
title(‘Gray Image‘);

% Step 3: 图像二值化,以便为边界跟踪做准备
threshold = graythresh(GRAY);
BW = im2bw(GRAY threshold);
figure
imshow(BW)
title(‘Binary Image‘);

% Step 4: 二值图像反色
BW = ~ BW;
figure
imshow(BW)
title(‘Inverted Binary Image‘);

% Step 5: 寻找图像的外边界,参数值选用noholes可避免搜索内部轮廓以加速处理过程
[BL] = bwboundaries(BW ‘noholes‘);

% Step 6: 决定对象属性
STATS = regionprops(L ‘all‘); % we need ‘BoundingBox‘ and ‘Extent‘

% Step 7: 判断形状
% Square = 3 = (1 + 2) = (X=Y + Extent = 1)
% Rectangular = 2 = (0 + 2) = (only Extent = 1)
% Circle = 1 = (1 + 0) = (X=Y  Extent < 1)
% UNKNOWN = 0

figure
imshow(RGB)
title(‘Results‘);
hold on
for i = 1 : length(STATS)
  W(i) = uint8(abs(STATS(i).BoundingBox(3)-STATS(i).BoundingBox(4)) < 0.1);
  W(i) = W(i) + 2 * uint8((STATS(i).Extent - 1) == 0 );
  centroid = STATS(i).Centroid;
  perimeter=STATS(i).Perimeter;
  if W(i)==1
      x = centroid(1) y = centroid(2); %圆心
      theta=0:pi/100:2*pi; %角度[02*pi] 
      R=perimeter/(2*pi);%半径
      x0=R*cos(theta)+x; 
      y0=R*sin(theta)+y; 
      plot(x0y0‘r-‘) 
  end
end
return 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-08-19 14:14  使用matlab识别出图像中的圆形,计算并标注出原形坐标和圆的位置\
     文件        1645  2019-08-19 14:54  使用matlab识别出图像中的圆形,计算并标注出原形坐标和圆的位置\step2.m

评论

共有 条评论