随笔分类 - QR码
摘要:昨天要做一个最优二值化,原QR图如下:对其做最优二值化,即在其直方图两个灰度波峰之间的的波谷用来做二值化的阈值。也就是下图中所示的小红点。在连续变量中可以用求导的方式来获得波峰和波谷的位置,但是对于离散变量,要如何求这个小红点的位置捏?方法一:可以设计这样一个检测结构用这个结构对直方图上的灰度1~255进行检测,如果左侧的灰度值高于检测点的灰度值,且右侧的灰度值也高于检测点的灰度值。那么就说明检测点所处的位置就是某一个波谷了。但是,这样又出现了另一个问题,直方图波形中的毛刺会导致很多“虚波谷”的出现。所以,在使用上述结构检测之前,要先对直方图波形进行平滑处理。直方图的平滑处理可以考虑这两种方法
阅读全文
摘要:前面介绍了如何用频率滤波的方法进行直方图平滑,现在尝试用插值的方法做平滑。设计思路:(1)设定步长step(2)对于直方图上的某点x,按照如下公式计算它平滑后的值tempsmooth函数的代码如下:View Code private int[] smooth(int[] arr, int step) { int start = step - step/2; int end = 256 - step/2 ; double temp = 0; int[] res = new int[256]; ...
阅读全文
摘要:原直方图:进行一维离散余弦变换,公式如下:参考代码如下:View Code private int[] fourier() { int[] ft = new int[256]; int N = 256; double Cu = 1; for(int u = 0; u < N; u++){ if(u == 0){ Cu = 1.0/Math.Sqrt(2); } double sum...
阅读全文
摘要:未经过旋转调整的图片还是不能正确提取module矩阵。 因为只剩13天了,所以打算先做module矩阵解码的代码。等解码代码搞定后,再优化识别的代码。还要复习嵌入式有木有,要是能一分钟掰成两分钟花就好了。fighting!!!
阅读全文
摘要:现在能分割回形字符后,不知道该怎么识别它。明天的任务是搞定识别回形符。
阅读全文
摘要:QR码的位置检测符由三个同心正方形叠加而成。分别为:7*7 modules的黑色正方形;5*5 modules的白色正方形 ; 3*3modules的黑色正方形。三个用于定位检测的“回”形符号应该优先被编码,好让QR 符号中尽量不出现与其相似的符号。这三个“回”形符号可以帮助快速的在视野中定位QR码以及确定其方向。
阅读全文
摘要:在QR Code的ISO标准中给出了QR Code的结构,如下图所示:观察该结构图可以发现:a)一个QR 符号由两部分构成:Function Patterns 和 Encoding Region。前者是与识别相关,后者是与信息相关。b)QR Code的function patterns以及Format 信息、version 信息都是呈对角线对称的。format信息和version信息都紧紧围绕在检测标识的周围,及“回”字的周围。以下将依次介绍各个部分的大致功能:1、Quiet Zone是QR Symbol四周的空白区域,宽度至少为4个module以上。2、Position Detection
阅读全文