【MATLAB】椭圆检测(Ellipse Detection)算法(含代码)

by 今天不飞了

圆的物体,在实际拍摄中由于种种原因可能会变成椭圆,用圆拟合就不够准确。这里分享一篇文献中椭圆检测的方法(代码使用方法)。
在这里插入图片描述

零、写在前面(2023年4月10日)

我真的……为什么评论和私信还有人问我“求出来的椭圆在哪里呀?”你们到底在看什么。2.3分明写着“输出参数说明——ellipses是目标椭圆”,不知道椭圆数学表达式的就百度”

还有问“你这个代码能计算椭圆圆心吗?”,全篇都在检测椭圆,你猜呢?不懂就问可以,但毫不思考就问,是不是有点……

一、文献与代码

  1. 下载
    Arc support Line Segments Revisited An Efficient High-quality Ellipse Detection[文献下载 ] [源码下载 ]
  2. 编译
    直接复制并修改(根据自己OpenCV和MATLAB路径版本等)
    这里假设你的文件都在D盘,OpenCV使用2.4.9版本,那么编译方式如下
% 编译C++源码供MATLAB调用
mex generateEllipseCandidates.cpp...			
    -ID:\opencv2\build\include...				% 请使用你的OpenCV路径
    -ID:\opencv2\build\include\opencv...		% 请使用你的OpenCV路径
    -ID:\opencv2\build\include\opencv2...		% 请使用你的OpenCV路径
    -LD:\opencv2\build\x64\vc11\lib...			% 请使用你的OpenCV路径
    -ID:\MATLAB\extern\include...				% 请使用你的MATLAB路径
    -LD:\MATLAB\extern\lib\win64\microsoft...	% 请使用你的MATLAB路径
    -lopencv_core249...							% 请使用你的OpenCV版本
    -lopencv_highgui249...						% 请使用你的OpenCV版本
    -lopencv_imgproc249...						% 请使用你的OpenCV版本
    -llibmwlapack.lib  
% 注意:替换的时候,不要把前面的 -I,-L,-l 删了

如果觉得麻烦,可以在文末链接直接下载。(已编译且内置动态库)

二、使用与实例

  1. 基本使用
    编译完之后就可以直接使用论文提供的测试代码LCS_ellipse.m,运行前记得修改文件路径(文件名)。
    主要函数有两个ellipseDetectionByArcSupportLSs.mdrawEllipses.m,也可以使用以下代码测试:
% 这是论文自带的图片(可替换成你自己的)
im = imread('.\pics\43.jpg'); 

% 论文检测椭圆的核心代码
[ellipses, ~, ~] = ellipseDetectionByArcSupportLSs(im, 120, 0.3, 0); % 输入输出后面会讲到

% 论文自带的显示结果的代码
drawEllipses(ellipses',im);
  1. 输入参数说明(除了第一个im,以外的三个)

Tac:椭圆完整度,测试代码如下
(为了更人性化进行了修改,可自定义颜色,如有需要文末有下载地址)

%% 第一个参数 Tac
im = imread('.\pics\test1.png');

Tacs = [90,180,190,270,300,350];
for k = 1:6
评论 235
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值