图像算法-图像的预处理

图像算法能够能够取得比较好的效果十分依赖预处理做的好坏,这里介绍几种图像预处理的算法、

二值化

二值化是指将像素点的灰度值设置为0或者255的过程,使图像呈现明显的黑白效果。一方面可以减少数据的维度,另一方面可以通过排除原图中噪声带来的干扰,凸显轮廓信息,这种方法在OCR(文字识别)的任务中尤为重要。

全局阈值法

该方法是对输入的图形中所有的像素点统一进行固定阈值的。然后重构整个图像。
图下图的形式。
07E0D26F-C6A6-4F69-8F0A-F1072D513377
上图是原始的图片,经过不同阈值的二值化后,如下图显示。
911FEDEB-27CC-4028-B389-A54207E98976

局部阈值方法

相对于全局的阈值方法,局部阈值是指阈值随着环境的变化而变化,从而更大限度的提升灵活性。

自适应阈值方法

自适应阈值方法的主要思想是以一个像素为中心点设置s * s的滑动窗口。每次扫描对窗口内的像素求均值,设置为局部阈值。凡是大于这个阈值的就是255,否则就是0.

Niblack算法

Niblack算法同样是根据窗口内的像素值进行局部阈值的计算,不同的是Niblack不仅考虑区域内的像素的均值和方差,还考虑到用一个设定好的修正系数k来决定影响程度。

T(x,y)=m(x,y)+ks(s,y)T(x, y)=m(x, y)+ks(s,y)

其中T(x, y)是阈值, m(x, y)和s(x, y)表示均值和方差。与 m(x, y)相近的像素点被判定为背景,否则是前景。相近程度由k来做决定,这样就能保证算法的灵活性。

Niblack问题

Niblack算法的缺陷一方面是在r * r的滑窗中会导致边界区域r12\frac{r-1}{2}的像素范围内无法求阈值。
另一方面是在于如果r * r滑窗如果全是背景,那么该算法必然会使一部分像素为前景,形成伪噪声。因此r的选择十分关键,如果窗口太小不能抑制噪声,太大细节丢失。

Sauvola算法

Sauvola算法是针对文档二值化处理,在 Niblack算法的基础上进行了改进

T=m[1+k(sR1)]T=m[1+k(\frac{s}{R}-1)]

其中R是标准方差的动态范围,若当前输入的是图像是8位灰度图像,那么R就是128.Sauvola算法在处理光线不均匀或者染色的图像比Niblack算法好很多。因为上面的公式适当的放大了标准差s的作用。

如果我们要处理一份浅色但是有污渍的文档,那么乘以m系数会降低背景区域的阈值的范围,可以有效的减少染色带来的影响。具体效果可以看下图。

9F3BBFFE-BC2E-4901-93FA-9E83E4852F6C

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×