日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器视觉标定(calibration)关键尝试(标定的重要意义度量衡)(A)

發布時間:2023/12/31 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器视觉标定(calibration)关键尝试(标定的重要意义度量衡)(A) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

learning opencv開篇便談視覺病態畸變的問題,我們人類世界的進步和度量衡有莫大的關系,而工業自動化以及人工智能(AI)的度量衡又是什么呢?那就是標定,其意義是非凡的,也可以說是偉大的,人工智能對度量衡要求低的很,而識別是重頭戲,但是沒有度量衡的工業自動化,那是不可想象的,這就是標定,沒有標定度量,一切都是扯淡(蛋?),更就談不上準確度了。可以這樣毫不遜色的說,標定是工業自動化技術應用的基礎。你想一想,在年輕的AI面前,自動化已經走了很久了。但是AI給自動化識別也帶來了強勁的動力,自動化的識別逐漸在向AI識別演變。

? ? ? ? 舉一個和標定相關的例子,有很多人用過激光打字(標)在銘牌上,一般人都不會感到標定的存在,原因是,這樣的工作對精度要求不高,我搞過一段時間自動化控制激光應用,正是這樣的經歷更加確認了我對標定的熱情,研究是這樣的,在偏離激光鏡頭中心一定距離的地方,有一個九宮格,里邊有九個圓,你讓激光去填充這九個圓,你會發現,越遠偏差越大,每列都不一樣,當你給每列嘗試補償一個固定偏差,漸漸這個值穩定后,激光填充的圓也就飽滿了,想說明什么呢?當你把整個鏡頭(場鏡頭)下整個能打標填充的區域的固定偏差都做出來,那么你想要的激光打標準確度全都有了,這是我最初發現標定最笨的方法,但是他解決了激光鏡頭給精度帶來的偏差,我也發現了標定原來是這么一回事。搞激光的,通常使用矯正鏡頭(標定)的方法是,平面上放上一張白紙,讓激光去打一個矩形,剛開始肯定是桶狀的,很像電視機的桶狀失真,然后你去調整激光的參數,直至打標一個ok的矩形,那么在矩形區域內,你打標,至少是線性的。(下圖為九宮格測試激光畸變)

? ? ? ? 用習慣了機器視覺的標定,你會很驚詫激光的標定,世間變化真神奇,變個樣,就不認識了,這能叫學會了嗎?當你要求更高精度的標定時,你就會用機器視覺的相機標定去要求激光,標定到底是什么?實質就是校正失真的鏡頭,相機的,激光的,那么有沒有比剛才標定激光好一些的方法,有,這就是泰勒級數(多項式逼近)上場的時候了。

? ? ? 因為鏡頭基本都是中心對稱的,參考learning opencv的標定,泰勒級數f(r)=a0+a1*r+a2*r*r+...,r以鏡頭中心為圓的半徑,f(0)=0,所以a0=0;因為f(-r)=f(r),所以f(r)實質等于a2*r^2+a4*r^4+...,也就是說,泰勒級數的偶數項有意義,,?以上泰勒級數描述的鏡頭畸變被定義為徑向畸變(可不可以這樣理解?過圓心(鏡頭中心)的直徑上的畸變),我們的標定也只談徑向畸變,起拋磚引玉的作用。所以learning opencv給出這樣的計算公式:xc=x*(1+k1*r^2+k2*r^2*r^2+...),k1和k2為徑向畸變參數。而我令z=(1+k1*r^2+k2*r^2*r^2+...),在xc和x已知情況下z=xc/x(z顯然是大于1的,故桶形畸變中xc是亞像素角點,即畸變點,x為標準點,參考點),程序中我只求z,不求k1,k2.

以下是C#代碼,我們這里直接使用hariss亞像素角點提供的結果,這個已講過,此處不再重復,另外這里使用黑白棋盤格標定片。(棋盤格見下圖)

