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