matlab多边形检测_Matlab图像处理学习笔记(四):多边形检测
本文用matlab实现了基本多边形的检测、提取。
本文涉及到的知识点如下:
1、Canny边缘检测。bw = edge(gray,'canny',[0 , 50/256]);
2、细化操作。im=bwmorph(image,'thin',Inf);
3、边界追踪。edgelist=bwboundaries(im);
4、边界的多边形近似。linefit_Prasad_RDP_opt(edgelist);
本文算法思路借鉴了Nash的博客,地址:http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/点击打开链接
边界的多边形近似算法为:Douglas-Peucker algorithm,算法的matlab实现我引用了Dilip K. Prasad分享的文件。本文所有操作的理论基础均可在冈萨雷斯的《数字图像处理》中找到答案。
Douglas-Peucker algorithm地址:https://docs.google.com/file/d/0B10RxHxW3I92dG9SU0pNMV84alk/edit?pli=1点击打开链接
算法实现过程可分为以下几步。
1、提取边缘。
2、进行形态学处理,分割图像。
3、进行细化操作,减小计算量。
4、用多边形近似边界。
5、判断该顶点是否有效。(根据相邻顶点之间的距离)
转载请注明出处:http://blog.csdn.net/u010278305
下面给出源代码:
%function:
% 基于最小距离分类器的模板匹配
% 寻找图片中与已知模板的匹配区域
% 程序中调用了Dilip K. Prasad对Ramer–Douglas–Peucker algorithm的matlab实现
%referrence:
% 思路借鉴:http://opencv-code.com/tutorials/detecting-simple-shapes-in-an-image/
% Ramer–Douglas–Peucker algorithm:http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
%date:2015-1-10
%author:chenyanan
%转载请注明出处:http://blog.csdn.net/u010278305
%清空变量,读取图像
clear;close all
src = imread('basic_shapes.png');
figure('name','原始图像'),
imshow(src),title('src'),
%Convert to grayscale
gray=rgb2gray(src); gray = im2double(gray);
%Convert to binary image using Canny
bw = edge(gray,'canny',[0 , 50/256]);
%dilate
dilateElement=strel('square', 5);
bw=imdilate(bw, dilateElement);
%提取每个连通区域
stats = regionprops(bw, 'Image');
statssize= numel(stats);
plotsize=ceil(sqrt(statssize));
figure('name','分离结果'),
num=zeros(statssize,1);
%算法核心
for i=1:statssize
image=stats(i).Image;
%进行细化操作
im=bwmorph(image,'thin',Inf);
% getting the edge data.
edgelist=bwboundaries(im);edgelist=edgelist.';
% calling linefit_Prasad_RDP_opt
[edgelist,seglist,precision_list,reliability_list,precision_edge,reliability_edge, time_edge] = linefit_Prasad_RDP_opt(edgelist);
boundnum=length(seglist{1}(:,:));
bound=0;
sizepic=sum(size(im));
%判断每个顶点之间的间距是否符合要求
for j=1:boundnum-1
cornerdiff=seglist{1}(j,:)-seglist{1}(j+1,:);
cornerdiff=sqrt(sum(cornerdiff.^2));
if(cornerdiff>0.09*sizepic)
bound=bound+1;
end
end
num(i)=bound;
%进行绘图并标识
subplot(plotsize,plotsize,i);imshow(image),
if bound<7
title(bound);
else
title('圆');
end
end
运行效果如下:
源图像已上传:
matlab多边形检测_Matlab图像处理学习笔记(四):多边形检测相关推荐
- matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...
本博客主要记录我学习运用matlab进行一些基本的图像处理的一些笔记,如果有不当的地方,欢迎批评指正,一起学习,一起进步. 本篇是第一篇,只涉及到一些基本的操作,涉及到的知识点如下: 1.二值化 2. ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记四:数据类型与文件读写(附PPT链接)
变量类型与文件读写 前言 一.变量类型 1.numeric(数值类型) 2.char(字符类型) 3.string(字符串类型) 4.structure(结构体) 5.cell(元胞数组) 5.高维数 ...
- matlab bwmorph spur,matlab图像处理学习笔记-数学形态与二值图像操作
matlab图像处理学习笔记-数学形态与二值图像操作 数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单. 9.1 数学形态学图像处理 基本思想:利用一个称作结构元素(structurin ...
- 数字图像处理学习笔记(四)——数字图像的内插、度量、表示与质量
数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...
- 数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF
数字图像处理学习笔记(三):ORB算法(尺度不变特征变换)Oriented FAST and Rotated BRIEF 一.概述 参考:特征点匹配+特征检测方法汇总 ORB的全称是Oriented ...
- 数字图像处理学习笔记(一):特征检测和匹配概述
数字图像处理学习笔记(一):特征检测和匹配概述 参考博客: 特征点的匹配 SIFT特征详解 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 1.特征点概述 如何高效且准确的匹配出两个不同 ...
- 数字图像处理学习笔记(六)——数字图像处理中用到的数学操作
数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...
- 数字图像处理学习笔记 六 彩色图像处理
目录 (一)彩色模型介绍 1.1 RGB模型 1.2 CMY.CMYK模型 1.3 HSI彩色模型 1.4 HSV模型 1.5 YCbCr 彩色空间 (二)伪彩色图像处理 (三)全彩色图像处理及彩色变 ...
- 图像处理学习笔记(二)
图像处理学习笔记(二) 4 OpenCV图像处理: 4.2 形态学操作: 4.2.1 连通性: 4.2.1 腐蚀和膨胀: 4.2.2 开闭运算: 4.2.3 礼帽和黑帽: 4.2.4 形态学操作总结: ...
最新文章
- 机器学习验证集为什么不再有新意?
- 【译】MVVM Tutorial with ReactiveCocoa: Part 1/2
- 【运营】各大电商七夕活动对比
- mysql索引图文操作_图文并茂,说说MySQL索引
- 传统公司部署OpenStack(t版)简易介绍(七)——cinder模块部署
- EE Servlet 3:使用会话和过滤器开发用户登录
- Linux文件属性之r、w、x
- 少年开始学习c#编程,过路的大神请担待!
- DWA泊车算法的实现
- sql azure 语法_如何:Azure中SQL Server文件快照备份
- smarty capture使用
- android xml 设置半透明
- oracle查找隐藏字符串,oracle chr(0) 隐藏字符串
- 计算机c盘如何扩容,C盘空间不足怎么办?4种方法获得更多空间!
- 使用Kubeadm快速部署K8S集群
- 鸿蒙修复了蓝牙麦克风问题吗,手机变传声器、麦克风?华为P40的隐藏功能你知道吗?...
- (附源码)php单招志愿采集系统 毕业设计 091409
- JSON字符串的使用
- SRM 475 DIV1 900
- 亵渎小说介绍_从PHP过渡到:亵渎神灵,虚张声势还是常识?