? ? ? ? ? ? int cx = 1024 / 2; int cy = 768 / 2;//此處舉例為1024*768相機,即80萬像素。
? ? ? ? ? ? double A = 0; double B = 0; double C = 0; double D = 0;
? ? ? ? ? ? List<Point> correct=new List<Point>();
? ? ? ? ? ? correct.Add(new Point(15,11));//以下只示范了左上角16個亞像素角點來求徑向畸變參數
? ? ? ? ? ? ?correct.Add(new Point(75,11));//
? ? ? ? ? ? ?correct.Add(new Point(135,11));//
? ? ? ? ? ? ?correct.Add(new Point(195,11));//
? ? ? ? ? ? ?correct.Add(new Point(15,71));//? ? ? ? ?15? 75? 135? 195
? ? ? ? ? ? ?correct.Add(new Point(75,71));//? ? 11? 一? 二? ?三? ? ?四
? ? ? ? ? ? ?correct.Add(new Point(135,71));//? 71? 五? ?六? 七? ? ?八
? ? ? ? ? ? ?correct.Add(new Point(195,71));//130? 九? ?十? ?11? ?12
? ? ? ? ? ? ?correct.Add(new Point(15,130));//189? 十3? 14? 15? ?16
? ? ? ? ? ? ?correct.Add(new Point(75,130));
? ? ? ? ? ? ?correct.Add(new Point(135,130));
? ? ? ? ? ? ?correct.Add(new Point(195,130));
? ? ? ? ? ? ?correct.Add(new Point(15,189));
? ? ? ? ? ? ?correct.Add(new Point(75,189));
? ? ? ? ? ? ?correct.Add(new Point(135,189));
? ? ? ? ? ? ?correct.Add(new Point(195,189));
? ? ? ? ? ? ?for (int m = 0; m < jibianyong1.Count; m++)// jibianyong1.Count=16
? ? ? ? ? ? ?{//correct為x//jibianyong1為亞像素角點為xc
? ? ? ? ? ? ? ? ?A += (jibianyong1[m].X - cx) * (correct[m].X - cx);
? ? ? ? ? ? ? ? ?B += (correct[m].X - cx) * (correct[m].X - cx);
? ? ? ? ? ? ? ? ?C += (jibianyong1[m].Y - cy) * (correct[m].Y - cy);
? ? ? ? ? ? ? ? ?D += (correct[m].Y - cy) * (correct[m].Y - cy);
? ? ? ? ? ? ?}
? ? ? ? ? ? double 徑向參數 = A / B;//xc*x/(x*x)如此處理,不會出現負號
? ? ? ? ? ? double 徑向參數1 = C/ D;//這里使用了兩次求平均值的方法,改進版本用最小二乘法
? ? ? ? ? ? double pingjun = (徑向參數?+徑向參數1) / 2;
? ? ? ? ? ? byte[] buffer24 = new byte[1024*768*3];
? ? ? ? ? ? for (int j = 0; j < 768; j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? for (int i = 0; i < 1024; i = i + 1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? int xcorrect = 0, ycorrect = 0;
? ? ? ? ? ? ? ? ? ? xcorrect = cx + (int)((i - cx) / pingjun);
? ? ? ? ? ? ? ? ? ? ycorrect = cy + (int)((j - cy) / pingjun);
? ? ? ? ? ? ? ? ? ? //2,再賦值
? ? ? ? ? ? ? ? ? ? buffer24[ycorrect * 1024 * 3 + xcorrect * 3] = rgbValues[j * 1024 * 3 + i * 3];
? ? ? ? ? ? ? ? ? ? buffer24[ycorrect * 1024 * 3 + xcorrect * 3 + 1] = rgbValues[j * 1024 * 3 + i * 3 + 1];
? ? ? ? ? ? ? ? ? ? buffer24[ycorrect * 1024 * 3 + xcorrect * 3 + 2] = rgbValues[j * 1024 * 3 + i * 3 + 2];
? ? ? ? ? ? ? ? }//完成圖像校正
? ? ? ? ? ? }//注釋,如果不說明,所有圖像均以buffer【y*w+x】代替

機器視覺中,標定板一般有兩種,另外一種標定板是九宮格上的'十'字交叉全部換成圓(我們給他個名字吧,就叫象棋標定板(以此紀念青騷年時對象棋的熱愛),是否與棋盤格很對稱?),我們可以使用前面講過的方法來找到圓心,方法一,找斑的方法,方法二,使用找圓工具匹配的方法,有了圓心(相當以上亞像素角點),就可以用上面相同的方法求徑向畸變參數,然后來校正圖像。在工業上,標定通常使用自動化方式,手動也可以(像激光那樣),但是會太麻煩。

標定一般為工程提供三項便利:1,坐標系;2,比例尺;3,圖像校正(鏡頭校正)。提個問題?我們的眼睛看到的世界是真的?還是畸變的?顯然,眼睛中心看到的是真實的,而,其他就不可靠。

