freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于ccd的微小零件表面缺陷檢測(cè)畢業(yè)論文-資料下載頁(yè)

2025-07-02 08:07本頁(yè)面

【導(dǎo)讀】過(guò)程的完成質(zhì)量直接影響著產(chǎn)品的質(zhì)量和性能。就要對(duì)零件及加工工藝過(guò)程進(jìn)行實(shí)時(shí)地、高效地、準(zhǔn)確地進(jìn)行檢測(cè)。系統(tǒng)的結(jié)構(gòu),國(guó)內(nèi)外的研究現(xiàn)狀。緊接著論述了數(shù)字圖像處理的一些基本概。念,以及本課題的邊緣檢測(cè)的基本步驟。在各步驟的實(shí)現(xiàn)方法中比較Roberts,算法使用Hough變換進(jìn)行改進(jìn),得到清晰真實(shí)的輪廓。另外為了進(jìn)一步提高。獲取的圖像的清晰度,研究了基于MATLAB的CCD的標(biāo)定。的能力,為以后的科研夯實(shí)基礎(chǔ)。

  

【正文】 ??] () c) 引入透鏡的徑向畸變和切向畸變 , 圖像平面坐標(biāo)系中物理坐標(biāo)P(x,y)擴(kuò)展為 P(????,????),如式 所示: [????????]= (1+??1??2 + ??2??4) [????????????????]+[2??1????+??2(??2 +2??2)??1(??2 + 2??2)+2??2????] () 式 ()中 ??1和 ??2是徑向畸變系數(shù) , ??1和 ??2是切向畸變系數(shù) ,??2 = ??2 +??2 。 d) 圖像平面坐標(biāo)系中物理坐標(biāo) P(????,????)轉(zhuǎn)換為像素坐標(biāo) P(u,v) [????] = [???????? + ??0???????? + ??0] () 注: {???? = ?? ? ????????? = ????? 式 () 中 (??0,??0)是基準(zhǔn)點(diǎn) (通常在圖像的中心 ); ??為攝像機(jī)的有效焦距 ;s 為比例因子 , 用來(lái)適應(yīng)在計(jì)算機(jī)圖像水平方向上取樣帶來(lái)的種種不確定因素 ; ???為計(jì)算機(jī)圖像在水平方向 (??方向 ) 上相鄰兩像素之間的有效距離 (mm/ pixel) , ???為計(jì)算機(jī)圖像在垂直方向 (??方向 ) 上相鄰兩像素之間的有效距離(mm/ pixel) 。 綜合上述公式得到如下等價(jià)表達(dá)式 : ?? ? ?? = ??(??|??)? ?? () 注: 式 中 ?? = (??,??,1)??為圖像像素點(diǎn)的齊次坐標(biāo) , ?? = (X,Y,Z,1)??為空間點(diǎn)的齊次坐標(biāo) , ??為攝像機(jī)的內(nèi)參矩陣 , (??|??) 為外參矩陣 , 這樣就得到了一個(gè)圖像點(diǎn)和空間點(diǎn)之間的一個(gè)映射關(guān)系。 30 基于 OpenCV的標(biāo)定 讀取標(biāo)定用的一組圖像 OpenCV 內(nèi)參數(shù)矩陣: 4 個(gè)內(nèi)參 (????, ????, ????和 ????), 5 個(gè)畸變參數(shù)( 3 個(gè)徑向畸變 ??1,??2,??3和 2 個(gè)切向畸變 ??1,??2) 。 徑向畸變的校正: ???? = ????(1+??1??2 + ??2??4 +??3??6) () ???? = ????(1+ ??1??2 + ??2??4 + ??3??6) () 切向畸變的校正: ???? = ???? + ,2??1??+ ??2(??2 + 2??2) () ???? = ???? +,??1(??2 +2??2)+ 2??2?? () 寫成矩陣形式為: [????????]= (1+??1??2 + ??2??4 +??3??6)[????????]+ [2??1???????? + ??2(??2 + 2????2)??1(??2 + 2????2)+2??2????????] () 空間任何一點(diǎn) P 在圖像上的成像位置可以用針孔模型近似表示: {?? = ???????????? = ?????????? () ???? [????1] =[ 1???? 0 ??00 1???? ??00 0 1 ] [?? 0 00 ?? 00 0 1 0 0 0][?? ??0?? 1][????????????1] = [???? 0 ??0 00 ???? ??0 00 0 1 0][?? ??0?? 1][????????????1] = ???????????? = ?????? () M 為 3 4矩陣,稱為投影矩陣; 31 ??1完全由 ????、 ????、 ??0、 ??0決定,只與攝像機(jī)內(nèi)部結(jié)構(gòu)有關(guān),這些參數(shù)稱為攝像機(jī)內(nèi)部參數(shù); ??2完全由攝像機(jī)相對(duì)于世界坐標(biāo)系的方位決定,稱為攝像機(jī)的外部參數(shù); ????為空間點(diǎn)在世界坐標(biāo)系下的齊次坐標(biāo)。 使用一個(gè)平面物體,在不同視角下旋轉(zhuǎn)和平移時(shí) 6 個(gè)參數(shù)會(huì)變化,對(duì)每一個(gè)視角用來(lái)求解攝像機(jī)內(nèi)參數(shù)矩陣的兩個(gè)額外參數(shù)需要約束,因此求解全部幾何參數(shù)至少需要兩個(gè)視角。 在單攝像頭情況下用 cvQueryFrame 即可抓取一幀畫面,這個(gè)函數(shù)是由兩個(gè) routine 組成的: cvGrabFrame 和 cvRetrieveFrame。 cvGrabFrame 將攝像頭幀畫面即時(shí)復(fù)制到內(nèi)部緩存中,然后通過(guò) cvRetrieveFrame 把我們預(yù)定義的一個(gè) IplImage 型空指針指向緩存內(nèi)的幀數(shù)據(jù)。注意這時(shí)我們并沒(méi)有真正把幀數(shù)據(jù)取出來(lái),它還保存在 OpenCV 的內(nèi)部緩存中,下一次讀取操作就會(huì)被覆蓋掉。所以一般我們要另外定義一個(gè) IplImage 來(lái)復(fù)制所抓取的幀數(shù)據(jù),然后對(duì)這個(gè)新 IplImage 進(jìn)行操作。由上面的解釋也可以看出, cvGrabFrame 的作用就是盡可能快的將攝像頭畫面數(shù)據(jù)復(fù)制到計(jì)算機(jī)緩存,這個(gè)功能就方便我們實(shí)現(xiàn)對(duì)攝像頭的同步抓取,即首先用 cvGrabFrame 依次抓取各個(gè) CvCapture*,然后再用 cvRetrieveFrame 把幀數(shù)據(jù)取出來(lái)。例如: cvGrabFrame( lfCam )。 cvGrabFrame( riCam )。 frame1 = cvRetrieveFrame( lfCam )。 frame2 = cvRetrieveFrame( riCam )。 if( !frame1|| !frame2) break。 cvCopyImage(frame1, image1)。 cvCopyImage(frame2, image2)。 32 對(duì)讀入的圖像進(jìn)行角點(diǎn)檢測(cè) OpenCV 里的角點(diǎn)檢測(cè)模塊在實(shí)際應(yīng)用中經(jīng)常有提取角點(diǎn)失敗、精度較差的缺陷 , 故此步驟用 MATLAB 中的攝像機(jī)標(biāo)定工具箱中提供的角點(diǎn)檢測(cè)功能代替 , 可以提高精度、增強(qiáng)魯棒性。 標(biāo)定中平面棋盤更容易處理,黑白方塊交替排列,尋找和跟蹤簡(jiǎn)單,各角點(diǎn)也讓亞像素定位函數(shù)使用更加自然 : 圖 棋盤的檢測(cè) OpenCV 利用從多個(gè)視場(chǎng)計(jì)算多個(gè)單應(yīng)性矩陣的方法來(lái)求解攝像機(jī)內(nèi)參數(shù) 。 cvFindHomography()以對(duì)應(yīng)點(diǎn) 序列作為輸入,返回最佳描述這些對(duì)應(yīng)點(diǎn)的單應(yīng)性矩陣。我們最少需要 4 個(gè)點(diǎn)來(lái)求解,但如果可以,通常提供更多的點(diǎn),減少噪聲和其他不確定因素所帶來(lái)的干擾。 棋盤角點(diǎn)個(gè)數(shù)和參數(shù)個(gè)數(shù) 33 未知因素: 4 個(gè)內(nèi)參 (????,????,????,????)和 5 個(gè)畸變參數(shù) (3 個(gè)徑向畸變 ??1,??2,??3和 2 個(gè)切向畸變 ??1,??2)內(nèi)參數(shù)直接與棋盤所在空間的 3D幾何相關(guān)(即外參數(shù)),而畸變參數(shù)則與點(diǎn)集如何畸變的 2D 集合有關(guān)。因此,可分別處理兩大類參數(shù)。 求內(nèi)參數(shù)時(shí) ,對(duì)于棋盤的 每個(gè)視場(chǎng)圖像,需要三個(gè)旋轉(zhuǎn)參數(shù) (? ,φ,θ)和三個(gè)平移參數(shù) (????,????,????),每個(gè)視場(chǎng)必須計(jì)算 4 個(gè)內(nèi)參數(shù)和 6 個(gè)外參數(shù) 。 假設(shè)有 N 個(gè)角點(diǎn)和 K 個(gè) 不同位置的 棋盤圖像, K 個(gè)棋盤圖像提供 2N?K個(gè)約束(每個(gè)點(diǎn)有 x, y 兩個(gè)坐標(biāo)值組成),有 解 的前提是 2N? K ≥ 6K+ 4成立,實(shí)際應(yīng)用中,為了得到高質(zhì)量結(jié)果,至少需要 10 幅 7 8或者更大棋盤的圖像。 圖 不同位置的平面棋盤 把 MATLAB 工具箱的文件 復(fù)制 到對(duì)應(yīng)目錄下,把所要標(biāo)定的棋盤圖也放到 m文件所在的目錄下,然后在 MATLAB 命令行窗口中打入 calib_gui,先對(duì)左攝像機(jī)標(biāo)定,點(diǎn)擊 Image names, 命令行窗口會(huì)提示你輸入圖片的basename 以及圖片的格式。 采集棋盤圖的時(shí)候要注意,盡量讓棋盤占據(jù)盡可能多的畫面,這樣可以得到更多有關(guān)攝像頭畸變方面的信息 。 在提取第一幅圖的時(shí)候命令行窗口可 34 能會(huì)提示你輸入方格大小,這里輸入你方格的實(shí)際大小就行,比如我方格是27mm,就輸入 27。這步事實(shí)上相當(dāng)關(guān)鍵,它定義了空間的尺度,如果要對(duì)物體進(jìn)行測(cè)量的話,這步是必須的。 圖 手動(dòng)找到 角點(diǎn) 大致位置 35 圖 設(shè)定一個(gè)窗口,在窗口里 面找到角點(diǎn) 圖 扭曲的緣故角點(diǎn)偏離實(shí)際位置 36 圖 重投影與之對(duì)比 計(jì)算重投影誤差: Calibration results after optimization (with uncertainties): Focal Length: fc = [ ] ?[ ] Principal point: cc = [ ] ?[ ] Skew: alpha_c = [ ] ?[ ] = angle of pixel axes = ? degrees Distortion: kc = [ ] ?[ ] Pixel error: err = [ ] 37 圖 重投影誤差 圖 38 圖 再看錯(cuò)誤的地方,可以 發(fā)現(xiàn) 重投影的誤差非常大。原因是我們沒(méi)有在 一些非常扭曲的圖像區(qū)域進(jìn)行仔細(xì)處理(應(yīng)該利用預(yù)測(cè)失真項(xiàng))。不過(guò)我們現(xiàn)在可以自動(dòng)重新計(jì)算并糾正。方法是這樣的:按主攝像機(jī)標(biāo)定工具上的 按鈕,再次選擇一個(gè)大小為 wintx = winty = 5(缺省值)的角點(diǎn) Finder 窗口 39 圖 Focal Length: fc = [ ] ?[ ] Principal point: cc = [ ] ?[ ] Skew: alpha_c = [ ] ?[ ] = angle of pixel axes = ? degrees Distortion: kc = [ ] ?[ ] Pixel error: err = [ ] 將由于畸變未能準(zhǔn)確找出的角點(diǎn) , 增大窗口 再搜索 : wintx ([] = 5) = 9 winty ([] = 5) = 9 Window size = 19x19 Number(s) of image(s) to process ([] = all images) = [7 8 14] wintx ([] = 5) = 8 40 winty ([] = 5) = 8 Window size = 17x17 Number(s) of image(s) to process ([] = all images) = [1 3 5 10 12 9] 得到的參數(shù) ( 像素誤差變小 ) Focal Length: fc = [ ] ?[ ] Principal point: cc = [ ] ?[ ] Skew: alpha_c = [ ] ?[ ] = angle of pixel axes = ? degrees Distortion: kc = [ ] ?[ ] Pixel error: err = [ ] 格式轉(zhuǎn)換 將 MATLAB 檢測(cè)出的角點(diǎn)坐標(biāo)格式都轉(zhuǎn)換成 OpenCV 的 CvMat 格式。 計(jì)算內(nèi)參矩陣 初始化所有的輸入?yún)?shù)后 , 將角點(diǎn)在世界坐標(biāo)系中的坐標(biāo)值以及在圖像坐標(biāo)系中的坐標(biāo)值代入 cvCalibrateCamera2 () , 最后得到攝像機(jī)的內(nèi)參數(shù)矩陣、畸變系數(shù)向量、每幅圖像的旋轉(zhuǎn)向量、每幅圖像的平移向量。 double cvCalibrateCamera2(const CvMat* objectPoints, const CvMat* imagePoints, const CvMat* pointCounts, CvSize imageSize, CvMat* cameraMatrix, CvMat* distCoeffs, CvMat* rvecs=NULL, CvMat* tvecs=NULL, int ?ags=0 ) objectPoints:物體的每 k 個(gè)點(diǎn)在每 m個(gè)圖像中的物理坐標(biāo)(即 n=m*k) 41 (0,0) (0,1) (0,2) (0,3) (0,4)…(1,0) (1,1)…. imagePoints: objectPoints 提供的所有角點(diǎn)的像素坐標(biāo),棋盤標(biāo)定時(shí),簡(jiǎn)單的調(diào)用 m次 cvFindChessboardCorners 計(jì)算外參數(shù)矩陣 利用得到的內(nèi)參數(shù)矩陣和畸變系數(shù)向量 , 用函數(shù)cvFindExtrinsicCameraParams2 ( )分別計(jì)算各幅圖的外參數(shù) (旋轉(zhuǎn)向量和平移向量 ) 。 分析實(shí)驗(yàn)結(jié)果 最后注意要用 cvReleaseMat()函數(shù)釋放 cvCreateMat ()函數(shù)分配的內(nèi)存空間 , 防止內(nèi)存泄露。 先用 cvProject Points2 ()計(jì)算出三維角點(diǎn)坐標(biāo)的投影坐標(biāo) ,再用函數(shù) cvNorm()比較計(jì)算出的投影坐
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1