几百个LED灯珠色坐标1分钟完成分光Bin划分——Python自研色区划分工具实战
2026/7/31 10:44:38 网站建设 项目流程

摘要

LED封装、分光、品质工程师日常处理大批量CIE(x,y)色坐标数据时,人工对照图纸归类分Bin效率极低,且极易出现看错、分错问题。本文分享一套纯Python开发的桌面色区划分工具,无需手动逐点比对,导入色坐标与标准色区四边形后一键自动分类,同步输出各Bin数量、良率占比,搭配可视化色坐标分布图,最终可导出完整Excel报表。文章完整拆解核心几何算法:叉积法判断坐标点是否位于凸四边形色区内,附带可直接运行的独立算法源码,可单独复用至其他分光自动化项目。

行业痛点:光谱仪导出成百上千组灯珠色坐标,需要对照客户标准四边形色区人工区分A/B/C等Bin位。依靠Excel肉眼识图,几百颗样品耗时数十分钟,长期操作伤眼,人为误差无法避免。本工具将几何判定逻辑程序化,批量处理一键完成,大幅降低分光质检工作量。

一、工具解决的核心业务场景

  1. LED分光分Bin:批量匹配色坐标与标准四边形色区,自动统计各Bin产出数量、良率占比;
  2. 色坐标一致性校验:对比实测灯珠分布与标准色区边界,快速识别批量偏移不良;
  3. 来料/出货检验:自动区分合格色区、超规不良点,输出完整统计台账;
  4. 标准色区灵活处理:支持整体缩放、均等拆分,快速生成多级子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坐标最小点为起点,剩余三点按极角逆时针排序,保证四边形判定逻辑稳定生效。

四、完整功能清单

  1. 色坐标录入
    支持手动填写与文件导入双模式,兼容CSV、XLS、XLSX三种主流分光导出格式,两列数据仅需X、Y色坐标。

  2. 多色区定义
    最多配置15个独立凸四边形色区,支持单条录入、表格批量导入,适配多Bin分光标准。

  3. 基准色区专属处理功能

  • 缩放:沿色区横向/纵向双向放大、缩小,快速对比标准边界偏移;
  • 拆分:将整块色区均等切分为1~10份子色区,实现精细化分级分光。
  1. 一键自动分类运算
    点击运行即可批量判定每一组色坐标归属Bin,界面表格实时回填分类结果;同步汇总各Bin数量、占比、超规不良数量、总样品数。

  2. CIE色坐标可视化绘图
    等比例坐标系自动适配数据范围;各色区填充区分色标注名称,基准色区使用红色虚线框;已分类灯珠按所属Bin上色,未判定原始点灰色展示,批量分布好坏一目了然。

  3. Excel报表一键导出
    输出完整XLSX文件,包含两大模块:①单颗灯珠明细(序号、X、Y、归属Bin);②各Bin数量、占比汇总统计表,可直接用于品质归档、客户交付。

五、核心底层算法:叉积法判断点是否在凸四边形色区内

工具核心逻辑:输入单个色坐标点P、四边形4顶点,通过二维向量叉积判断点相对四条有向边的方位,实现快速包含判定。

算法原理

  1. 二维叉积公式
    给定原点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)=(P1xOx)(P2yOy)(P1yOy)(P2xOx)
  • cross>0:点B在向量OA左侧(逆时针)
  • cross<0:点B在向量OA右侧(顺时针)
  • cross≈0:三点共线,点落在四边形边界上
  1. 凸四边形判定规则
    四边形顶点统一逆时针/顺时针环绕,依次计算待测点对四条边的叉积;
    全部叉积≥极小阈值ε(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])n=len(quad)ifn<3:returnFalsesigns=[cross(quad[i],quad[(i+1)%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):pts=sorted(pts,key=lambdap:(p[0],p[1]))p1=pts[0]others=sorted(pts[1:],key=lambdap: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[(i+1)%4],p)>=-1e-12foriinrange(4)]returnall(s)ornotany(s)# 示例:一个色区 + 几个点region=reorder_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.py,GUI(tkinter)只负责输入、绘图(matplotlib)和导出(openpyxl)——职责分离,算法可单独测试复用。

六、完整操作流程

  1. 录入标准色区:右侧面板手动输入每个Bin的4个顶点,或导入Excel/Csv批量加载,最多支持15组色区;
  2. (可选)基准色区调整:导入基准色区四边形,按需缩放边界或均等拆分为多组子Bin;
  3. 导入实测色坐标:左侧面板导入光谱仪导出表格,或手动录入少量测试坐标;
  4. 执行分类运算:点击运行,表格实时回填每颗灯珠归属Bin,下方面板自动统计各Bin数量、占比、不良总数;
  5. 可视化校验:查看CIE色坐标分布图,区分各色区颜色,快速判断批量偏移、不良集中区域;
  6. 导出归档报表:一键导出XLSX文件,包含明细数据与汇总统计表,用于品质记录、客户对账。

使用注意事项:各标准色区四边形尽量避免重叠;若存在重叠区域,色坐标会优先匹配先录入的色区,定义顺序会影响分类结果。

七、使用避坑要点

  1. 色区边界要求:工具判定逻辑仅适配凸四边形,LED行业分光标准均为凸区域,无误判风险;凹四边形、自交多边形会出现判定错误;
  2. 界面表格限制:界面仅展示前50组色坐标用于预览,后台完整读取全部数据运算,不会丢失样品;
  3. 运行依赖说明:源码本地运行时core.py与主程序需放在同一文件夹;打包EXE已内置全部依赖,无需额外配置;
  4. 浮点精度处理:内置1e-12容差,边界上的色坐标不会被误判为不良,适配仪器测量微小波动;
  5. 软件依赖库:Tkinter、Matplotlib、openpyxl、xlrd,标准Python环境可一键pip安装。

八、工具落地价值总结

本工具完整解决LED分光人工分Bin的低效痛点,对比传统人工识图具备四大优势:

  1. 批量极速处理:上千组色坐标一分钟完成全部分类,替代半小时以上人工操作;
  2. 数据零误差:几何算法统一判定标准,消除人眼识别偏差;
  3. 可视化辅助分析:分布图直观呈现样品整体分布,批量色差、偏移问题一眼定位;
  4. 报表自动生成:明细、良率汇总一键导出,省去手工统计、制表工作;
  5. 色区灵活调整:支持缩放、拆分基准色区,适配客户各类细分分光标准。

如果你也常卡在"一批色坐标要判断 Bin"这一步,不想自己搭环境、不想写判定代码,可以私信我聊聊——工具是桌面版,需要的话我发你包和用法。也欢迎关注我,后续还会写更多"把重复活交给软件"的自研小工具实战。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询