分析一则halcon抓边拟合直线的小案例
例图:

完整算法:
read_image (Image, 'C:/Users/Administrator/Desktop/1.png')
threshold (Image, Regions, , ) skeleton(Regions,TriangleSkeleton) gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter') segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2) select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5) fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
*计算三个夹角
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle1)
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle2)
angle_ll (RowBegin[], ColBegin[], RowEnd[], ColEnd[], RowBegin[], ColBegin[], RowEnd[], ColEnd[], Angle3) Angle1:=abs(deg(Angle1))
Angle2:=abs(deg(Angle2))
Angle3:=abs(deg(Angle3)) dev_display (Image)
dev_display (SelectedContours)
disp_message (, '角度:' + Angle1 + '°、 ' + Angle2 + '°、 ' + Angle3 + '°', 'image', , , 'red', 'true')
结果:

步骤分析:
① 图像三角形主要由3根直线构成;
② 阈值化、skeleton提取骨架、将骨架(region)转为xld、将xld打散分割、筛选xld得到3条主xld、将这3条xld拟合成3条直线。
效果分析:
这种算法虽然步骤简单,但是其实鲁棒性并不好。主要风险在“筛选xld得到3条主xld”这一步,有时候,它没办法准确筛选到我们想要的xld,这样后面的准确拟合也就无从谈起。
用过VisionPro的都知道,VisionPro它有抓边的卡尺工具,它直接作用于图像,简单分析就知道鲁棒性好得多。可惜的是halcon并没有直接提供类似工具,不过网上有大神做了个halcon自己的卡尺工具——rake函数。
除非线条特征特别明显的图片,不然不建议使用本例的算法去抓边,类似于rake的抓边工具鲁棒性更好,抓边能力也更强。
当然,如果你足够有耐心,也可以根据本例以及halcon的测量(Measure)助手设计自己的抓边工具(函数)。
分析一则halcon抓边拟合直线的小案例的更多相关文章
- halcon之最小二乘拟合直线
如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用ho ...
- python抓取网页图片的小案例
1.分析 ,要抓取的页面的信息以及对应的源码信息 blog.sina.com.cn/s/blog 93dc666c0101b1bj.html 2.代码模块: 导入正则表达的模块 导入url相关的模块 ...
- python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片
分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片.这里分析ajax请求,获取cosplay美女图片. 登陆今日头条,点击搜索,输入cosplay 下面查看浏览 ...
- [MXNet逐梦之旅]练习一·使用MXNet拟合直线手动实现
[MXNet逐梦之旅]练习一·使用MXNet拟合直线手动实现 code #%% from matplotlib import pyplot as plt from mxnet import autog ...
- python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)
python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...
- python爬虫---实现项目(二) 分析Ajax请求抓取数据
这次我们来继续深入爬虫数据,有些网页通过请求的html代码不能直接拿到数据,我们所需的数据是通过ajax渲染到页面上去的,这次我们来看看如何分析ajax 我们这次所使用的网络库还是上一节的Reques ...
- python matplotlib拟合直线
import numpy as np import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['sans-serif'] plt. ...
- 小迪安全 Web安全 基础入门 - 第三天 - 抓包&封包&协议&APP&小程序&PC应用&WEB应用
一.抓包工具 1.Fiddler.Fiddler是一个用于HTTP调试的代理服务器应用程序,能捕获HTTP和HTTPS流量,并将其记录下来供用户查看.它通过使用自签名证书实现中间人攻击来进行日志记录. ...
- Halcon使用骨架法处理激光条并拟合直线
dev_close_window () * 设置颜色 dev_set_color ('green') * 读取图像 read_image (Image, 'images3/1') * 获得图像尺寸 g ...
随机推荐
- 20155318 2016-2017-2 《Java程序设计》第八学习总结
20155318 2016-2017-2 <Java程序设计>第八学习总结 教材学习内容总结 学习目标 了解NIO 会使用Channel.Buffer与NIO2 会使用日志API.国际化 ...
- YAML文件格式入门
YAML快速入门 https://www.jianshu.com/p/97222440cd08 https://yaml.org/spec/1.2/spec.pdf http://nodeca.git ...
- VMware 11 安装 Mac OS X10.10
一.下载好以下软件--->http://pan.baidu.com/s/1qWDkTbe 1,VMware 11 2,unlocker203(装好VMware11后需要安装补丁unlocker才 ...
- Oracle单表去重复(一)
去重有两层含义,一:是记录完全一样:二:是符合一定条件的认为是重复. 根据表的数量,去重可划分为:单表去重和多表关联去重. 对于去重,一般最容易想到的是用distinct,而distinct只能对 ...
- Spring线程池ThreadPoolTaskExecutor配置及详情
Spring线程池ThreadPoolTaskExecutor配置及详情 1. ThreadPoolTaskExecutor配置 <!-- spring thread pool executor ...
- lvds cable信号
http://forums.bit-tech.net/showthread.php?t=208616
- 【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
原文网址:http://www.cnblogs.com/csuftzzk/p/3435710.html 序言 使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度 ...
- 10件在PHP7中不要做的事情
10件在PHP7中不要做的事情 1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mys ...
- bzoj 4036 [HAOI2015]按位或——min-max容斥+FMT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4036 题解:https://www.cnblogs.com/Zinn/p/10260126. ...
- Angular 安装
1.angular安装 npm install -g angular 2. 显示angular安装路径 npm config ls 3. angular 双向绑定 <!DOCTYPE html ...