meiqua / shape_based_matching

try to implement halcon shape based matching, refer to machine vision algorithms and applications, page 317 3.11.5, written by halcon engineers
BSD 2-Clause "Simplified" License
1.25k stars 484 forks source link

请问算子的匹配精度够不够? #149

Open libaineu2004 opened 3 years ago

libaineu2004 commented 3 years ago

halcon论坛有关讨论: http://www.ihalcon.com/read-16881-1.html 有热心网友的回复: opencv自带的匹配一般满足不了工业需求,对于精度要求不高的场合,shape_based_matching就够用了,还带缩放和旋转噢。 用相机拿实物测试一下就知道了,相机和实物不动,有时候测试出来的角度不一样,有些偏1°上下波动,就是同一条件多次触发测试。当然这和检测的图像也有一些关系,有些效果好的图像是比较稳定的。

meiqua commented 3 years ago

不知道用了ICP没,不用的话波动2个像素左右正常

libaineu2004 commented 3 years ago

不知道用了ICP没,不用的话波动2个像素左右正常

能否简单介绍一下ICP的原理?谢谢

meiqua commented 3 years ago

网上很多介绍

zhirui-gao commented 3 years ago

不知道用了ICP没,不用的话波动2个像素左右正常

请问一下,相机和物体不动,有时候选择的模板有一定差异,icp之后的结果也有1-2个像素的差异,有什么办法可以进一步提高匹配的稳定性吗?

meiqua commented 3 years ago

@zhirui-gao 模板有差异的话后面确实修正不回来,因为模板是基准。

zhirui-gao commented 3 years ago

@zhirui-gao 模板有差异的话后面确实修正不回来,因为模板是基准。

好的,谢谢

zhirui-gao commented 3 years ago

请问一下,subpixel分支主要修改的哪些地方,亚像素是指的icp的亚像素还是linemod的亚像素?

meiqua commented 3 years ago

@zhirui-gao 主要修改了ICP

libaineu2004 commented 3 years ago

master分支支持icp吗?

DennisLiu1993 commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

libaineu2004 commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

源码的算子性能如何?500万以上像素的图片,运算速度快不快?有没有采用simd指令集来实现CPU加速?

zhirui-gao commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

谢谢,我之后会尝试一下

DennisLiu1993 commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

源码的算子性能如何?500万以上像素的图片,运算速度快不快?有没有采用simd指令集来实现CPU加速?

怎樣算快? 這樣快不快? Inspection Image : 4024 X 3036

Template Image: 762 X 521 Library Index Score Angle PosX PosY Execution Time
My Tool 0 1 0.046 1725.857 1045.433 112ms
My Tool 1 0.998 -119.979 2662.869 1537.446
My Tool 2 0.991 120.150 1768.936 2098.494
Cognex 0 1 0.030 1725.960 1045.470 125ms
Cognex 1 0.989 -119.960 2663.750 1538.040
Cognex 2 0.983 120.090 1769.250 2099.410
Aisys 0 1 0 1726.000 1045.500 202ms
Aisys 1 0.990 -119.935 2663.630 1539.060
Aisys 2 0.979 120.000 1769.63 2099.780
libaineu2004 commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

源码的算子性能如何?500万以上像素的图片,运算速度快不快?有没有采用simd指令集来实现CPU加速?

怎樣算快? 這樣快不快? Inspection Image : 4024 X 3036

Template Image: 762 X 521

Library Index Score Angle PosX PosY Execution Time My Tool 0 1 0.046 1725.857 1045.433 112ms My Tool 1 0.998 -119.979 2662.869 1537.446
My Tool 2 0.991 120.150 1768.936 2098.494
Cognex 0 1 0.030 1725.960 1045.470 125ms Cognex 1 0.989 -119.960 2663.750 1538.040
Cognex 2 0.983 120.090 1769.250 2099.410
Aisys 0 1 0 1726.000 1045.500 202ms Aisys 1 0.990 -119.935 2663.630 1539.060
Aisys 2 0.979 120.000 1769.63 2099.780

