Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于源码中,咨询功能作用 #20

Closed
cheny00 opened this issue Aug 19, 2022 · 20 comments
Closed

关于源码中,咨询功能作用 #20

cheny00 opened this issue Aug 19, 2022 · 20 comments

Comments

@cheny00
Copy link

cheny00 commented Aug 19, 2022

博主,我又来请教了^v^


1 FilterWithRotatedRect,进行重叠区域筛选
1.2 计算交并比,为什么要对重叠区域的像素位置进行排序,才能计算该区域的轮廓面积?

image

2 LearnPattern,进行图像模式训练
2.2.2 注意到界面(Read_TCHAR)加载时有灰度处理,但LearnPattern各层金字塔内处理均值、标准差时采用了Scalar定义的4通道,那这里的4通道指的什么参数运算?代表图像什么信息?

2.3.1 该模式训练是对检测图像各层金字塔的灰度信息进行处理吗?还是对模板图像进行处理?m_matSrc、m_matDst参数如何理解。

2.3.3 仅对检测/模板图像进行金字塔与灰处理,那如何与模板/检测图像计算灰度信息,进行匹配处理?是根据模板确定能识别的最小角度步长,旋转检测图像后进行分块匹配遍历筛选?

4 match,关于亚像素实现
4.1 亚像素的初始定位参数是根据像素级定位结果确定?那亚像素处理是逐层(金字塔)处理(x,y,angle)参数,返还回像素级?还是在底层原图上根据像素级定位结果进行最后的亚像素处理?

5 相关函数功能作用
5.2 CCOEFF_Denominator相似度系数的分母计算,是哪有公式或说明吗?变换过程没看懂。另外,没有当前方案没有进行归一化吗?还是在哪个位置希望您能指出一下。

@DennisLiu1993
Copy link
Owner

DennisLiu1993 commented Aug 24, 2022

1.1 因為是來自不同旋轉角Source的比對結果
1.2 把多邊形的各端點連到中心,切成三角形計算面積,端點不排序無法切

2.1 等你查到再跟我說,有幾家庫是這樣用的
2.2.1 我是限制在單通道,cv::matchTemplate可以是多通道
2.2.2 meanStdDev ()可以輸入1~4通道影像,分別計算mean stdDev

2.3.1 對模板, m_matSrc=欲檢測圖像原尺寸, m_matDst=模板圖像原尺寸
2.3.2 參考這篇的公式
2.3.3 兩者都有進行金字塔/ 旋轉: 是的

3.1 是的,這段代碼可以達到這個效果
NCC_OCR
檢測圖像與模板在TestImages\M12\

3.2 為了把字元排序成由左到右上到下的順序

4.1 只有在原圖尺寸才會計算,其他層計算沒意義
4.2 iStopLayer是讓你可以改代碼使流程不跑完全部金字塔就結束(少一層大概快4倍),這是早期這個演算法速度太慢時湊合用的,現在已經用不到了...

5.1 這個也不用理,只是讓你把比對區域輸入成圖像
5.2 同2.3.2,有規一化
5.3 黑框是原圖(Inspection Image)旋轉後,藍框是最佳搜尋尺寸 (原始的搜尋範圍是以求取黑框的最小外接正矩形,藍框可以比這縮小一些)
image
5.4 是的,求極值都是重新遍歷,所以才有之前跟你說的這個函數可以優化
但對於模板尺寸非常小的case才有用

我說老哥你也問太多了,幫我宣傳下

@cheny00
Copy link
Author

cheny00 commented Aug 25, 2022

没问题,肯定帮大哥宣传介绍的
(PS:最近刚接触这领域,相信以后认识的人就会多了;有啥需要我能帮的一定帮大哥)


2.2.2 灰度图像采用meanStdDev ()函数,实际仅用了第一通道进行mean和stdDev计算吧

2.2.3 我看到《机器视觉算法与应用》中对模板匹配介绍ncc匹配,是将模板在检测图像上逐像素进行遍历匹配和计算相似度,从而筛选出最佳(x,y),您这里也是这个思路吗?

4.2 iStopLayer部分注释掉也不会影响整体运行效果吧

5.3 是对每次旋转后的检测图像,各自截取相应最小外接正方形吗?多余区域采用黑色填充吧。

5.4 shape匹配也是采用类似填充获取极值,实现多目标检测的吗?还是有其他思路完成多目标任务?

