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

正文內(nèi)容

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

2025-07-02 08:07本頁面

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

  

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