摘要: 昨天要做一个最优二值化,原QR图如下:对其做最优二值化,即在其直方图两个灰度波峰之间的的波谷用来做二值化的阈值。也就是下图中所示的小红点。在连续变量中可以用求导的方式来获得波峰和波谷的位置,但是对于离散变量,要如何求这个小红点的位置捏?方法一:可以设计这样一个检测结构用这个结构对直方图上的灰度1~255进行检测,如果左侧的灰度值高于检测点的灰度值,且右侧的灰度值也高于检测点的灰度值。那么就说明检测点所处的位置就是某一个波谷了。但是,这样又出现了另一个问题,直方图波形中的毛刺会导致很多“虚波谷”的出现。所以,在使用上述结构检测之前,要先对直方图波形进行平滑处理。直方图的平滑处理可以考虑这两种方法 阅读全文
posted @ 2012-06-11 17:01 elar 阅读(2399) 评论(2) 推荐(0) 编辑
摘要: 前面介绍了如何用频率滤波的方法进行直方图平滑,现在尝试用插值的方法做平滑。设计思路:(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]; ... 阅读全文
posted @ 2012-06-11 15:26 elar 阅读(6166) 评论(3) 推荐(0) 编辑
摘要: 原直方图:进行一维离散余弦变换,公式如下:参考代码如下: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... 阅读全文
posted @ 2012-06-11 10:16 elar 阅读(3124) 评论(1) 推荐(1) 编辑