• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: Matlab
  • 标签: 形状识别  

资源简介

matlab 图像形状识别,圆形,矩形。

资源截图

代码片段和文件信息

%------------------------------------------------------------------------
% AL-AZHAR UNIVERSITY
% FACULTY OF ENGINEERING
% SYSTEMS & COMPUTERS ENGINEERING Department
%------------------------------------------------------------------------
% Author : Ahmed Samieh Abd El-Wahab
% Date   : 14 December 2006
%------------------------------------------------------------------------
% Shapes Classifier
% Step 1: Read image Read in
% Step 2: Convert image from rgb to gray 
% Step 3: Threshold the image
% Step 4: Invert the Binary Image
% Step 5: Find the boundaries Concentrate
% Step 6: Determine Shapes properties
% Step 7: Classify Shapes according to properties
% Square      = 3
% Rectangular = 2
% Circle      = 1
% UNKNOWN     = 0
%------------------------------------------------------------------------
% Step 1: Read image Read in
RGB = imread(‘test.bmp‘);
figure
imshow(RGB)
title(‘Original Image‘);

% Step 2: Convert image from rgb to gray 
GRAY = rgb2gray(RGB);
figure
imshow(GRAY)
title(‘Gray Image‘);

% Step 3: Threshold the image Convert the image to black and white in order
% to prepare for boundary tracing using bwboundaries. 
threshold = graythresh(GRAY);
BW = im2bw(GRAY threshold);
figure
imshow(BW)
title(‘Binary Image‘);

% Step 4: Invert the Binary Image
BW = ~ BW;
figure
imshow(BW)
title(‘Inverted Binary Image‘);

% Step 5: Find the boundaries Concentrate only on the exterior boundaries.
% Option ‘noholes‘ will accelerate the processing by preventing
% bwboundaries from searching for inner contours. 
[BL] = bwboundaries(BW ‘noholes‘);

% Step 6: Determine objects properties
STATS = regionprops(L ‘all‘); % we need ‘BoundingBox‘ and ‘Extent‘

% Step 7: Classify Shapes according to properties
% 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;
  switch W(i)
      case 1
          plot(centroid(1)centroid(2)‘wO‘);
      case 2
          plot(centroid(1)centroid(2)‘wX‘);
      case 3
          plot(centroid(1)centroid(2)‘wS‘);
  end
end
return

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

     文件       2415  2012-06-01 11:14  Shape Recognation\Classify.m

     文件     408086  2007-07-04 01:53  Shape Recognation\test.bmp

     目录          0  2012-05-13 10:38  Shape Recognation

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

               410501                    3


评论

共有 条评论

相关资源