LED燈珠色坐標(biāo)1分鐘完成分光Bin劃分——Python自研色區(qū)劃分工具實(shí)戰(zhàn))
摘要LED封裝、分光、品質(zhì)工程師日常處理大批量CIE(x,y)色坐標(biāo)數(shù)據(jù)時(shí)人工對(duì)照?qǐng)D紙歸類分Bin效率極低且極易出現(xiàn)看錯(cuò)、分錯(cuò)問(wèn)題。本文分享一套純Python開發(fā)的桌面色區(qū)劃分工具無(wú)需手動(dòng)逐點(diǎn)比對(duì)導(dǎo)入色坐標(biāo)與標(biāo)準(zhǔn)色區(qū)四邊形后一鍵自動(dòng)分類同步輸出各Bin數(shù)量、良率占比搭配可視化色坐標(biāo)分布圖最終可導(dǎo)出完整Excel報(bào)表。文章完整拆解核心幾何算法叉積法判斷坐標(biāo)點(diǎn)是否位于凸四邊形色區(qū)內(nèi)附帶可直接運(yùn)行的獨(dú)立算法源碼可單獨(dú)復(fù)用至其他分光自動(dòng)化項(xiàng)目。行業(yè)痛點(diǎn)光譜儀導(dǎo)出成百上千組燈珠色坐標(biāo)需要對(duì)照客戶標(biāo)準(zhǔn)四邊形色區(qū)人工區(qū)分A/B/C等Bin位。依靠Excel肉眼識(shí)圖幾百顆樣品耗時(shí)數(shù)十分鐘長(zhǎng)期操作傷眼人為誤差無(wú)法避免。本工具將幾何判定邏輯程序化批量處理一鍵完成大幅降低分光質(zhì)檢工作量。一、工具解決的核心業(yè)務(wù)場(chǎng)景LED分光分Bin批量匹配色坐標(biāo)與標(biāo)準(zhǔn)四邊形色區(qū)自動(dòng)統(tǒng)計(jì)各Bin產(chǎn)出數(shù)量、良率占比色坐標(biāo)一致性校驗(yàn)對(duì)比實(shí)測(cè)燈珠分布與標(biāo)準(zhǔn)色區(qū)邊界快速識(shí)別批量偏移不良來(lái)料/出貨檢驗(yàn)自動(dòng)區(qū)分合格色區(qū)、超規(guī)不良點(diǎn)輸出完整統(tǒng)計(jì)臺(tái)賬標(biāo)準(zhǔn)色區(qū)靈活處理支持整體縮放、均等拆分快速生成多級(jí)子Bin用于精細(xì)化分光。少量樣品、色區(qū)數(shù)量少時(shí)可臨時(shí)使用Excel手動(dòng)處理若樣品量數(shù)百上千、色區(qū)規(guī)格10個(gè)以上人工操作成本極高本自動(dòng)化工具可完美替代人工識(shí)圖判斷。二、工具整體介紹基礎(chǔ)信息工具名稱色區(qū)劃分V1.0形態(tài)Windows獨(dú)立EXE程序雙擊直接運(yùn)行無(wú)需本地安裝Python環(huán)境技術(shù)架構(gòu)Python Tkinter可視化界面 Matplotlib繪圖幾何判定邏輯獨(dú)立封裝為core.py算法模塊Excel讀寫依賴openpyxl/xlrd兼容新舊表格格式核心優(yōu)勢(shì)純幾何運(yùn)算不依賴Office軟件批量自動(dòng)分類、可視化直觀、結(jié)果一鍵導(dǎo)出底層核心算法凸四邊形點(diǎn)包含判定二維向量叉積法三、數(shù)據(jù)導(dǎo)入支持格式數(shù)據(jù)類型錄入方式補(bǔ)充說(shuō)明燈珠色坐標(biāo)(x,y)手動(dòng)錄入界面展示前50行/導(dǎo)入CSV/XLSX/XLS表格僅可視化前50組后臺(tái)全量參與運(yùn)算統(tǒng)計(jì)無(wú)數(shù)據(jù)上限標(biāo)準(zhǔn)色區(qū)四邊形手動(dòng)錄入4頂點(diǎn)坐標(biāo)/批量導(dǎo)入表格單個(gè)色區(qū)由4個(gè)頂點(diǎn)構(gòu)成凸四邊形最多支持15組獨(dú)立色區(qū)基準(zhǔn)色區(qū)手動(dòng)錄入/文件導(dǎo)入繪圖區(qū)分紅色虛線展示支持雙向縮放、均等拆分生成子色區(qū)頂點(diǎn)排序規(guī)則錄入色區(qū)四點(diǎn)無(wú)需嚴(yán)格控制順逆時(shí)針工具內(nèi)置極角重排邏輯自動(dòng)以X坐標(biāo)最小點(diǎn)為起點(diǎn)剩余三點(diǎn)按極角逆時(shí)針排序保證四邊形判定邏輯穩(wěn)定生效。四、完整功能清單色坐標(biāo)錄入支持手動(dòng)填寫與文件導(dǎo)入雙模式兼容CSV、XLS、XLSX三種主流分光導(dǎo)出格式兩列數(shù)據(jù)僅需X、Y色坐標(biāo)。多色區(qū)定義最多配置15個(gè)獨(dú)立凸四邊形色區(qū)支持單條錄入、表格批量導(dǎo)入適配多Bin分光標(biāo)準(zhǔn)?;鶞?zhǔn)色區(qū)專屬處理功能縮放沿色區(qū)橫向/縱向雙向放大、縮小快速對(duì)比標(biāo)準(zhǔn)邊界偏移拆分將整塊色區(qū)均等切分為1~10份子色區(qū)實(shí)現(xiàn)精細(xì)化分級(jí)分光。一鍵自動(dòng)分類運(yùn)算點(diǎn)擊運(yùn)行即可批量判定每一組色坐標(biāo)歸屬Bin界面表格實(shí)時(shí)回填分類結(jié)果同步匯總各Bin數(shù)量、占比、超規(guī)不良數(shù)量、總樣品數(shù)。CIE色坐標(biāo)可視化繪圖等比例坐標(biāo)系自動(dòng)適配數(shù)據(jù)范圍各色區(qū)填充區(qū)分色標(biāo)注名稱基準(zhǔn)色區(qū)使用紅色虛線框已分類燈珠按所屬Bin上色未判定原始點(diǎn)灰色展示批量分布好壞一目了然。Excel報(bào)表一鍵導(dǎo)出輸出完整XLSX文件包含兩大模塊①單顆燈珠明細(xì)序號(hào)、X、Y、歸屬Bin②各Bin數(shù)量、占比匯總統(tǒng)計(jì)表可直接用于品質(zhì)歸檔、客戶交付。五、核心底層算法叉積法判斷點(diǎn)是否在凸四邊形色區(qū)內(nèi)工具核心邏輯輸入單個(gè)色坐標(biāo)點(diǎn)P、四邊形4頂點(diǎn)通過(guò)二維向量叉積判斷點(diǎn)相對(duì)四條有向邊的方位實(shí)現(xiàn)快速包含判定。算法原理二維叉積公式給定原點(diǎn)O、兩點(diǎn)P1、P2叉積計(jì)算c r o s s ( O , P 1 , P 2 ) ( P 1 x ? O x ) ( P 2 y ? O y ) ? ( P 1 y ? O y ) ( P 2 x ? O x ) cross(O,P1,P2)(P1_x-O_x)(P2_y-O_y)-(P1_y-O_y)(P2_x-O_x)cross(O,P1,P2)(P1x??Ox?)(P2y??Oy?)?(P1y??Oy?)(P2x??Ox?)cross0點(diǎn)B在向量OA左側(cè)逆時(shí)針cross0點(diǎn)B在向量OA右側(cè)順時(shí)針cross≈0三點(diǎn)共線點(diǎn)落在四邊形邊界上凸四邊形判定規(guī)則四邊形頂點(diǎn)統(tǒng)一逆時(shí)針/順時(shí)針環(huán)繞依次計(jì)算待測(cè)點(diǎn)對(duì)四條邊的叉積全部叉積≥極小閾值ε1e-12點(diǎn)在四邊形內(nèi)部或邊界全部叉積≤極小閾值ε兼容順時(shí)針頂點(diǎn)排布同樣判定為內(nèi)部?jī)煞N條件滿足其一即判定點(diǎn)在色區(qū)內(nèi)ε用于規(guī)避浮點(diǎn)精度誤差導(dǎo)致邊界點(diǎn)誤判。核心算法代碼示意defpoint_in_convex_quad(p,quad):defcross(o,a,b):return(a[0]-o[0])*(b[1]-o[1])-(a[1]-o[1])*(b[0]-o[0])nlen(quad)ifn3:returnFalsesigns[cross(quad[i],quad[(i1)%n],p)-1e-12foriinrange(n)]returnall(signs)ornotany(signs)defclassify_point(point,regions):forname,quadinregions:ifpoint_in_convex_quad(point,quad):returnname# 返回第一個(gè)命中的色區(qū)returnNone# 都不在 → 色區(qū)外defclassify_all_points(points,regions):return[(p[0],p[1],classify_point(p,regions))forpinpoints]算法選型說(shuō)明選用叉積法而非射線法的原因LED標(biāo)準(zhǔn)色區(qū)全部為規(guī)整凸四邊形叉積僅需4次運(yùn)算計(jì)算量更小、運(yùn)行速度更快代碼簡(jiǎn)潔穩(wěn)定無(wú)復(fù)雜邊界判斷內(nèi)置順逆時(shí)針兼容邏輯降低用戶錄入頂點(diǎn)的操作門檻。補(bǔ)充若后續(xù)需要處理異形凹多邊形色區(qū)可替換為射線法/環(huán)繞數(shù)算法。整套邏輯就是對(duì)每種數(shù)據(jù)讀入 → 幾何判定 → 寫回/統(tǒng)計(jì)。最小可用版教學(xué)用覆蓋點(diǎn)-色區(qū)判定與批量分類importmathdefreorder_quad(pts):ptssorted(pts,keylambdap:(p[0],p[1]))p1pts[0]otherssorted(pts[1:],keylambdap:math.atan2(p[1]-p1[1],p[0]-p1[0]))return[p1]othersdefpoint_in_quad(p,quad):defcross(o,a,b):return(a[0]-o[0])*(b[1]-o[1])-(a[1]-o[1])*(b[0]-o[0])s[cross(quad[i],quad[(i1)%4],p)-1e-12foriinrange(4)]returnall(s)ornotany(s)# 示例一個(gè)色區(qū) 幾個(gè)點(diǎn)regionreorder_quad([(0.30,0.34),(0.36,0.34),(0.36,0.42),(0.30,0.42)])pts[(0.33,0.38),(0.50,0.50),(0.32,0.36)]forpinpts:print(p,在色區(qū)內(nèi)ifpoint_in_quad(p,region)else色區(qū)外)真實(shí)工具把判定放在獨(dú)立的core.pyGUItkinter只負(fù)責(zé)輸入、繪圖matplotlib和導(dǎo)出openpyxl——職責(zé)分離算法可單獨(dú)測(cè)試復(fù)用。六、完整操作流程錄入標(biāo)準(zhǔn)色區(qū)右側(cè)面板手動(dòng)輸入每個(gè)Bin的4個(gè)頂點(diǎn)或?qū)隕xcel/Csv批量加載最多支持15組色區(qū)可選基準(zhǔn)色區(qū)調(diào)整導(dǎo)入基準(zhǔn)色區(qū)四邊形按需縮放邊界或均等拆分為多組子Bin導(dǎo)入實(shí)測(cè)色坐標(biāo)左側(cè)面板導(dǎo)入光譜儀導(dǎo)出表格或手動(dòng)錄入少量測(cè)試坐標(biāo)執(zhí)行分類運(yùn)算點(diǎn)擊運(yùn)行表格實(shí)時(shí)回填每顆燈珠歸屬Bin下方面板自動(dòng)統(tǒng)計(jì)各Bin數(shù)量、占比、不良總數(shù)可視化校驗(yàn)查看CIE色坐標(biāo)分布圖區(qū)分各色區(qū)顏色快速判斷批量偏移、不良集中區(qū)域?qū)С鰵w檔報(bào)表一鍵導(dǎo)出XLSX文件包含明細(xì)數(shù)據(jù)與匯總統(tǒng)計(jì)表用于品質(zhì)記錄、客戶對(duì)賬。使用注意事項(xiàng)各標(biāo)準(zhǔn)色區(qū)四邊形盡量避免重疊若存在重疊區(qū)域色坐標(biāo)會(huì)優(yōu)先匹配先錄入的色區(qū)定義順序會(huì)影響分類結(jié)果。七、使用避坑要點(diǎn)色區(qū)邊界要求工具判定邏輯僅適配凸四邊形LED行業(yè)分光標(biāo)準(zhǔn)均為凸區(qū)域無(wú)誤判風(fēng)險(xiǎn)凹四邊形、自交多邊形會(huì)出現(xiàn)判定錯(cuò)誤界面表格限制界面僅展示前50組色坐標(biāo)用于預(yù)覽后臺(tái)完整讀取全部數(shù)據(jù)運(yùn)算不會(huì)丟失樣品運(yùn)行依賴說(shuō)明源碼本地運(yùn)行時(shí)core.py與主程序需放在同一文件夾打包EXE已內(nèi)置全部依賴無(wú)需額外配置浮點(diǎn)精度處理內(nèi)置1e-12容差邊界上的色坐標(biāo)不會(huì)被誤判為不良適配儀器測(cè)量微小波動(dòng)軟件依賴庫(kù)Tkinter、Matplotlib、openpyxl、xlrd標(biāo)準(zhǔn)Python環(huán)境可一鍵pip安裝。八、工具落地價(jià)值總結(jié)本工具完整解決LED分光人工分Bin的低效痛點(diǎn)對(duì)比傳統(tǒng)人工識(shí)圖具備四大優(yōu)勢(shì)批量極速處理上千組色坐標(biāo)一分鐘完成全部分類替代半小時(shí)以上人工操作數(shù)據(jù)零誤差幾何算法統(tǒng)一判定標(biāo)準(zhǔn)消除人眼識(shí)別偏差可視化輔助分析分布圖直觀呈現(xiàn)樣品整體分布批量色差、偏移問(wèn)題一眼定位報(bào)表自動(dòng)生成明細(xì)、良率匯總一鍵導(dǎo)出省去手工統(tǒng)計(jì)、制表工作色區(qū)靈活調(diào)整支持縮放、拆分基準(zhǔn)色區(qū)適配客戶各類細(xì)分分光標(biāo)準(zhǔn)。如果你也??ㄔ谝慌鴺?biāo)要判斷 Bin這一步不想自己搭環(huán)境、不想寫判定代碼可以私信我聊聊——工具是桌面版需要的話我發(fā)你包和用法。也歡迎關(guān)注我后續(xù)還會(huì)寫更多把重復(fù)活交給軟件的自研小工具實(shí)戰(zhàn)。