%------------------------------------------------------------------------
% 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
%------------------------------------------------------------------------
function W = Classify(ImageFile)
% 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.
[B,L] = 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),'w');
case 2
plot(centroid(1),centroid(2),'wX');
case 3
plot(centroid(1),centroid(2),'wS');
end
end
return
weixin_39840650
- 粉丝: 413
- 资源: 1万+
最新资源
- 毕业设计-基于选题管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于行人检测系统,pyqt + opencv全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于一个简化的物联网系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于学生管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于学生成绩管理分析系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于疫情管理系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于云笔记系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于医院预约挂号系统(期末项目)全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于主动学习推荐系统的实现全部资料+详细文档+高分项目+源码.zip
- 使用Python代码生成文本圣诞树图案
- 毕业设计-基于主机安全态势感知系统全部资料+详细文档+高分项目+源码.zip
- 毕业设计-基于智慧工地监控管理系统全部资料+详细文档+高分项目+源码.zip
- 基于对人脸识别技术开发现状的研究和分析,本文利用图像处理技术、课堂考勤系统的作用为督促学生参与到课堂教学中,让学生能够更好学习相关知识。传统的课堂教学采用课堂点
- Windows系统下Python及开发工具的详细安装指南
- HTML5实现好看的无人机监控介绍网站模板.zip
- HTML5实现好看的网上家具商城网站模板.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