ScanTailor与ComicEnhancerPro的区别
作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:https://www.cnblogs.com/stronghorse/
在我发了《ScanTailor版本简介》后, 很快就有小伙伴向我灵魂发问:看你对ST这么熟,为什么还要费劲去开发CEP,难道ST它不香吗?
我仔细想了一天,最终的回答是:ST当然香,但它真心不是我的菜。我认为ST和CEP还是有区别的,其中最根本的区别是二者针对的目标人群不同:
- ST是给傻瓜用的,所以不论是专家还是傻瓜,用ST处理得到的结果都差不多。
- CEP是给专家用的,所以傻瓜用CEP得到的就是傻瓜的结果,专家用CEP得到的就是专家的结果。
以扫描电子书处理中最常见的“彩色、灰度图像转纯黑白”(二值化)为例,ST中的处理包括:
- 照度均衡(Normalize Illumination),目的是增亮页面暗部,让页面没有明显的暗区。
- 按照Otsu算法求出全局阀值,以此阀值对全图做二值化。
- 去斑点(Despeckling),用户可以选择斑点级别。
- 用形态学模型去毛刺。
整个过程中用户只需要在界面中选择去斑级别,不想选就直接用ST提供的也行,其他的全部都是内部自动化操作,不需要与用户进行交互。看起来是不是很简单?But,天下哪有白吃的午餐:
- 如果是对平板扫描仪扫描的结果进行处理,其实基本不需要进行照度均衡,除非是佷厚书的中缝部分。在不需要均衡的情况下强行均衡,只是在浪费时间。
- 如果是对手机拍摄的图像进行处理,光照不均匀是必然的,光照均匀是偶然的,不进行照度均衡直接用Otsu二值化将是一场灾难。问题是ST的照度均衡能力是有限的,经常会在 均衡后还存在残留的背景色,或者干脆就把文字部分也均衡得发白,这些都会影响全局二值化效果。
- Otsu算法是全局算法,更注重全图的均衡性,局部结果好不好全看命,所以我用ST处理出来的中文文字页,大面上看上去(缩图看)确实是那么回事,但细看中文笔画就经常性的觉得别扭,还没法调整。
- ST中缺乏锐化功能,不能对高倍放大所带来的图像模糊进行抑制,所以图像最大只允许放大到200%。但现在显示器都进入4k时代了,处理以前的低分辨率图像时高倍放大是刚需。
而在CEP中,简单的二值化可以玩得很花哨,前提是你会玩:
- 在二值化之前,除了照度均衡外,还可以调整通道、色阶、曲线、Gamma等等,让图像先变得尽量黑白分明,然后再去二值化。照度均衡留下的背景色经过通道混合、曲线中的强力去背景等,基本上都能去掉。
- 二值化算法缺省是Otsu,但那是给啥也不知道的新手用的,老手可以用wolf窗口尺寸控制笔画粗细,还可以结合锐化、柔化(高斯模糊)对笔画清晰度、光滑度进行调节,并且避免粘连。
- 如果想对二值化追求到极致,比如在黑白激光或喷墨打印机上打印灰度级别丰富的图像,还可以选择不同的抖动算法。
- 去斑、去毛刺也是可以的,但要不要做就看你选不选。
- 低分辨率图像直接二值化纯属耍流氓,必须要先放大再二值化才是真爱。在CEP的“切边”对话框里可以实现200%以上的高倍放大,然后再用高阶锐化破解模糊。
觉得我在胡说八道吹牛逼的,欢迎用《“伪·高清”制作二例》中的两个例子来打脸,看看你用ST能把这两个图片处理得比CEP强多少:https://www.cnblogs.com/stronghorse/p/9425046.html
“给傻瓜用”和“给专家用”的区别,除了体现在像上面说的提供给用户的选项数量不同之外,还体现在设计思想上有一个根本性的区别:
- ST执行的是彻底的傻瓜化操作,因此用户不选的操作均默认采用ST内部的自动操作。比如说你开始用ST处理某页图像,前面啥也不选直接点“Margins”,则ST会自动把Fix Orientation、Split Pages、Deskew、Select Content在内部全部跑一遍,如果结果正常就大省事,不然就需要再返回前面去逐项修正。
- CEP则是彻底的“不选就不动”,任何参数你不去选它就没个卵用。所以新手用CEP上来就是满脸懵,完全看不到什么结果。
另外如果深入到源代码内部,我觉得CEP和ST还有一点小小的区别:貌似ST的作者对性能不是很在意,一些经典算法早就有公认的性能优化途径,但ST的源代码就是那么“经典”,从ST到STE都完全没有要优化的意思。而CEP一直在持续追求性能的优化,从v6.00开始甚至采用基于OpenMP的并行处理来提速。
总之,我认为具体究竟选ST还是选CEP,主要看你自己在目标期望值与学习成本之间如何决策。至于我自己,在早期CEP功能比较弱的时候,我确实用过ST,但总觉得它处理后的中文文字笔画看起来不符合我的审美观 、价值观、人生观(简称“毁三观”)。于是咬着牙努力升级CEP,就变成了先用ST处理成灰度图像,然后再用CEP处理成纯黑白。升级到现在则再也不用ST,只用CEP。尤其是用了基于OpenMP的多线程版CEP 6以后再用单线程版的ST,真心有一种想死的感觉。
(完)