阅读设置

20
18

第515章 专芯专用 (2/6)

他的手指移到第二个方框。

“用滤波降噪,消除单个像素的随机噪声。硬件实现可以用一个3乘3的滑动窗口寄存器。”

他在图上画了一个3乘3的网格。

“像素流

行缓存

3乘3窗口寄存器

排序网络

输出。行缓存需要存储上一行和上两行的像素,每行256个像素,每个8位,共256乘8乘2等于4096位寄存器。”

吕辰听到这里,举起手。

“陈教授,我插一句。”

陈教授停下笔,看着他。

“您用的是均值滤波?”

“对,均值滤波。”

吕辰摇了摇头:“均值滤波需要乘法器。像素值乘系数,再累加,再除法。乘法器在五微米工艺下面积太大,而且速度慢。”

他在自己笔记本上画了一个简图,推到桌子中间。

“我建议用中值滤波。中值滤波只需要比较器,不需要乘法器。九个像素的值,找中间那个。比较器比乘法器简单得多,面积小、速度快。”

陈教授盯着那张图看了几秒。

他没有立刻回答。

会议室里安静了两秒,只有日光灯的嗡嗡声。

然后他忽然笑了一下,很轻,像是在对自己说。

“你说得对。我想复杂了。”

他用笔在图纸上改了一笔,把“均值滤波”划掉,写上“中值滤波”。

“排序网络,九个数找中值,用九个比较器搭成排序网络。纯组合逻辑,一个时钟周期就能输出结果。”

钱兰在旁边插了一句:“九个比较器,面积大概多大?”

陈教授想了想:“按你们标准单元库里的比较器来算,八位的,大概几十个门。九个,加上连线,几百个门。可以接受。”

他在笔记本上记了一笔,然后继续往下讲。

“接下来是对比度增强。”

他在图上画了一个新的方框。

“焊盘是金属的,反光强,灰度值高。背景是陶瓷或者塑料的,反光弱,灰度值低。对比度增强就是让这种差异更明显。硬件实现用查找表。输入8位灰度,输出8位灰度。映射关系预先算好,固化在rom里。”

钱兰立刻接话:“256乘8位的rom,约2048个存储单元。面积很小,没问题。”

陈教授点了点头,手指移到下一个方框。

“最关键的一步,自适应二值化。”

他在方框旁边写了一行字:把灰度图像变成黑白二值图像(0=背景,1=焊盘)。

“为什么不能用固定阈值?因为光照不均匀。芯片中间和边缘的亮度可能不一样,固定阈值会导致中间焊盘能识别、边缘焊盘被漏掉。”

他抬起头,看着三个人。

“所以要用局部自适应阈值。取当前像素周围n乘n区域的灰度均值,以此为阈值。”

他在图上画了一个示意图,一个像素周围围着八个邻居,组成3乘3的区域。

“局部均值的计算不需要乘法器。九个像素的和可以用加法树实现,除以九可以用移位加法近似。”

诸葛彪开口了:“加法树的速度呢?”

“一个时钟周期。”陈教授说,“九个8位数相加,用三级加法树,每级延迟几十纳秒。一兆赫的时钟周期是一微秒,绰绰有余。”

他在纸上算了一下,然后抬起头。