当前位置:网站首页>项目实战 五 拟合直线 获得中线
项目实战 五 拟合直线 获得中线
2022-07-07 02:03:00 【Σίσυφος1900】
一、简介
项目中常见的最常见的拟合一般多是拟合直线和拟合圆,但是我个人最初在自学halcon 的时候总是一看到类似直线的东西就直接拟合,一看到类似圆的东西就直接拟合圆,但是我们在做项目的时候要有很多的禁忌,要考虑到很多的东西,所以要让算法有更强的兼容性,下面我们来一起看一这个拟合直线如何拟合:
1、传入一张图片,和一个ROI
2、使用二维卡尺找出拟合直线的点(这一步很重要)
3、从第二步的点来拟合圆,但是我们会设点一个点到直线的最小距离,用这个距离来判断直线的拟合优越性,删除掉一些到跳点,防止一些个别点导致拟合直线不理想的问题
4、输出
从上面我们可以得到一条 或者多条直线,那如果是求出两条直线的中线,如何来求呢?
1 、首先传入两条中线
2、判断这两天直线的角度以及这两天直线是不是相交
3、如果相交,求直线上(线段的端点)在另外一条直线上的投影点,直接取中点,同理求另外一个端点的投影,求中点,连起来就是中线
4、如果有相交,那么这个就比较复杂点,首先我们要计算两个端点(直线出入的端点)到2 中计算得出的点到点的距离d1 d2
5、然后以2中的交点(假设r,c)r,c,d1 以及r,c,d2画圆,然后计算另外一条直线与这两个圆之间的交点
6、上图中的两个端点就是我们最想要的两个点
7、最后输出
二、拟合直线
核心代码:
* 使用二维测量来找点
create_metrology_model (MetrologyHandle)
*设置句柄模型的大小
set_metrology_model_image_size (MetrologyHandle, Width, Height)
add_metrology_object_generic (MetrologyHandle, 'line', [Row1,Col1,Row2,Col2], Len2[Len2Index], RectWidth[RectWidthIndex], Sigma[SigmaIndex], Threshold[ThresholdIndex], [], [], temp)
* 设置参数
set_metrology_object_param (MetrologyHandle, 'all', ['measure_transition','num_measures','measure_select'], [Transtion[TransitionIndex], Count[CountIndex], Select[SelectIndex]])
* set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', Select[SelectIndex])
*使用参数
apply_metrology_model (Image, MetrologyHandle)
* 得到结果
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Rows, Columns)
gen_cross_contour_xld (Cross1, Rows, Columns, 6, 0.78)
clear_metrology_model (MetrologyHandle)
*拟合直线
fit_line_contour_xld (Contour, 'drop', -1, 0, 5, 2, TempRowBegin, TempColBegin, TempRowEnd, TempColEnd, TempNr, TempNc, TempDist)
* 计算拟合的直线和点之间的距离
distance_pl (Rows, Columns, TempRowBegin, TempColBegin, TempRowEnd, TempColEnd, Distance)
tuple_max (Distance, Max)
* 在联系的删除点中是不是有足够的点来拟合
* 删除max/2的点
if(Max < MinDist[MinDistIndex])
break
endif
* 删除不符合点到直线距离的点
tuple_less_elem (Distance, Max/2, Less)
tuple_find (Less, 0, Indices)
tuple_remove (Rows, Indices, ValidRows)
tuple_remove (Columns, Indices, ValidCols)
三、获得中线
核心代码:
*求直线和圆的交叉点
gen_circle_contour_xld (ContCircle, Row, Column, Distance1, 0, 6.28318, 'positive', 1)
gen_circle_contour_xld (ContCircle2, Row, Column, Distance2, 0, 6.28318, 'positive', 1)
intersection_line_circle (line2[0], line2[1], line2[2], line2[3], Row, Column, Distance1, 0, 6.28318, 'positive', Row1, Column1)
intersection_line_circle (line2[0], line2[1], line2[2], line2[3], Row, Column, Distance2, 0, 6.28318, 'positive', Row2, Column2)
* 显示交点
边栏推荐
- Redis (II) - redis General Command
- go-microservice-simple(2) go-Probuffer
- Redis(二)—Redis通用命令
- HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
- MySQL卸载文档-Windows版
- Ant manor safety helmet 7.8 ant manor answer
- JWT 认证
- 开发者别错过!飞桨黑客马拉松第三期链桨赛道报名开启
- UIC (configuration UI Engineering) public file library adds 7 industry materials
- Haqi projection Black Horse posture, avec seulement six mois de forte pénétration du marché des projecteurs de 1000 yuans!
猜你喜欢
Navicat导入15G数据报错 【2013 - Lost connection to MySQL server during query】 【1153:Got a packet bigger】
JMeter's own functions are not enough? Why don't you develop one yourself
How to use wechat cloud hosting or cloud functions for cloud development of unapp development applet
rt-thread 中对 hardfault 的处理
Subghz, lorawan, Nb IOT, Internet of things
软件测试到了35岁,真的就干不动了吗?
Shared memory for interprocess communication
HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
生活中的开销,怎么记账合适
[FPGA] EEPROM based on I2C
随机推荐
Qtthread, one of many methods of QT multithreading
计算模型 FPS
Leite smart home longhaiqi: from professional dimming to full house intelligence, 20 years of focus on professional achievements
你不知道的互联网公司招聘黑话大全
MySQL卸载文档-Windows版
Markdown 并排显示图片
JVM command - jmap: export memory image file & memory usage
雷特智能家居龙海祁:从专业调光到全宅智能,20年专注成就专业
Go straight to the 2022ecdc fluorite cloud Developer Conference: work with thousands of industries to accelerate intelligent upgrading
tkinter窗口选择pcd文件并显示点云(open3d)
力扣62 不同路径(从矩阵左上到右下的所有路径数量) (动态规划)
Matlab / envi principal component analysis implementation and result analysis
字符串常量与字符串对象分配内存时的区别
HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
Overview of FlexRay communication protocol
港科大&MSRA新研究:关于图像到图像转换,Fine-tuning is all you need
Rk3399 platform development series explanation (WiFi) 5.53, hostapd (WiFi AP mode) configuration file description
Database notes 04
2022 Android interview essential knowledge points, a comprehensive summary
JVM 全面深入