@DennisLiu1993
Copy link
Owner

2.2.2 是的,templMean[1]~templMean[3]都是0
2.2.3 是的,你看我貼的那兩篇論文就知道

4.2 沒錯
5.3
image
用黑色區域沒錯,但沒有取外接正方形,概念直接把紅框的LeftTop點旋轉一個角度之後,用長寬取出一個區域,不過實作以warpAffine達成

5.4 多目標跟填充無關,的確是這個思路

@cheny00
Copy link
Author

cheny00 commented Aug 25, 2022

感谢回复

5.4 shape的多目标是如何避免重复定位相同目标呢

@DennisLiu1993
Copy link
Owner

我記得meiqua沒有特別去做多標靶判別,因為shape稍有一點偏差分數就會掉很多,跟NCC不一樣

@southmilkyway
Copy link

博主你好,想请教你一个问题,我打算用你的这个算法封装一个dll,想通过C#来调用,我把 CMatchToolDlg::LearnPattern()和cmat.Match()两个函数进行了封装,但是测试后发现匹配不了,
屏幕截图 2022-09-14 203615
在这个位置就匹配不出来了,匹配分数为0,想请教一下你除了在这两个函数里边做事情之外,别的地方也有图像处理么?

@DennisLiu1993
Copy link
Owner

是包裝後就匹配不了還是包裝前
如果是包裝前傳個原圖來看看
如果是包裝後把dll設為起始專案就能進中斷點吧

@southmilkyway
Copy link

是包裝後就匹配不了還是包裝前 如果是包裝前傳個原圖來看看 如果是包裝後把dll設為起始專案就能進中斷點吧

用你的源码可以匹配的到,打包后就匹配不到了,我测试时用的dll源码跑的,直接可以打断点,问题应该就在我画红框这里,可能是我在哪里忽略了某个点,所以就想请教一下在这两个函数之外的地方有没有要注意的东西

@southmilkyway
Copy link

是包裝後就匹配不了還是包裝前 如果是包裝前傳個原圖來看看 如果是包裝後把dll設為起始專案就能進中斷點吧

原因找到了,比较无语,我没有把图片转换成单通道的图像

@PureHing
Copy link

@southmilkyway 你好,可以分享一下你打包的C# dll吗

@DennisLiu1993
Copy link
Owner

@southmilkyway 你好,可以分享一下你打包的C# dll吗

我這邊有做C++ regular dll,能夠給C#使用
有需要的話信箱詳談

@PureHing
Copy link

PureHing commented Nov 14, 2022

@DennisLiu1993 信箱是多少呢

@southmilkyway
Copy link

@southmilkyway 你好,可以分享一下你打包的C# dll吗

可以的,但是博主这里有标准的,可能会更适合你

@PureHing
Copy link

PureHing commented Nov 14, 2022

@southmilkyway 你好,可以分享一下你打包的C# dll吗

可以的,但是博主这里有标准的,可能会更适合你

@southmilkyway 可以邮件发我一下吗?非常感谢![email protected]
solved.

@DennisLiu1993
Copy link
Owner

@DennisLiu1993 信箱是多少呢

[email protected]
或wechat dennisliu1993

@ToNi981004
Copy link

@southmilkyway 你好,可以分享一下你打包的C# dll吗

我這邊有做C++ regular dll,能夠給C#使用 有需要的話信箱詳談

Hi DennisLiu1993, have a nice day!
Can you send me your DLL?
My email: [email protected]

@wangxiaoding0422
Copy link

@southmilkyway 你好,可以分享一下你打包的C# dll吗

可以的,但是博主这里有标准的,可能会更适合你

我想试试C#的DLL作对比。可以分享一下你的DLL么? 我的邮箱:[email protected] 感谢!

@cheny00 cheny00 closed this as completed Feb 10, 2023
@DennisLiu1993
Copy link
Owner

DennisLiu1993 commented Feb 10, 2023 via email

@cheny00
Copy link
Author

cheny00 commented Feb 10, 2023

谢谢博主的帮助
在插值方面,您是否尝试过其他插值拟合,进行对比二项式插值呢?
在原理或评测方面,对误差精度和耗时有什么见解呀。

@DennisLiu1993
Copy link
Owner

有個二次式曲線找頂點的 可以試試

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants