<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>机器视觉 on FXIO 技术博客</title><link>https://fxio.site/tags/%E6%9C%BA%E5%99%A8%E8%A7%86%E8%A7%89/</link><description>Recent content in 机器视觉 on FXIO 技术博客</description><generator>Hugo -- 0.157.0</generator><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://fxio.site/tags/%E6%9C%BA%E5%99%A8%E8%A7%86%E8%A7%89/index.xml" rel="self" type="application/rss+xml"/><item><title>识别技术——让机器从"看见"到"读懂"</title><link>https://fxio.site/posts/cv/vision-recognition-from-seeing-to-reading/</link><pubDate>Sat, 04 Jul 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/vision-recognition-from-seeing-to-reading/</guid><description>&lt;blockquote&gt;
&lt;p&gt;机器视觉采集到图像之后，怎么从中提取有意义的信息？识别技术给出了答案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="双十一仓库的条码失明事件"&gt;双十一仓库的条码失明事件&lt;/h2&gt;
&lt;p&gt;想象一下这个场景：双十一仓库高峰期，传送带上每秒飞过上百个包裹。你设计的条码识别系统突然大批量&amp;quot;失明&amp;quot;——不是算法不对，而是条码印得太浅、包裹朝向随机、曲面包装拉伸变形。客户在电话那头吼：&amp;ldquo;你们的系统废了！&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这是工业视觉工程师的日常。&lt;strong&gt;识别不是一个算法问题，而是一个工程问题&lt;/strong&gt;。条形码识别、二维码识别、几何识别、大豆检测——用四个真实场景告诉我们：让机器&amp;quot;读懂&amp;quot;图像，远比&amp;quot;看见&amp;quot;它难得多。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="条形码识别工业世界的基础语言"&gt;条形码识别：工业世界的基础语言&lt;/h2&gt;
&lt;p&gt;条形码是工业自动化的&amp;quot;老前辈&amp;quot;，从超市收银到物流分拣，无处不在。但你以为识别条码就是&amp;quot;扫一下&amp;quot;？太天真了。&lt;/p&gt;
&lt;p&gt;课程用 DobotVisionStudio 搭建了一个&lt;strong&gt;食品包装盒识别系统&lt;/strong&gt;，流程是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;图像采集&lt;/strong&gt; → 摄像头拍下包装盒&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;快速匹配&lt;/strong&gt; → 用模板定位条码区域&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仿射变换&lt;/strong&gt; → 校正角度和位置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字符识别&lt;/strong&gt; → 读取包装上的文字信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;条码识别&lt;/strong&gt; → 解码条形码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脚本判断&lt;/strong&gt; → 对比字符与条码，判断是否匹配&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;听起来顺理成章，但坑在细节里。课程特别提到：&lt;strong&gt;有时候条形码根本识别不出来&lt;/strong&gt;。为什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;静区宽度不够&lt;/strong&gt;：条码两侧的空白区域被压缩，解码器找不到起始位置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;码制没选对&lt;/strong&gt;：系统默认只识别常见码制，如果遇到特殊编码，需要手动开启&amp;quot;所有码&amp;quot;选项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定位不准&lt;/strong&gt;：用快速匹配做模板时，矩形掩膜画得太小或太大都会翻车。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决方案：&lt;strong&gt;调参数 + 试错&lt;/strong&gt;。把静区宽度逐步调大，把码制选项全开，把匹配框精调到刚好包含条码。这没有银弹，只有耐心。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;经验之谈&lt;/strong&gt;：条码识别的工程难度往往不在算法，而在&amp;quot;最后一公里&amp;quot;——印刷质量、安装角度、光照条件。这些才是现场调试工程师的噩梦。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="二维码识别比条码多一个维度"&gt;二维码识别：比条码多一个维度&lt;/h2&gt;
&lt;p&gt;二维码识别的流程和条形码类似，但多了一个关键能力：&lt;strong&gt;抗变形&lt;/strong&gt;。二维码可以贴在曲面、歪斜、甚至部分遮挡的物体上，依然能解码——靠的是 Reed-Solomon 纠错算法。&lt;/p&gt;
&lt;p&gt;课程演示的完整流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;快速匹配&lt;/strong&gt; → 定位二维码区域（创建模板 → 矩形掩膜 → 编辑模板）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仿射变换&lt;/strong&gt; → 校正透视变形（继承方式选&amp;quot;按区域&amp;quot;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二维码识别&lt;/strong&gt; → 绘制识别区域，解码内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;脚本编写&lt;/strong&gt; → 把结果存入变量，做后续逻辑判断&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里有个有趣的工程细节：&lt;strong&gt;仿射变换的继承方式选&amp;quot;按区域&amp;quot;而不是&amp;quot;按图像&amp;quot;&lt;/strong&gt;。为什么？因为二维码可能出现在画面的任何位置，你需要让变换矩阵跟着定位结果走，而不是固定死。&lt;/p&gt;
&lt;p&gt;课程还展示了脚本编写——把识别结果存入 &lt;code&gt;strEWMSB&lt;/code&gt; 变量，输出 &lt;code&gt;RESULT&lt;/code&gt; 作为判断依据。这体现了工业视觉的核心思想：&lt;strong&gt;识别只是第一步，判断和决策才是目的&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="几何识别从像素到精确测量"&gt;几何识别：从像素到精确测量&lt;/h2&gt;
&lt;p&gt;如果说条码/二维码解决的是&amp;quot;读&amp;quot;的问题，几何识别解决的是&amp;quot;量&amp;quot;的问题。&lt;/p&gt;
&lt;p&gt;课程用 DobotVisionStudio 的测量工具，演示了如何测量：&lt;/p&gt;</description></item><item><title>机器视觉入门——光、镜头、相机，以及为什么选错一个全白搭</title><link>https://fxio.site/posts/cv/machine-vision-basics/</link><pubDate>Sat, 27 Jun 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/machine-vision-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;工业产线上，机器怎么&amp;quot;看&amp;quot;东西？答案不在算法里，在硬件选型的每一个细节里。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="开场一个真实的翻车现场"&gt;开场：一个真实的翻车现场&lt;/h2&gt;
&lt;p&gt;去年帮一个朋友调一条五金件检测线。缺陷检测算法在实验室跑得好好的，一上产线就各种误报。排查了半天，最后发现原因特别朴素——&lt;strong&gt;光源选小了&lt;/strong&gt;。光源有效发光面积没覆盖住整个视野，画面中间亮、两边暗，边缘的工件特征被算法当成了缺陷。&lt;/p&gt;
&lt;p&gt;一个两千块的光源问题，浪费了三天调算法。&lt;/p&gt;
&lt;p&gt;这就是机器视觉的第一课：&lt;strong&gt;它是一个链式系统，光→镜头→相机→算法，环环相扣。任何一个环节的短板都会被后续环节放大。&lt;/strong&gt; 算法再牛，喂给它的图像质量不行，结果就是垃圾进、垃圾出。&lt;/p&gt;
&lt;p&gt;下面记录这条链路的学习要点。&lt;/p&gt;
&lt;h2 id="硬件三件套光源镜头相机"&gt;硬件三件套：光源、镜头、相机&lt;/h2&gt;
&lt;h3 id="光源最容易被低估的环节"&gt;光源：最容易被低估的环节&lt;/h3&gt;
&lt;p&gt;很多工程师（包括以前的我）觉得光源就是&amp;quot;把东西照亮&amp;quot;。错。光源的核心目标是&lt;strong&gt;让目标特征和背景之间的对比度最大化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;打个比方：你要在白纸上检测白色划痕，用白光正面打，什么都看不到。但换成低角度的条形光源，光线擦过表面，划痕边缘产生反射，背景是暗的，划痕是亮的——缺陷就&amp;quot;跳&amp;quot;出来了。&lt;/p&gt;
&lt;p&gt;课程里讲了五六种常见光源，我按使用频率排个序：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;环形光源&lt;/strong&gt;：最通用，360° 均匀照明，适合大多数表面检测。如果不知道用什么，先试环形光。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;条形光源&lt;/strong&gt;：方向性强，擅长消除镜面反光。检测金属平面字符时，条形光比环形光好用得多——环形光容易在光滑表面打出大面积光晕。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;背光源&lt;/strong&gt;：从底部打光，物体轮廓变成剪影。做尺寸测量、孔径检测时的标配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同轴光源&lt;/strong&gt;：内置分光镜，光线垂直照射。专门对付高反光的镜面、抛光金属，能消除凹凸产生的阴影。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;穹顶光源&lt;/strong&gt;：半球形漫射，360° 无死角。检测曲面工件（比如球形外壳）时的首选，普通光源打上去全是反光斑点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有一个容易忽略的点：&lt;strong&gt;光源颜色选择遵循互补色原理&lt;/strong&gt;。红光照绿色物体，黑白相机下物体是黑色的；红光照红色物体，物体是白色的。想让红色字符在白色背景上更突出？用蓝色光源——红色字符吸收蓝光变黑，白色背景反射蓝光变亮，对比度直接拉满。&lt;/p&gt;
&lt;h3 id="镜头焦距只是起点"&gt;镜头：焦距只是起点&lt;/h3&gt;
&lt;p&gt;镜头选型的第一步是算焦距，公式不复杂：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;焦距 = 工作距离 × 芯片尺寸 / 视场
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但焦距选对了只是及格线。真正容易踩坑的是两个参数：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;景深&lt;/strong&gt;——简单理解就是&amp;quot;前后多大范围内的东西是清楚的&amp;quot;。景深越小，对焦平面以外的物体就越模糊。影响景深的三个因素：光圈越大景深越小，焦距越长景深越小，工作距离越近景深越小。做尺寸测量时，如果工件有厚度（比如一个盒子），景深不够就会出现&amp;quot;上面清楚、下面模糊&amp;quot;的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;畸变&lt;/strong&gt;——普通定焦镜头天然有畸变，短焦是桶形畸变（像被捏扁了），长焦是枕形畸变（像被拉长了）。人眼看不出小于 2% 的畸变，但做精密测量时，边缘 1mm 的畸变就是实打实的误差。这时候就得上&lt;strong&gt;远心镜头&lt;/strong&gt;——它的特点是&amp;quot;无论物体离镜头远近，在图像里的大小不变&amp;quot;。类比一下：普通镜头像人眼看东西，近大远小；远心镜头像用尺子量，不管尺子放多远，读数不变。&lt;/p&gt;
&lt;p&gt;另外注意镜头和相机的接口匹配：C 口后截距 17.5mm，CS 口 12.5mm，差 5mm。CS 口相机接 C 口镜头要加 5mm 接圈，反过来不行。接口不匹配，图像就是糊的。&lt;/p&gt;
&lt;h3 id="相机一个公式定成败"&gt;相机：一个公式定成败&lt;/h3&gt;
&lt;p&gt;相机选型的核心公式：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;像素精度 = 视场 / 分辨率
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;意思是：图像上一个像素代表实际空间中多大的尺寸。&lt;/p&gt;
&lt;p&gt;举个例子：用 500 万像素相机（2592×1944）拍 80mm 宽的视野，像素精度 = 80 / 2592 ≈ 0.031 mm/pixel。也就是说图像里一个像素对应实际 0.031mm。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;经验值：要检测的最小特征，至少要在图像中占 2~3 个像素。&lt;/strong&gt; 如果你要检测 0.1mm 的缺陷，像素精度至少要到 0.03~0.05mm/pixel，否则缺陷在图像里就一两个模糊的点，算法根本抓不住。&lt;/p&gt;</description></item></channel></rss>