讓你再一次驚詫機器視覺標定與learning opencv計算機視覺標定(數學設想推理復雜度)的巨大差別。你可以看到工業機器視覺極大的標準化帶來的便利(基本消除病態視覺)。什么是工業機器視覺極大的標準化?有必要解釋一下:只要你做過機器視覺項目,你會發現,標定幾乎可以忽略,但并不是說沒有標定,只是你沒發覺,他在你所有的硬件選型中已經被消化掉了,一般我們選的鏡頭,幾乎工作在無畸變狀態,在這里你就可以看到別人制定工業機器視覺標準的用苦良心,不是隨便一個相機鏡頭就可以在工業上用,這里邊的心血以價格的溢出而體現,這也是用苦良心的回報。這也是機器視覺大面積應用的基礎,計算機視覺以learning opencv的方式展現,看是美好的未來AI世界,卻是舉步維艱,當你習慣了機器視覺的簡單,要改變,必須挖掘這種簡單習慣(簡單,只是有人負重前行,消除了復雜度,簡單沒那么簡單,當你負重前行的時候)。所有的隱形,并非能掩蓋標定度量衡的偉大意義。

待續(慢慢來!...........)每天一點小改變?

我的郵箱liuganggang_1978@163.com;734523623@qq.com

總結

以上是生活随笔為你收集整理的机器视觉标定(calibration)关键尝试(标定的重要意义度量衡)(A)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 我和我的太阳泰剧在线观看泰剧 | 人操人操| 四虎少妇做爰免费视频网站四 | 欧美精品成人一区二区三区四区 | 欧美精品免费一区二区 | 免费性片| 亚洲欧美一区二区精品久久久 | 凹凸精品一区二区三区 | 亚洲精品视频在线播放 | 97干视频 | 人妻久久一区二区 | 中文字幕免费在线看线人动作大片 | av夜色 | 日本特黄特色aaa大片免费 | 国产欧美日韩激情 | a天堂v | 久久久久激情 | 潘金莲一级淫片免费放动漫 | 好吊日在线观看 | 日韩中字在线 | 青娱乐免费在线视频 | a√在线 | 亚洲人午夜射精精品日韩 | 亚洲欧美不卡 | 色呦呦视频在线观看 | 国产欧美成人 | 欧美jizz19性欧美 | 日韩av不卡在线观看 | 欧美毛茸茸 | 人人揉人人 | 国产一毛片| 性欧美丰满熟妇xxxx性久久久 | 熟女视频一区 | a人片| 久久99免费视频 | 亚洲乱亚洲乱 | 超碰中文字幕在线 | 捆绑调教sm束缚网站 | 国产乱淫a∨片免费视频 | 吊侵犯の奶水授乳羞羞漫画 | 天天干天天插 | 中文在线免费观看 | 日本熟妇毛耸耸xxxxxx | 国产在线超碰 | 色盈盈影院 | 在线观看免费av网站 | 免费播放毛片精品视频 | jizz中国少妇 | 国产欧美日韩视频在线观看 | 亚洲精品高潮 | 四虎国产成人精品免费一女五男 | 国产九九热 | 国产精品96 | 日韩国产小视频 | 中文字幕一区二区三区电影 | 亚洲色图影院 | 天天性综合 | 18色av| 在线观看免费观看 | 三级爱爱 | 黄色一级视频网站 | 艹男人的日日夜夜 | 88福利视频 | 草逼视频网站 | 狠狠人妻久久久久久综合 | 欧美一级啪啪 | 涩涩视频在线免费看 | 国产超级av| 91精品国产综合久久久蜜臀 | 麻豆视频91 | 国产ts三人妖大战直男 | 国产av一区二区三区最新精品 | 美女av网 | 东京av在线 | 星铁乱淫h侵犯h文 | 国产在线xxxx | 免费国产一区二区 | av不卡在线看 | 欧美日韩电影一区二区 | 亚洲精品一区二区 | 日韩狠狠操 | 蜜桃91精品入口 | 西西人体44www大胆无码 | www色中色 | 国产群p视频 | 日本黄色一区二区三区 | 日韩欧美中出 | 亚洲麻豆精品 | 天堂视频免费 | 色av导航 | 欧美麻豆视频 | 日韩在线不卡视频 | 亚洲最大看欧美片网站 | 精品国偷自产一区二区三区 | 日本午夜在线 | 中文字幕在线播放 | 亚洲精品中文字幕在线播放 | 无码人妻精品一区二区三区在线 | 99精品久久久 |