文本图像在图像处理中也是占用了一个比较大的空间,市面上也有着不少这方面的专业软件,其中有一个比较重要的过程就是对文本图像背景的纯化,因为背景复杂了后,对于后续的识别,包括二值化都会带来不利的影响。 本文介绍三种不同的背景纯化方式。
第一种方式: 借用Photoshop的一个算法,名字叫影印,英文名是PhotoCopy,这个算法的效果如下:
这里借用了一个网络上的图片,细节和暗度的参数分别为5和10,执行完成后进行了反色操作。
这个算法的核心还是高斯模糊,细节参数就是高斯模糊的半径。
第二个算法:使用了一个网友的提供的算法,就叫他背景移除算法吧。
具体的可以在https://www.cnblogs.com/jsxyhelu这个大侠的博客中查找。
这个算法的基础其实也是高斯模糊,一个简答的代码如下所示:
for (int Y = 0; Y < Height * Width; Y++) { if (Blur[Y] != 0) Dest[Y] = IM_ClampToByte(Src[Y] * 255 / Blur[Y]); }
第三个算法: 我们姑且叫他背景纯化吧。
这个算法呢和Sauvola二值化有一定的联系,我们知道Sauvola二值化一直是局部阈值方法的标杆,他的核心是计算某个局部区域的的均值和方差,这里也是把图像先分块,然后按照某种原则,计算每个块内的均值和方差,接着呢对每个像素位置使用均布均值和方差按照一定的原则确定其最后的显示值,当然,由于只计算了块内的方差和均值,因此,每个像素处的均值和方差可以用类似CLAHE算法里的方式进行插值获取,或者已经有的数据进行曲线拟合后在计算得到,前者速度快,后者更精确。
关于这个的原理我没有弄清楚,但是确实效果可以,注意他其实并没有二值化的,实测这个算法效果还是不错的。
原 图 PhotoCopy的效果
背景去除算法的效果 背景纯化算法的效果
上面这个结果,应该说后面两个效果都还不错的。
我们在看一个图,区别就更为明显了。
原 图 PhotoCopy的效果
背景去除算法的效果 背景纯化算法的效果
可以看出,背景去除那个算法那原生的可以保留彩色的部分,其他的就不行,但是也可以适当的修改使得算法部分能得以保留。
但是,PhotoCopy算法还可以用在很多其他的场合,而后面的两个算法如果用于普通的图像,效果就有点过了。
我现在一直在改进最后一个算法,觉得他很有前景。
在我的SSE Demo里也集成了上述三个算法,分别位于Styleize --> PhotoCopy、Detection->Auxliary->RemoveBackGround以及Detection->Auxliary->PureGround菜单下。
PureGround还有一些其他的选项,如下图所示:
可在此处下载Demo: https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar