想说就说
繁忙的大三学期开始了,这一年将会有很多个课程project要做,包括物联网的,安卓的,Web网页开发,传感器实验,云计算,数据库,人工智能等等,趁国庆这个假期,我想在CSDN博客开始我的整理,一来是对这些project开发过程的记录,二来是以后找工作面试可以回头看看,复习复习,(甚至可以跟HR装逼说想了解更多,就去看我的博客吧hh),三来也是觉得不要荒废了这个博客嘛。
好了,废话不多说。这个系列的博客记录的是我做物联网导论实验课project的过程,其实这些都是我们平常的作业,估计最后的project成品就是这样一步步累积起来的,暂时我也不太清楚最后能实现什么,但是走一步就记录一步吧。
二维码的二值化
第一次作业是做二维码的二值化,或者说是图像的二值化。为什么是二维码呢?因为我们后边要做二维码的识别(但我觉得不会整个过程都让我们实现),其关键的第一步就是二维码的二值化,直观来讲,就是将二维码图案本身与背景分割开来,并将图像的像素是二维码黑色部分置为0,其余部分置为1(从颜色上讲,也就是白色),具体操作步骤如下:
- 将图像转化为灰度图
- 对灰度图进行二值化
其中难点就在于二值化了。上课时,TA提了一种算法,称为大津算法(OTSU),其思想是:找到一个阈值,将0~255的像素分成黑白两部分,并使每个点的原灰度值到此阈值的距离的方差最小。
原理很简单,我就大概说一下计算过程。
设前景像素(二维码黑色部分)所占比例为 w0 ,期望为 u0 ,背景像素所占比例为 w1 ,期望为 u1 ,那么有整个图像灰度值的期望 u=w0∗u0+w1∗u1 .
设那个阈值为