1、能否和halcon软件做一下对比?同样的图片,halcon能做到多少ms? 2、看了你的源码,使用的是原生的opencv算子,能否自主使用simd指令集优化再提速? 3、你的git项目实现了NCC匹配(ncc match)。下一步有无计划实现形状匹配算子(shape based match)?

DennisLiu1993 commented 2 years ago

@zhirui-gao @libaineu2004 可以參考下我寫的NCC-Based的模板匹配,實際測試相機和物體不動基本不會有誤差 https://github.com/DennisLiu1993/Fastest_Image_Pattern_Matching

源码的算子性能如何?500万以上像素的图片,运算速度快不快?有没有采用simd指令集来实现CPU加速?

怎樣算快? 這樣快不快? Inspection Image : 4024 X 3036 Template Image: 762 X 521 Library Index Score Angle PosX PosY Execution Time My Tool 0 1 0.046 1725.857 1045.433 112ms My Tool 1 0.998 -119.979 2662.869 1537.446 My Tool 2 0.991 120.150 1768.936 2098.494 Cognex 0 1 0.030 1725.960 1045.470 125ms Cognex 1 0.989 -119.960 2663.750 1538.040 Cognex 2 0.983 120.090 1769.250 2099.410 Aisys 0 1 0 1726.000 1045.500 202ms Aisys 1 0.990 -119.935 2663.630 1539.060 Aisys 2 0.979 120.000 1769.63 2099.780

1、能否和halcon软件做一下对比?同样的图片,halcon能做到多少ms? 2、看了你的源码,使用的是原生的opencv算子,能否自主使用simd指令集优化再提速? 3、你的git项目实现了NCC匹配(ncc match)。下一步有无计划实现形状匹配算子(shape based match)?

  1. 手邊沒有halcon的Licence,可能請有Licence的網友補充。Cognex也是行業龍頭,他們的數據已經放到比較表中
  2. 就我所知,NCC算法內容只有矩陣捲積(NCC公式的分子)適合用SIMD,這部分opencv內部是由Intel kernel實現了,我相信這部份很難超越
  3. 沒有計畫,@meiqua 已經完成大部分內容
  4. 這個專案可能改善的部分: 1.金字塔搜尋策略,若你有想到請提供給我 2.meiqua提到的fusion,金字塔NCC匹配中,是先將影像旋轉再進行運算,也就是在同一個level可能對同一張圖旋轉多次,也許能透過OpenCV4.X的GAPI加速
libaineu2004 commented 2 years ago

3. 計畫,@meiqua 已經完成大部分內容

1.halcon的官方license可以在,https://www.51halcon.com/thread-387-1-1.html 这个网站提供下载,每个月更新一次license。 2.关于优化提速的建议,国内有高手写了一系列博客,你抽空看看有无帮助。 https://www.cnblogs.com/Imageshop/p/14559685.html https://www.cnblogs.com/Imageshop/p/14615375.html https://www.cnblogs.com/Imageshop/p/14821562.html https://www.cnblogs.com/Imageshop/p/16035727.html https://www.cnblogs.com/Imageshop/p/16277326.html https://www.cnblogs.com/Imageshop/p/16288364.html

DennisLiu1993 commented 2 years ago

第一篇提到的問題基本上我的repo都解決了 其他篇關於形狀的,實在是個大工程,有時間再研究吧

Halcon有機會我會試試

libaineu2004 commented 2 years ago

1、你写的NCC匹配,建议有必要拿halcon对比测试一下。国内工业界广泛应用halcon。这样测试的结果比较有说服力。 建议多找些图片测试。至少500万像素的图片。主要是速度,精度,稳定性三个指标。 2、你写的NCC匹配,建议新增模板文件保存和读取这个功能。 3、形状匹配的确是大工程。如果你有空闲,建议把meiqua的项目,https://github.com/meiqua/shape_based_matching 使用VC++/MFC实现一下,带人机交互的界面,方便大家使用和测试。