学霸的黑科技AR
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第57章 米缸中的老鼠屎

王老师在台上开讲理论,陈星也收回了思绪。

“摄像头部分,其实逻辑上非常简单,应用上也不复杂。”

王老师在黑板上画了一个简易流程图,【提取影像==》处理影像==》逻辑运算==》控制反馈】。

“这提取影像,就是摄像头要干的事情。简答来说就是拍照。”

“处理影像,是CPU里头算法要干的事情。之前和你们说过,小车是根据地上的颜色来确定位置。这处理影像其实就是获取所拍照片的颜色,大家想一下,为什么获取颜色还要单独拎出来说。”

王老师随机抽了一人,那人当即答道,“老师您说过,颜色存在不同的数字格式。有RGB、CMYK、HSV、HEX等。计算机一般来说用的是RGB。那处理影像,就是要把获取到的数据转化为RGB格式的颜色定义。”

“你还有要补充的吗?”

“老师,我没有了。”

“坐下。刚刚这位同学讲的其实就一句话--上厕所要带纸。”

“哈哈~~”来自众人的大笑。

王老师解释道,“我们当然知道颜色要转化为RGB定义,事实上我们此次用的是数字摄像头,获取到的直接就是RGB格式的颜色。所以,很不巧。这位同学想到了上厕所要带纸,但是发现蹲位旁边其实已经帮你备好了纸。”

“你们再想想,为什么看似如此简单的颜色提取逻辑,还要单独拎出来讲。”

最后王老师又想到了陈星,虽然陈星很不想出风头。

“因为颜色不是一致的。”

“对啦。”王老师首肯道。

随后王老师对着其他人,“你们呐,被高中物理化学课上的那些理想情况给附加定势思维了。什么绝对光滑平面、什么匀强磁场、什么绝对纯净的物质。所以自然而然以为同一种颜色就是一个数值。”

“可是自然界里头哪来这种理想情况。就指甲盖大小的一块同颜色区域,对应的RGB颜色数据也是很多种的。”

忽然有人插话,陈星看去,原来是王哲。

“老师,既然是同样的颜色区域,那再怎么有变化,绿色也不可能变成红色。那我们在判断的时候,以一个范围数值,而不是具体的某个值,这不就行了。”

“不错,王哲同学进步了。”

陈星心内冷笑,他在等王老师的但是。

很快,“但是”就来了。

“但是,谁说了同样的颜色区域就不会变化很大。”

王哲当即就急了,“如果变化很大,那就是场地安排的有问题。假如绿色看起来都像红色了,那就该被当成红色。”

“你再想想有没有其它的特殊情况。”王老师循循善诱道。

王哲未及多想,“我认为,就该用检测到的实际颜色,施加一个合理误差范围就可以了。”

“陈星呢,有什么看法。”

陈星如今不介意打脸王哲,反正对方已经看自己不顺眼了。

陈星站起身后没有正面回答,而是打了个比方。“假如一缸米中有几粒老鼠屎。米粒和老鼠屎泾渭分明,根本无法通过合理误差范围来区别。因为米就是米,老鼠屎就是老鼠屎。”

“我们唯一能做的,是把老鼠屎挑出来,而不是自欺欺人把老鼠屎当成米一块吃下去。”

“哈哈哈~~~”这回的笑声响彻了这间实验室。

王哲一脸氤氲。他有种被陈星比作老鼠屎的感觉。他此刻感受到了来自人格和智商的双重侮辱。虽然陈星不过就是打了极为恰当的比喻。

“我们在讨论问题,陈星你怎么能当堂开这种下三滥的玩笑。”王哲当即发难。

“这不是下三滥的玩笑,听不懂是你自己的问题。”这是陈星第一次当面回怼王哲。他不打算再留情面了。

“王哲同学,你坐下。”王老师打了圆场,“陈星不是在开玩笑,他的比喻很好。”

可看王哲的表情,显然他还是没有听懂陈星话里的意思。

王老师为了不激化矛盾,也就不再让大家继续回答,转而自己亲自解释。

“刚刚王哲同学非常好,”王老师先安抚了王哲,“他已经想到了要考虑误差。”

“可是呢,现实中除了误差以外,还有种可能,那就是‘掺杂’。你们设想下,如果一片绿色的地面上真的有几个红色的小区域。哪怕真的是因为质量问题导致的,那你们能在竞赛场上指责主办方吗。”

“再者,如果有其它的队伍解决了这个问题呢,如果他们的小车没有受到干扰呢。大片的杂色区域肯定是有问题的,可是小块状的杂色区域是合理的。”

“这就好比陈星同学刚刚的比喻:米缸里掺杂了老鼠屎。由于老鼠屎和米粒根本不存在误差,根本就是两个不同的东西,所以靠误差计算是无法排除的。我们只能采取过滤,就是把老鼠屎挑出来。”

“这下大家明白了吧。”

众人这才恍然大悟。

“当然啊,王哲同学说的误差计算,肯定也是要用到的。需要结合误差与剔除计算,这才是图像处理要被单独拿出来讲的原因所在。”

话是这么说,可显然陈星的考虑更近一层,只是大家心照不宣。

随后王老师继续讲述具体的处理方法。

“为了剔除杂色。我们可以采用邻近区域计算。。。”

由于众人感受到王哲和陈星间的火药味,王老师也就不打算再让大家发散思维,而是选择了自己讲完全程。不然他还是很想让陈星来讲的。这样做的初衷本就是为了让王哲他们见识到自己的差距。可没想到差距带来了矛盾。

“邻近区域计算。就是在小车检测到一个跳变极大的颜色数值时,以当前坐标为基点,小车绕行一小圈,检测一下基点周围区域的颜色。然后计算各类颜色的比例,直接选取比例最大的那个颜色即可。”

“这个概念呢,类似于数字图像处理中的‘模糊’概念。其实就是让一个区域内的像素点全部来投票,谁声音大就听谁的。”

“当然,在投票之前,肯定也要先用到误差计算来对所有像素点的颜色做归类。就是先把差不多的颜色归纳为一类。这个就类似于提前先选举产生一位代表。”

“否则的话,由于颜色差异的客官存在,就会造成人人都来参加选举,那就得乱成一锅粥。不但逻辑上不合理,对计算资源也是极大的浪费。”

“逻辑运算完成后呢,自然就是得出控制逻辑反馈,然后控制小车继续前行。”

“道理不难吧,我们来讲下代码细节。”

王老师没有再让陈星发言,于是接下来的可成都成了他的自问自答独角戏。

“你们知道摄像头为什么采用的是串口。为什么不用I2C。I2C和串口有什么区别知道吗?”

“什么是全双工,什么是半双工?”

“波特率是什么。为什么串口有波特率,为什么I2C没有波特率。为什么I2C会有时钟线。”

“设计者们为什么要发明出同步和异步通信机制?”

为什么,为什么,一堆的为什么无人回答。后来王老师也就不问了,干脆直接讲代码怎么写了。

于是就出现了让陈星哭笑不得的一幕--高考式写代码。那帮人在不理解代码底层逻辑,以及硬件原理的情况下,在对着代码做笔记。

下课后,陈星特地跑去和王老师打了个招呼。“老师,我走了。”

王老师微微摇头苦笑,对着陈星摆了摆手,什么也没说。

陈星是被王老师破例免费拉进来的,其它人则都是收费的。王老师也不好让免费的陈星过于出风头,可那帮付费的又实在带不动。。。