这是关于使用 IRIS(红外,原位)技术无损检测芯片的系列文章的最后一篇。包含之前文章的链接:IRIS 项目概述、方法论、光源电子、精细聚焦台、光源机制、机器控制与聚焦软件。
本文介绍用于将控制软件生成的小图像拼接成大图像的软件。IRIS 机器用 10 倍物镜生成的单张图像对应 0.8mm 宽的硅片区域,大多数芯片更大,需拼接系列重叠图像。
未对齐的图像瓷砖看起来像这样,拼接后变成这样。问题是显微镜定位有误差,需依赖计算方法去除误差偏移。起初以为用普通全景图像拼接程序即可,但这些程序在芯片图像上效果不佳,因为芯片特征多为大的重复阵列,算法不适合。所以作者自己编写了拼接算法,其数据集有几百张约 2.8MiB 的图像,总大小几 GB。文件名编码了在芯片上的理论绝对位置等元数据。
创建了“Schema”对象来整理所有文件名及跟踪数据变换等,序列化到 JSON 文件“db.json”。程序初始状态显示所有图像预览及控制按钮等,启动时只将缩略图读入内存,可选缓存大图像。
自动拼接流程采用渐进式拼接,从左上角开始,先手动沿芯片左右边缘拼接,之后算法开始运行,每个瓷砖根据显微镜命令值猜测位置,寻找重叠区域最大的瓷砖进行拼接。通过模板匹配找到最佳模板进行对齐,模板匹配在高斯滤波、拉普拉斯变换后的图像上进行,以减少噪声等影响,这是计算密集型步骤,通过多线程加速。
模板匹配后进行最小平方误差(MSE)清理,以获得更精确的对齐,MSE 搜索在高斯滤波拉普拉斯视图的图像上进行,分粗搜索和细搜索。
拼接完成后进行基本的合理性检查,若有问题可手动调整。还考虑了潜在的硬件改进,如更改 Jubilee 的皮带布局以减少“走偏”。
为改善拼接效果,实现了边缘融合算法,但受限于 OpenCV 的 MultiBandBlender 例程的内存限制。还实现了修补接口,可进行手动调整等操作。所有代码在 github 的 iris-stitcher 仓库中。
这是 IRIS 系列文章的结束,下一步是训练 CNN 分类器进行逻辑细胞识别和门数统计等工作,希望能开发相关 EDA 工具,感谢 NLnet 和 Github 赞助商。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。