610 likes | 738 Vues
( 可用於太陽能集光器之 ) 光學透鏡組件之自動光學檢測系統之研發. 林宸生 教授 逢甲大學 自控系. 內容大綱. 前言 系統之設計原理 系統之軟硬體架構 檢測結果與驗證 結論. 一、前言. 微透鏡陣列的應用 自動化檢測的優點. 前言. 現今市面上光電產品,例如光纖耦合、液晶面板中的 增效模組與光均勻器等,都需要應用到微透鏡陣列。. 穩定且一致性的標準,保障檢驗精度。 提昇檢測效率,降低檢測成本。. 前言. 張子文,太陽電池應用於建築上之研究 ,國立成功大學建築學系碩士論文, 2000 年.
E N D
(可用於太陽能集光器之)光學透鏡組件之自動光學檢測系統之研發(可用於太陽能集光器之)光學透鏡組件之自動光學檢測系統之研發 林宸生 教授 逢甲大學 自控系
內容大綱 • 前言 • 系統之設計原理 • 系統之軟硬體架構 • 檢測結果與驗證 • 結論
一、前言 • 微透鏡陣列的應用 • 自動化檢測的優點
前言 • 現今市面上光電產品,例如光纖耦合、液晶面板中的 增效模組與光均勻器等,都需要應用到微透鏡陣列。 • 穩定且一致性的標準,保障檢驗精度。 • 提昇檢測效率,降低檢測成本。
前言 張子文,太陽電池應用於建築上之研究 ,國立成功大學建築學系碩士論文,2000年
黃偉智,太陽能集光器中Fresnel透鏡設計之研究 ,元智大學光電研究所 ,2005年
前言 張心豪,微透鏡陣列製作全天太陽能電池 ,國立清華大學微機電工程研究所碩士論文,2005年
前言 • 微透鏡陣列的應用 • 現今市面上光電產品,例如光纖耦合、太陽能集光器 、液晶面板中的增效模組與光均勻器等,都需要應用 到微透鏡陣列。 • 自動化檢測的優點 • 穩定且一致性的標準,保障檢驗精度。 • 提昇檢測效率,降低檢測成本。
二、系統之設計原理 • 基因演算法計算檢測最短路徑 • 微透鏡陣列定位 • 微透鏡表面輪廓分析
基因演算法計算檢測最短路徑 • 微透鏡陣列的樣本中,由於 位置不同,熱脹冷縮不均, 對於容易出現瑕疵的特定區 域進行檢測。 • 修改模具複查時,針對需要 複驗的檢測點進行檢測。 • 微透鏡陣列檢測點非常多時 ,通常在工廠內會選擇一些 代表性的待測點實施檢測。 有些列上並無待測微透鏡!
基因演算法計算檢測最短路徑 • 計算XY-Table移動最短路徑流程圖
基因演算法計算檢測最短路徑 • XY-Table路徑編碼 • 設計適應函數 為總路徑長; 為第i顆微透鏡對應於起點之向量
基因演算法計算檢測最短路徑 • 挑選親代( Selection) Roulette Wheel Selection • 交配運算( Crossover) Partially-Mapped Crossover
基因演算法計算檢測最短路徑 • 突變運算( Mutation) Inversion Mutation • 終止條件( Termination Condition) 若計算所得之路徑總長經過3000個運算循環後仍無縮短,即判定達到終止條件(Termination Condition),則會輸出最短路徑上每顆微透鏡座標的檢測順序,XY-Table檢測時將依照此順序逐一檢測每顆待測微透鏡。
灰階與二值化 微影與光電研究室
影像處理的相關知識(1) 座標系統
影像處理的相關知識(2) 基本單位 最小單位: 1 pixel 不可分割
影像處理的相關知識(3) 一些規則: 色彩三原色—紅(R)、綠(G)、藍(B) 使用 24 bit (全彩)的點陣圖(BMP)檔 R(28)、G(28)、B(28)
Bitmap格式簡介 常用於儲存影像的格式有:點矩陣(Bitmap)、JPEG、GIF、PNG等 Bitmap為簡單且基本的格式 BCB有提供元件來處理Bitmap格式
Bitmap格式簡介 檔頭 儲存影像特性 影像寬高及大小 調色盤 儲存影像所使用的每一種顏色之內容 影像資料 含有影像中每個像素的數值
相關知識(4) 螢幕的色彩排列:
影像處理的相關知識 R, G, B 在記憶體內的排列 很重要!! 而且排列是一維的,不是二維的
灰階處理 程式主體 特殊的宣告 函式 慢速灰階 快速灰階
程式主體 宣告 迴圈 主程式
特殊宣告 byte 8位元的正整數 範圍:0~255 COLORREF 微軟定義的一個函式 用途:用於取得顏色資訊 範圍:32bit 等同於 unsigned char
函式 GetRValue() -傳入:32bit顏色;回傳:byte GetGValue() -傳入:32bit顏色;回傳:byte GetBValue() -傳入:32bit顏色;回傳:byte RGB() -傳入:R、G 、B
慢速灰階—採取策略 對象:表單上的圖片 逐點掃描 填入顏色 最直接的方式
慢速灰階—程式 byte R, G, B, Gray; COLORREF color; for(int y=0; y<480; y++) { for(int x=0; x<640; x++) { color=Image1->Canvas->Pixels[x][y]; R=GetRValue(color); G=GetGValue(color); B=GetBValue(color); Gray=(R+G+B)/3; Image1->Canvas->Pixels[x][y] = RGB(Gray, Gray, Gray); } }
加速的步驟(1) 從記憶體下手 • 在記憶體內部宣告一個圖片緩衝區 Graphics::TBitmap *Bitmap=new Graphics::TBitmap(); • 設定規格 Bitmap->PixelFormat=pf24bit; Bitmap->Width=640; Bitmap->Height=480; ※ 此時緩衝區內無任何東西,空白一片
加速的步驟(2) 掃瞄圖片 byte *ptr; for(int y=0; y<480; y++) { ptr=(byte*)Bitmap->ScanLine[y]; for(int x=0; x<640*3; x+=3) { ptr[x] = x+2*y; //B ptr[x+1] = x+y; //G ptr[x+2] = x; //R } }
ptr 的任務 ptr=(byte*)Bitmap->ScanLine[y]; ptr ptr 具有該行的所有顏色資訊(R、G、B) 記憶體的圖片緩衝區
X 方向的讀取長度 1 2 3 4 5 7 8 9 10 11 0 6 1 2 3 0
加速的步驟(3) 從記憶體內取出來用 Image2->Picture->Assign(Bitmap); 完成!!!
快速灰階(1) Graphics::TBitmap *Bitmap1=new Graphics::TBitmap(); Bitmap1->PixelFormat=pf24bit; Bitmap1->Width=512; Bitmap1->Height=512; Bitmap1->Assign(Image1->Picture);
快速灰階(2) byte *ptr; byte gray; for(int y=0;y<Bitmap1->Height;y++) { ptr=(Byte *)Bitmap1->ScanLine[y]; for(int x=0;x<Bitmap1->Width*3;x+=3) { gray=(ptr[x]+ptr[x+1]+ptr[x+2])/3; ptr[x]=gray; ptr[x+1]=gray; ptr[x+2]=gray; } } Image1->Picture->Assign(Bitmap1);
二值化處理 程式主體 慢速二值化 快速二值化
程式主體 宣告 迴圈 主程式
二值化處理—觀念(1) 如欲將圖像分成二個群集 (物體與背景),則選定適當的二值化之閥值 m if f(x,y) > m 則 f(x,y) = 255 else f(x,y) < m 則 f(x,y) = 0
二值化處理—觀念(2) f(x,y) 從哪裡來? (x,y) 圖片 f(x,y) 相當於在影像 (x,y) 處的灰階值 => graylevel = f(x,y) f 因此我們從灰階值開始著手! 但是,怎麼取出灰階值? 還記得吧!!
二值化處理—實作(1) 掃瞄圖片,取出灰階值 Byte *ptr; Byte gray; for(int y=0;y<Bitmap1->Height;y++) { ptr=(Byte *)Bitmap1->ScanLine[y]; for(int x=0;x<Bitmap1->Width*3;x+=3) { gray=(ptr[x]+ptr[x+1]+ptr[x+2])/3; ptr[x]=gray; ptr[x+1]=gray; ptr[x+2]=gray; } } Image1->Picture->Assign(Bitmap1);
二值化處理—實作(2) 修改一下(迴圈內的主程式) gray=(ptr[x]+ptr[x+1]+ptr[x+2])/3; if (gray>128) { ptr[x]=255; ptr[x+1]=255; ptr[x+2]=255; } else { ptr[x]=0; ptr[x+1]=0; ptr[x+2]=0; } 完成!!
微透鏡陣列定位 • 菲索(Fizeau)干涉儀原理及其干涉條紋
微透鏡陣列定位 • 影像處理技術 • 區別遮罩運算、雜訊去除 • 修正式重心法、直徑比較之彈性作法 • 重心法、中心座標作平均 • 從每一顆微透鏡的中心座標往外延伸至背景並予以定位。
微透鏡表面輪廓分析 • 干涉條紋亮度曲線 單顆微透鏡其灰階值變化曲線,依序編號為第1區段,第2區段…。找出第i區段亮度曲線之極大值Ti與極小值Di,g(x,y)為第i區段亮度曲線點素(x,y)之亮度值。
微透鏡表面輪廓分析 • 干涉條紋明暗變化→對應微透鏡表面輪廓起伏λ/4 光程差2d= λ/2∴ d= λ/4 • 最內圈及最外圈干涉條紋對應之相位差 並不到180度
微透鏡表面輪廓分析 • 面積比例法 判斷中心圓環之相位角變化量(α):根據實際中心圓環面積與理想中心圓環面積之比例判斷相位角變化量。 為中心圓環面積 為n-1區段之圓環的面積 1為面積比例係數 • 亮度比例法 判斷最外圓環相位角變化量(β):可根據實際第1區段圓環條紋的亮度值變化量與理想第1區段之圓環條紋的亮度值變化量之比例判斷相位角變化量。 為第1區段之圓環條紋的亮度值變化量 為第2區段之圓環條紋的亮度值變化量 2為亮度值變化量比例係數
微透鏡表面輪廓分析 • 微透鏡表面輪廓起伏量(Lens Sag)計算 令i為第區段相位角從0度到180度時的亮度變化, 當i = 1時, 當i = n時, 當1< i < n時, 令為第區段相位角為90度時的亮度值 當i = 1時, 當1< i = n時, 如圖令中心圓所在的區段為第n區段,則第2區段至第(n-1)區段點素與 之間所對應的微透鏡表面高度差的值可由以下公式求出: 由第1區段累計至微透鏡的中心圓 所在的區段之每一個相鄰點素所對應的微透鏡表面高差,可以計算出Lens Sag( ):