ComicEnhancer Pro:Enhance scaned comics picture by brightness, contrast, gamma correction, resize, sharpen and blur.

作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:老马的原创空间

功能简介
使用说明
密技曝光
    一、IJG vs. IJL
    二、ComicEnhancer vs. Photoshop
    三、JPEG,BMP,GIF, TIFF and PNG
    六、JPEG 2000
鸣谢
附录 版本更新记录

功能简介

多年来我一直是个热心的漫画读者,但现在漫画书的购置成本和储藏成本越来越高,远远超出了我的心理承受能力,所以我只敢收集电子版的漫画。但是由于种种原因,扫描的漫画常常因为纸张薄、纸质差而带有斑点、纸色、背透(纸张背面的图像透过来),或者因为扫描参数设置不当而造成图像灰暗、模糊,看起来实在是太累。

其实这些缺点均可通过数字图像处理技术进行修正,比如要消除最常见的背透现象,只要一个简单的曲线调节即可。但是一张、一张地去编辑图像文件又太累:我曾经花了两天时间 逐页校正我喜欢的一部漫画,校正完后我的眼睛看什么都带灰影,所以最终还是下定决心开发了这个软件:
  (1).能够一次调节指定文件夹及其子文件夹下所有图像文件的亮度、对比度、Gammar校正等,以增强图像质量;
  (2).能够旋转、调节图像尺寸,进行锐化、柔化,真彩转黑白,调节JPEG图像压缩比等;
  (3).调整好的参数设置能够保存、调入,便于重用;
  (4).具有全尺寸的“所见即所得”的效果预览,可以单页调节、保存,也可以成批调节、保存;
  (5).在源图像文件相同、参数设置相同的情况下,转换效果是可重复的。因此可以建立一种新的漫画共享模式:如果某位漫友对网上的某部漫画扫描效果不满意,用ComicEnhancer Pro进行了调整,则他可以将调整所用参数发表在BBS上,其他漫友可以套用这些参数对同一部漫画进行增强,从而大家都能得到满意的漫画。
  (6).能够用减色的方式,将通常JPG格式的黑白漫画转成16级、8级、4级灰度PNG格式,减少文件长度。这个一般只对质量很好的漫画有用,正好用来对付尺寸越来越大的“完美版”漫画。

在后来的开发过程中,为了让预览功能更好用,我又陆续增加了一些图像浏览功能(参见打开图像文件后的“查看”菜单):除了通常的用键盘翻页(逗号/句号或加号/减号)、用键盘移动大图(四个箭头键),和用鼠标拖动大图外,还支持鼠标翻页(双击左键下翻,按住左键单击右键则上翻)。

目前能够输入的图像格式包括JPG、UFO、GIF、BMP、PNG、TIFF、WMF、JPEG 2000(JP2/J2K/JPC)、WEBP,能够输出的图像格式包括JPG和BMP、PNG、TIFF、JP2。其中JPG能输出24位真彩和256级灰度格式;PNG、BMP、TIFF能够输出24位真彩、256色 、128色、64色、32色、16色、8色、4色、2色和256级、128级、64级、32级、16级、8级、4级灰度及纯黑白格式。TIFF单色图像采用CCITT G4压缩,其它采用LZW压缩。JPEG 2000支持24位真彩和256灰度图像,并可通过设置压缩率定量控制输出文件的大小。

如果有本程序不能识别的非标准图像文件,请用ComicsViewer或ACDSee转换成标准JPG或PNG格式,再调用本程序。

注意:

ComicEnhancer Pro是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件支付任何费用,最多是在动漫讨论区看到我发帖子灌水时,进去捧个人场,作为友情回报,或者在年节时发个email问声好(所以叫“友情软件”)。我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用ComicEnahcer Pro的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。如果您能提供更好的数字图像处理算法或源码,或发现程序的bug,欢迎与我联系

使用说明

启动 ComicEnhancer Pro后,显示出主框架窗口,并在下方显示参数调节对话框。用户一般先选“文件->打开”菜单,调入图像文件,然后对参数进行试调节(参数项含义见后),直至满意为止。在打开文件后,用页面浏览键键(参见“查看->页面浏览”菜单项提示)可以在同一个窗口中 浏览相同文件夹下的其它文件。文件的浏览顺序通过“查看->文件显示顺序”菜单项进行设置。这样可以在更大的范围内检查参数的作用效果。图像较大时可以用箭头键移动,也可以按住鼠标左键拖动。双击鼠标左键可以向后翻页,按住左键单击右键则向前翻页。

在参数确定后,选择“文件->成批转换”菜单,即可对图像文件进行批处理:

  1. 在“需增强的漫画”框中,点击“选择”按钮,选择源文件(需处理的漫画文件)所在文件夹,再从“源文件”列表中选择源文件类型。点击“查看文件”按钮可以启动 缺省图像浏览器并打开文件夹中的第一个源文件。如果“包括子文件夹”选项被选中,处理时连源文件夹所含子文件夹下的文件一起处理,否则只处理源文件夹下的文件。
  2. 在“增强后的漫画”框中,点击“选择”按钮,选择目标文件(处理后生成的新文件)的存放文件夹,再从“新文件扩展名”列表中选择目标文件类型。点击“查看文件”按钮可以启动 缺省图像浏览器并打开文件夹中的第一个目标文件。源文件和目标文件如果是同一个文件夹下,处理前会提示用户是否要覆盖源文件。
  3. 如有必要,调节“选项”框中的各个选项(含义见后)。
  4. 如有必要,可以点“选择转换”按钮,先选择几个源文件转换一下,看一下实际转换后的效果。
  5. 所有参数配置好后,点击右上方的“全部转换”按钮开始图像处理。处理过程中底部的进度条会显示当前处理进度,处理完后弹出对话框显示需处理的文件数、成功处理的文件数。如果有文件不能成功处理(不能读或不能写),会提示用户打开处理过程的记录文件,从中可以知道具体哪些文件不能读或写。不能读的原因可能是源文件损坏,或不是标准的文件格式,可以用ACDSee转换一下再重试。不能写的原因可能是因为目标 文件夹不允许写,或磁盘空间不够。
  6. 在点击“全部转换”按钮开始处理后,“全部转换”按钮变成“停止转换”按钮,其它按钮、选项变灰。用户点击“停止转换”按钮可以中断正在进行的处理。
  7. 如果对调整效果比较满意,点击“保存”按钮可以将参数存盘。点击“调入”按钮可以调入以前存盘的参数。点击“恢复”按钮则将参数设置为默认值。如果需要删除某次保存的参数值,点击“调入”按钮,在打开“参数管理”对话框后,选择欲删除的设置,点“删除”按钮。

提示:

  1. 源文件夹最好和目标文件夹不一样,避免覆盖,并且可以反复处理。
  2. 由于各选项的参数值与具体图像情况有关,因此如果一次需要处理的图像很多,最好先从中选择几张进行试调节,参数调试好后再对所有文件进行最终调节,以节省运行时间。
  3. 从1.24版开始,原来的“转换”按钮更改为“全部转换”,即对源文件夹下的所有文件进行转换,适用于参数已确定的情况;新增“选择转换”按钮,允许对选定的(多个)文件进行转换,适用于参数尝试、调整阶段。

参数调节步骤:

  1. 首先是保障纸张方向与阅读方向一致,不一致则选择旋转90度、180度,或镜像、翻转。
  2. 如果图像存在黑边、照度不均匀等问题,应该先进行切边照度修正等,避免后续处理被垃圾部分所影响。
  3. 如果彩色页面明显发白,或因为纸张陈旧而发黄,可以试着选择自动色阶或自动对比度。
  4. 在无偏色的情况下,首选是曲线功能,此功能大致相当于Photoshop的Curve功能,但是内置了几种调节模式。一般先根据图像情况选择其中的某种模式,再对调节点进行调节。
  5. 如果对曲线功能调节效果不满意,则选择“原画面保持不变”模式,改用其它调节方式。一般画面背景透光严重时,可以增加画面对比度
  6. 如果调节后图像整体发白,或文字、边线较模糊、黯淡,可增加Gamma校正值
  7. 如果画面模糊,可以选择锐化选项。如果图像边线、文字比较单薄,有间断,或图像放大后锯齿比较严重,可选择柔化操作。不过这两项操作比较费时间,如果机器不好的话会感觉速度明显变慢。
  8. 如有必要,调节图像缩放比例
  9. 如果看的是黑白漫画,最好将色彩选项置为“黑白漫画”,而不是缺省的“保持原样”,这样可以减轻纸张发黄、发红等造成的背景杂乱。
  10. 如果希望生成的JPG文件更小一点,可以减小JPG质量;如果生成的是JPEG 2000(JP2),则可调节JP2压缩率
  11. 对于黑白漫画,色彩选项选为“256级灰度”可以使生成的文件小一些;如果画面非常干净,也可以选择“16级灰度”、“8级灰度”或“4级灰度”,并选择按PNG格式输出,可以获取最佳压缩比。对于纯文字页面,选“单色”,并选择按TIFF格式输出,可以获取最佳压缩比。如果需要处理的漫画中包含彩色封面,可以勾选“不处理彩色图像文件”选项,以避免损失。
  12. 如果浏览的是纯文字页面(扫描电子书),并且笔画较细影响阅读,可以选择“加粗”、“柔化”选项进行加粗。
  13. 处理过程中可以显示直方图,查看是否处理过头。

参数项的含义:

1. 亮度
范围0~200,100表示亮度不变,小于100则图像变暗,大于100则图像变亮。增加亮度一般可以消除斑点、背透、纸张颜色、印刷时油墨不匀造成的黑印,但是较淡的文字、边线可能会更看不清。 减小亮度可以使白纸变灰,也有人喜欢这样的感觉。

2. 对比度
范围0~200,100表示图像不变,小于100则图像变灰,大于100则图像更加黑白分明,可以解决背景杂乱等问题。

3. 高亮度
范围0~200,100表示高亮区(图像空白区)亮度不变,小于100则高亮区图像变暗,大于100则高亮区图像变亮。所谓“高亮区”,其实是由旁边的“高亮值”定义的。在使用本功能去除背景上的纸色、背透时,如果增加高亮值,可以保护较淡的文字、边线,但是去除效果就会下降;如果减少高亮值,去除效果就会更明显,但可能会误伤 较淡的文字、边线。因此应该优先使用曲线、对比度等调节手段,不行再试这个。

4. 高亮值
定义高亮度区加亮功能的“高亮区”:当象素的亮度值(0~255)大于等于该值时,象素处于高良区,执行加亮操作,否则保持不变。一般来讲,增加此值时,可以保护较淡的文字、边线,但是去除 背景效果就会下降;如果减少此值,去除效果就会更明显,但可能会误伤较淡的文字、边线。

5. 曲线
大致相当于Photoshop的曲线(Curve)功能,专业术语称“对比度延展”。此功能可以综合调节画面对比度和亮度,并且设置了几种典型模式,应该是首选的调节手段,宜勤加练习。

在选择预设模式后,如果对曲线的效果不满意,可以用鼠标拖动曲线上的两个大黑点(控制点)来改变曲线的形状:上方控制点控制图像的明亮区域,如背景上的纸纹,当上方控制点位于灰色45度线之上时,会使亮区更亮,否则更暗;下方控制点控制的是图像上的暗区,如黑色的线条、文字等,当下方控制点位于灰线下方时,暗区更暗,否则更亮。因此:

  • 当两个控制点均位于灰线上方时,对整幅图像具有增亮作用。控制点离灰线越远,亮得越厉害。
  • 当两个控制点均位于灰线下方时,对整幅图像具有增暗作用。控制点离灰线越远,暗得越厉害。
  • 当上方控制点位于灰线之上,而下方控制点位于灰线之下,则白的越白,黑的越黑,因此可以消除背景杂乱:杂乱的背景归属亮区,增亮后就成白色了,而暗区得到了增黑。拖动控制点可以控制增暗、增亮的幅度,即对比度。
  • 当上方控制点位于灰线之下,而下方控制点位于灰线之上,则亮区、暗区都往中间灰度靠拢,整幅图像的对比度降低,看起来灰蒙蒙的。处理扫描图像时一般不会这么玩,处理人像照片时偶尔会有人这么干,以掩饰人物皮肤上的一些缺陷。

如果单纯靠曲线解决不了“背景杂乱”问题,可以试试“曲线”界面下方的两个强力去背景选项,通常只需将“画面”条往右拉,即可解决纸张发黄、背景杂乱等。不过这个选项效果太强烈,建议慎用。 两个选项的含义:

  • 画面:滑动条上的游标位于左侧时,整幅图像发暗;游标越往右去,图像越黑白分明。
  • 背景:游标越往右,背景越明显。通常保持在最左侧就好。

6. Gamma校正
范围0~200,100表示图像不变,小于100则图像变白,大于100则图像变黑,有助于解决因增加亮度、对比度、高亮度等而造成的画面发白,并能使模糊、黯淡的文字、边线变得更坚实,当然如果图面上有麻点也会变得更显眼。

7. 尺寸缩放
范围0~200,100表示图像尺寸不变,小于100则输出图像变小,但图像可能会更清晰(致密);大于100则输出图像变大,但可能会更模糊,需采用锐化等操作进行弥补。

8. JPG质量
范围0~100,此值越低表示存盘后的JPG图像质量越差,但文件长度更小;此值越高表示存盘后的质量越好,但文件长度更大。

9. JP2压缩
即JP2文件的压缩率,范围0~100,可以用该值定量控制生成的JP2文件的大小:
最终JP2文件字节数 ≈ 图像像素宽度×图像像素高度×JP2压缩率÷100
当然天下没有白吃的午餐,文件越小,质量越差。不过即使压缩率为100%,也不是无损压缩。

10. 切边
从4.00版开始,“切边”包含了排版功能,因此成为本软件最复杂的一个界面 ,所以在界面上特意放了一个“帮助”按钮——亲,这可是免费周到的贴心服务哦!

排版的概念是这样的:整个页面首先是白纸一张,然后页面按照页边距往内收缩,就是版心。把内容框灌进版心,就完成了排版。当然这个“灌”包括了对齐、缩放/裁剪等过程。所以,首先是要得到包含全部有效内容但不含白边的内容框,然后再设置页面尺寸、边距、对齐方式等,剩下的就由软件搞定。

界面中的左侧选区是针对内容框选取的:

  • 首先选择是否需要自动纠斜,因为带倾斜的页面会干扰后续的自动选择内容框的准确性。
    在自动纠斜中判断页面倾斜角度时,是按照带行间距的文本行判断的,因此 需要按照文本是横排还是竖排来选择。如果横、竖排的文本都有,可以考虑“双向”,但双向需要在横、竖两个方向上找倾斜角,因此花的时间会更多一些。
    如果页面中包含大量插图,导致角度判断出现失真,可以选择“清除黑区”试试看。当然这个选项也是需要消耗处理时间的。
    自动纠斜范围±5°。纠斜时需旋转图像,旋转产生的模糊可用“锐化”补偿。
  • 其次是选择内容框。处理扫描版电子书很有名的软件ScanTailor也有内容框全自动选择功能,但常常会把页码等较小的区域给切掉,因此本软件采用了人工选择与自动选择相结合的方式:先用鼠标拖动右侧预览图中的8个黑点,手工选择一个大致的范围,然后再在这个范围内自动选择。自动选择选项:
    1、不计黑边:与上、下、左、右四条边相联通的黑色区域都算黑边,自动纠斜后也会因为旋转而产生黑边。有些书的页眉、页脚贯通到页边界,可能会被误切,这时就不宜用自动选择。
    2、忽略斑点直径:页面上如果有斑点,会造成内容区的误判,因此选择适当的斑点直径可以增加自动选择的准确性。但如果斑点直径选择过大,可能会把页码等小区域也误切掉。
    3、斑点补偿:斑点补偿有两方面含义,一方面是担心因为斑点直径太大造成误切,因此补偿一下,另一方面是稍微留一点空白,看起来更好看一点。当然不想要也可以关闭这个选项。补偿的规则很简单:自动选择内容区后,再往外稍微扩一下选区,扩的距离就是“忽略斑点直径”指定的值。

内容一旦被误切就回不来了,因此建议点击左下角的翻页键,逐页查看一下内容框实际选择情况,避免误切。如果出现误切,建议减小“忽略斑点直径”的值。

界面中的右侧区域是针对页面与排版的:
首先是指定版心,而版心是由页面尺寸减去边距尺寸得到的。因此参数分解为页面尺寸与边距两部分。其中页面尺寸选项中包含开本尺寸,可以在书籍的版权页中看到,这个绝对是具有中国特色的东东。页面尺寸 各选择项的含义见下表,表中尺寸单位为厘米(CM):

选项值 宽度 高度 建议边距
左右 上下
保持不变,内容框外填白 页面尺寸就是当前图像的大小,内容框位置由“内容框对其方式”决定:选“不变”则内容框位置不变,否则居中或左、右齐
内容框大小 最终页面大小就是内容框大小,无附加边距
内容框+页边空 最终页面大小=内容框+页边距
指定宽度 指定值 按内容框比例自动计算 指定值 指定值
指定高度 按内容框比例自动计算 指定值 指定值 指定值
指定宽、高 指定值 指定值 指定值 指定值
787×1092
正度纸(俗称)
1/16 18.5 26.0 1.6 2.2
1/32 13.0 18.5 1.75 1.9
1/64 9.2 12.7 1.15 1.25
1/128 6.0 8.7 0.5 0.6
850×1168
大度纸
1/16 20.0 28.5 1.75 2.15
1/32 14.0 20.3 1.85 2
1/64 10.1 13.7 1.15 1.4
1/128 6.5 9.7 0.5 0.7
889×1194
大度纸(俗称)
1/16 21.0 28.5 1.75 2.15
1/32 14.3 21.0 1.9 2
1/64 10.5 14.0 1.15 1.4
1/128 6.7 10.0 0.6 0.7
890×1240
A系列(之一)
900×1280
A系列(之二)
1/16 20.1 29.7 1.4 2.25
1/32 14.8 21.0 1.25 1.5
1/64 10.5 14.4 1.25 1.4
1/128 6.9 10.0 0.7 0.7
1000×1400
B系列
1/32 16.9 23.9 1.5 2
1/64 11.9 16.5 1.5 1.75
1/128 8.2 11.5 0.7 1
A4 21.0 29.7 2.7 3.6
A5 14.8 21.0 指定值 指定值
A6 10.5 14.4 指定值 指定值
B5 16.9 23.9 指定值 指定值
B6 11.9 16.5 指定值 指定值
B7 8.2 11.5 指定值 指定值

注释:

  1. “填白”或“页边距”造成的空白地带,一律用图像中的最浅色填充,不一定是白色。
  2. 上表的页面尺寸、页边距值仅供参考。一般出版社排版时页码也不算在版心内,这点必须考虑。 另外上表仅列出常见开本尺寸,如果想知道更多畸形本尺寸,请百度《书刊开本尺寸及其版芯尺寸表》。 如果是自扫,手头有实体书,用直尺实际测量一下是最稳妥的办法。
  3. 对于A4~B7的尺寸,《GB/T 788-1999 图书和杂志开本及其幅面尺寸》规定的尺寸与《GB/T 148-1997 印刷、书写和绘图纸幅面尺寸》规定的不同,估计是裁边的问题。此处采用GB/T 788的尺寸。
  4. A4的边距按照《GB/T 9704-2012 党政机关公文格式》规定计算,如果是MS WORD,应该是左右3.18 cm、上下2.54 cm。

除了“页面尺寸”与“页边距”外,“页面大小”框中还有两个非常重要的选项:

  1. 单位:可以选择“厘米”或“像素”,这是“页面尺寸”与“页边距”的单位。
  2. DPI:如果“单位”是“厘米”,软件内部最终要按照DPI将厘米尺寸转换成像素尺寸。另外DPI值也要保存到最终输出的图像文件中。

选定内容框、设置好页面尺寸后,就要指定内容框在版心中如何排布,选项包括:

  • 内容框在版心内的对齐方式:如果“页面大小”选择了“保持不变,内容框外填白”,则“不变”表示内容框的位置在水平或垂直方向上不变;如果“页面大小”选择了其他值,则“不变”相当于 保持内容框左、上边界在原始页面中的位置比例。
  • 当内容框大于版心时:“溢出”表示对内容框不做裁剪,超出版心就超出了,通常在通过“缩放”功能单独对图像进行了放大,或DPI低于实际值时会出现溢出;“缩图”表示对内容框进行缩图,以适应版心大小,缩图时自动保持纵横比例;“裁剪”表示把超出版心的部分裁掉,具体裁剪的是哪条边,要看内容框在版心中的对齐方式。例如内容框的宽度超出版心,则水平对齐方式选“居住”裁两边,选“左齐”裁右边,选“右齐”裁左边。
  • 当内容框小于版心时:“填白”表示内容框不做额外的缩放处理,多出来的部分自动填白;“放大”表示自动将内容框放大到版心限定的区域,并保持原纵横比。

注意软件界面中会自动显示当前内容框与版心的像素尺寸,可以据此判断会不会出现溢出。

11. 锐化
对于常规图像,锐化能够使模糊的图像变清晰。

12. 柔化
能够使锐利的边缘、锯齿变柔和。但如果原来图像就模糊,用此功能后大概就该出重影了。如果“色彩”选择了“单色”,也可以用此功能平滑笔画,其效果较“加粗”柔和。

13.调节

锐化、柔化的选项都是分级的,有时候不一定满足要求,因此增加了“调节”功能,可以更细致地调节锐化、柔化效果。其中“柔化”其实的高斯模糊,和Photoshop的高斯模糊滤镜差不多。

14.通道

“通道”功能包括颜色替换、通道互换、通道混合、反白、CMYK反白。

颜色替换通常用于去除水印、底纹、彩色边框等,其替换过程是:逐一检查图像中的每一个像素,如果像素颜色满足“替换条件”,则将其替换成指定色。某些替换条件可能会用到“阀值”。各“替换条件”的含义如下:

  • 不替换:别用“颜色替换”功能了,颜色爱咋滴就咋滴。
  • RGB分量与样本差小于阀值:当前像素的R、G、B分量值分别减去“替换”色的R、G、B,如果差值的绝对值都小于阀值,则将当前像素的颜色替换成指定色。 即替换与指定色相近似的颜色。
  • 色调与样本差小于阀值:当前像素的色调值减去“替换”色的色调值,如果差值的绝对值都小于阀值,则将当前像素的颜色替换成指定色。 即替换色调与指定色相似的颜色。
  • RG分量差值大于阀值:当前像素的R、G分量相减,如果差值的绝对值大于阀值,则将当前像素的颜色替换成指定色。 即当红、绿色差较大时,替换颜色。
  • RB分量差值大于阀值:当前像素的R、B分量相减,如果差值的绝对值大于阀值,则将当前像素的颜色替换成指定色。 即当红、蓝色差较大时,替换颜色。
  • BG分量差值大于阀值:当前像素的B、G分量相减,如果差值的绝对值大于阀值,则将当前像素的颜色替换成指定色。 即当蓝、绿色差较大时,替换颜色。
  • R分量占比超过阀值:如果100*R/(R+G+B)>阀值,则将当前像素的颜色替换成指定色。即替换红色比较突出的像素。
  • G分量占比超过阀值:如果100*G/(R+G+B)>阀值,则将当前像素的颜色替换成指定色。即替换绿色比较突出的像素。
  • B分量占比超过阀值:如果100*B/(R+G+B)>阀值,则将当前像素的颜色替换成指定色。即替换蓝色比较突出的像素。

在使用时,鼠标移动到“替换”、“成”按钮右侧的有手型图标的按钮上,按住鼠标左键并拖动鼠标,可以在屏幕上选色,下方的小框内会实时放大显示当前光标周围的图像,右侧则显示当前光标点的RGB颜色值,即选择的颜色值。

通道互换功能比较简单明了,就是对R、G、B通道进行互换。比如处理红外照片时一般习惯上要进行红、蓝替换。

通道混合:这个其实是把彩色图像转换成256级灰度图像,但又与下面要说的“色彩”功能中的灰度转换方法不同。在“色彩”中选择“256级灰度”时,是按照经典的心理学模型转换公式:
Y´ = 0.299 * R´ + 0.587 * G´ + 0.114 * B´
而在“通道混合”中,则采用了不同的方法:

  • 红:取原彩色图中的红色通道成为新的灰度图。
  • 绿:取原彩色图中的绿色通道成为新的灰度图。
  • 蓝:取原彩色图中的蓝色通道成为新的灰度图。
  • (红+蓝)/2:取原彩色图中的红色、蓝色通道的平均值成为新的灰度图。
  • (红+绿)/2:取原彩色图中的红色、绿色通道的平均值成为新的灰度图。
  • (绿+蓝)/2:取原彩色图中的红色、蓝色通道的平均值成为新的灰度图。
  • 色调:将原RGB色彩空间转换成HSL色彩空间,然后取H通道成为新的灰度图。
  • 饱和度:将原RGB色彩空间转换成HSL色彩空间,然后取S通道成为新的灰度图。
  • 亮度:将原RGB色彩空间转换成HSL色彩空间,然后取L通道成为新的灰度图。
  • 对比度:将RGB转换成256级灰度,但保持原色彩间的对比度。

简单点说,前6种相当于Photoshop中“通道混合”功能的粗暴简化,“亮度”相当于Photoshop中的“去色”,“对比度”在Photoshop中没有对应功能,但有时候是真好使。

如果实在搞不清“通道混合”的功用,就还是老老实实用“色彩”吧,“色彩”的转换效果实在不满意了再逐一选择“通道混合”中的各值,实际看一下究竟哪个更好一点。

“反白”比较简单,就是把颜色反相,如把黑底白字变成白底黑字,或把白底黑字反成黑底白字。

“CMYK反白”专门用于处理CMYK色彩空间的JPG文件,对其他文件无效。如果您打开某个JPG文件后发现文件显示的颜色不对,而右下角提示的文件色深是32位,则可以试试看勾选这个选项。

15. 色彩

通常使用本软件的目的,就是希望能够将扫描图像处理得更“黑白分明”,即去掉多余的纸张颜色、背景、底纹、光照阴影等,同时将有用的文字、图像部分变得更清晰、悦目。换句话说,处理后的颜色或灰度级别可能就没有原来那么多了,适当减少存盘图像的颜色数可以有效减小最终文件长度。 另外有些手持设备由于条件限制,只能支持256色或16级灰度,这时也需要减色,而且常常需要采用抖动,以保持效果。

注意:为了简化图像处理算法的实现过程(说白一点是为了偷懒),本软件在读取图像时,如果发现是调色板图像,会自动检查调色板,如果发现是彩色图,则一律转换成24位真彩图,否则转换成256级灰度图,即在本软件内部只需针对24位真彩、256级灰度两种图像进行处理。因此在处理完后存盘时,如果不对颜色数进行限制,可能会出现文件膨胀。举个例子:黑白文字页面的大图PDG其实是16级灰度的PNG,如果在用“颜色替换”功能去除水印后,按照缺省的“保持原样”存为PNG,会按照256级灰度保存,结果造成文件膨胀,而改成“16级灰度”后再存为PNG就与原来差不多了——差异还是有的,毕竟把水印去掉了。

“色彩”界面分成上、下两个部分,上部分选项是通用选项,包括:

  • 色彩数:指定输出图像中的色彩,允许的选择包括:
    • 保持原样:如果原图是彩色图(24位图或调色板彩图),则存为24位真彩,否则存为256级灰度。
    • 24位色:和“保持原样”的效果一样。换句话说,如果原图就是灰度的,选了这个选项也存不了24位色。
    • 256级灰度:强制将所有图像转换成256级灰度图像,彩色图像按照心理学模型转换。
    • 128级灰度、64级灰度、32级灰度、16级灰度、8级灰度、4级灰度、纯黑白:强制对所有图像进行减色,减成要求的灰度级别。彩色图像先按照心理学模型转换成256级灰度,然后再减色。如果对心理学模型的转换效果不满意,可以试试“通道混合”。
    • 256色、128色、64色、32色、16色、8色、4色、2色:强制将彩色图像减色到要求的色彩数。对于灰度图像,相当于减色到要求的灰度级别。
  • 调色板量化算法:在减色时,最重要的事情有两个:一个是确定新的色彩有哪些,即应该用什么样的方法生成新的调色板,如将24位色减为256色时,究竟应该选哪些色构成这256色?;另一个事情是如果原先图像中的一种颜色在新的调色板中没有,那究竟应该把它替换成哪一种新色?。第二个问题比较好解决,大家都是用欧氏距离进行判定,速度是差了点,但效果还不错。第一个问题就比较复杂了,至今已经有太多的人提出了太多的方法,但每种方法都有其长处,当然也有其短处,包打天下的方法很不幸至今尚未找到。因此在本软件中提供了几个选项让用户自己选,如果实在不知道该选哪一个,那就逐个都试一下才是明智的选择:
    • 八叉树:这是一种四平八稳的算法,减色效果不会特别好,一般也不会特别坏,速度、内存占用也还凑合,因此是缺省的算法,也是4.00之前版本的唯一减色算法。
    • 中位切分:一种古老的方法,某些情况下比八叉树好,某些情况下不如八叉树。
    • XiaoLin Wu:以该算法的提出者名字命名的算法,效果也是时好、时坏。
    • 固定调色板:不管原始图像中的色彩是什么样的,全部减成系统内部设定的固定色。由于不需要计算新调色板,因此速度很快,但效果就听天由命了。如果要求减色后的图像都拥有相同的调色板,只能选择这种算法。
  • 抖动:如果原先的图像存在很多过渡色或过渡灰度,减色后可能会出现类似“等高线”的色区,看起来很难看,这时可以试试抖动,即通过像素点的交错排列,减轻等高线效应。彩色、灰度图像的抖动算法是经典的Floyd Stainberg算法,纯黑白图像的抖动算法在下面选。
  • 16级灰度以下PNG设置背景透明:如果选择了此选项,并且“色彩数”选择了16级灰度、8级灰度、4级灰度或单色,在存为PNG时会自动把白色设置为透明背景色。

对“色彩数”的补充说明:

  1. 如果选择“256级灰度”选项,处理后的文件按256级灰度保存,对于黑白漫画可以减少文件长度,但对于彩色漫画就太可惜了。如果选择“24位真彩”, 则按24位真彩色格式存盘,对黑白漫画来说又太浪费。如果选择“保持原样”,则原来是256级灰度或24位真彩的,存盘后还是256级灰度或24位真彩,适用于那些封面为彩色,内容为黑白的漫画。如果画面非常干净,也可以选择“16级灰度”、“8级灰度”或“4级灰度”,并选择按PNG格式输出,可以获取最佳压缩比。对于纯文字页面,选“单色”,并选择按TIFF格式输出,可以获取最佳压缩比。
  2. 对于16级灰度、8级灰度、4级灰度或单色,本软件会自动“保白”,即强制将最“亮”的色彩置为白色。
  3. 对于纯黑边图像,存为TIFF可以获得最佳压缩比,而且是无损压缩;对于24位彩色、256级灰度图像,可以存为有损的JPG、JPEG 2000,也可以存为无损的PNG;对于其他色彩数,建议存为PNG。

“色彩”界面的下半部分是纯黑白选项,只有在“色彩数”选择了“纯黑白”的情况下才能用,可用的选项包括:

  • 抖动算法:只有在选择了上方的“抖动”选项后才能用此选项。纯黑白图像的抖动,就是用不同密度的黑点来模拟不同的灰度。可以选择不同的抖动算法,实在不知道该选哪个就都试试:
    • JJN:经典Floyd Stainberg算法的改进。相对于经典Floyd Stainberg算法,JJN算法更突出边界,因此对比度保持较好,而且不容易出现规则条纹。
    • Floyd Stainberg:看起来比JJN更柔和一些,有人比较喜欢这种效果,但容易出现规则性的条纹。
    • Bayer:用不同密度的预设网纹进行抖动,类似于老式报纸上照片的效果。
  • 阀值算法:如果没有选择“抖动”,则可以选择此选项。如果不知道这些算法的含义和效果,那就都试试:
    • 同调色板量化算法:采用上方“调色板量化算法”框所选算法,即八叉树、中位切分、XiaoLin Wu或固定调色板。
    • Otsu:大名鼎鼎的全局阀值算法之一,速度很快,对于照度均匀的图像效果不错。
    • Wolf:自适应阀值算法,即将整张图像按照“窗口尺寸”划分成各独立子区域,然后根据子区域中的情况,结合整张图像的统计特征,进行二值化。在整张图像照度不均匀时比较有用。
  • 窗口尺寸:只有在“阀值算法”选择了“Wolf”时才有效。较小的窗口尺寸能适应较剧烈的照度变化,较大的窗口尺寸则适应较平缓的照度变化。
  • 去斑直径:灰度图像变成纯黑白后,有时候会出现一些黑色斑点,看起来比较难看。此选项值为0时时不会管这些黑色斑点,大于0时则自动清除掉长、宽均小于选定值的斑点。注意选择的值不要超过文字笔画中独立点的直径,否则可能会造成笔画残缺。
  • 去除符合下列条件的黑色区域:在某些繁体竖排书籍上,人名、书名旁边会有竖线、波浪线,这些竖线、波浪线看起来很美观,但实际上会干扰OCR的准确性。因此在OCR前可以用此功能去除。注意“宽度”与“高度”之间是“与”的关系,另外此功能与“去斑”独立,顺序是先去斑,再去除 符合条件的黑色区域。
    如果想测量实际图像中线条的像素尺寸,可以先把鼠标移动到图像区域,按住Shift键,晃晃鼠标,直到鼠标光标变成十字,然后在需要测量的区域左上角点一下鼠标左键,再到右下角点一下鼠标左键,就会弹出对话框,报告两次点击的坐标,及其所围成区域的长度、宽度。注意在点鼠标的过程中要一致保持Shift键被按住,出现对话框后才能松开。
  • 去除与边缘接触的黑色区域。有时候即使经过裁边、去斑,在边缘地带还是会有一些黑色区域,这时可以用此选项去除。此选项不管黑色区域的大小,只要与上、下、左、右四条边有接触,就删除之。因为效果太猛了,而且查找要去除的区域也需要时间,所以缺省未选中。

对于纯黑白选项的补充说明:

  • 虽然Wolf算法对照度不均匀的图像具有一定的自适应能力,但建议还是尽量选择后面要说到的照度修正、照度归一对图像进行处理,然后再用Otsu或八叉树等全局化算法进行二值化。在ScanTailor中,只有“Select Content”功能用Wolf算法对图像进行二值化,然后在二值化后的图像中寻找内容框,而在最终的“Output”中,则是先对图像进行照度修正,然后用全局Otsu算法进行二值化。

16.照度修正

由于灯光照明或书籍弯曲的影响,整张扫描图像可能会出现明暗变化,如平板扫描时一般中缝部分较黑,用相机拍书则常常中间亮、四周暗。这种情况就是光照不均匀,或称“照度不均”,解决的办法就是照度修正,或照度归一:

  • 照度修正:这个算法是从ScanTailor学来的,基本思路是把整张图像的像素按x、y轴排列,亮度算z轴,成为一个三维曲面,然后按最小二乘法进行曲面拟合,算出光照曲面,据此对原始图像进行修正。这种方法对线形阴影、中间亮四周暗的情况修正比较好,但对两边亮、中间暗的情况修正不好,所以在ScanTailor中一上来就要求对页面进行切分,切分后输出时再进行照度修正,否则中缝搞不定。另外这种方法只能修正光照不均,如果纸张本身有阴影,这种算法也修正不了。
  • 光照归一:这个其实是多尺度Retinex(MSRCR)算法,应用范围比上面的照度修正算法广,在人脸识别领域尤其流行,百度一下可以得到无穷多的相关论文、源代码,至于实际好不好使就是另外一回事了。要想理解“归一”的意思,看一下处理前后的直方图就一目了然:不论处理前的直方图是什么样,MSRCR处理后的直方图都会往正态分布曲线上靠,“归一”是中文的习惯译法,其英文原文是normolize,和“正态”是一个词。这种算法对光照不均、纸张阴影都有修正效果,但修正后往往整体图像发暗,因此在本软件中又做了一种修正:
  • 光照归一+增亮:在光照归一的基础上,对整体图像进行增量,使最大亮度达到255。

注意:

  1. 由于照度修正与光照归一速度较慢,因此如果目测原始扫描图像不存在整体性的光照不均,或者说中缝部分的黑边可以用切边搞定,就不要选择照度修正或照度归一,以免浪费时间。
  2. 如果搞不清该用哪个算法,就逐个试一下,看看实际效果再说。

17.加粗、变细、开、闭

  • 加粗:相当于Photoshop中的“最小值”滤镜。如果浏览的是纯文字页面(扫描电子书),并且笔画较细以至于影响阅读,可以选择“加粗”选项进行加粗。对于彩色画面,此选项会加深颜色。对于灰度图像,此选项可能会出现小灰斑。
  • 变细:相当于Photoshop中的“最大值”滤镜。可以使笔画、线条变细。
  • 开:先变细,再加粗。
  • 闭:先加粗,再变细。

18. 旋转
包括左、右旋转90度,及180度旋转(颠倒)、水平镜像、垂直翻转。

19. 自动色阶/自动对比度
对于彩色图像来说,有时会由于扫描亮度设置失当而造成画面发白,或由于纸张陈旧而造成画面偏黄。对于这种偏色画面,通常可以通过色阶调整进行校正。

本软件的“自动色阶”功能与PhotoShop的同名功能在算法上一致,但是在参数上与PhotoShop的缺省参数不一样,效果要更强烈一些。通过修改PhotoShop的缺省参数,可以达到相同的效果。

PhotoShop的“色阶”功能虽然强大,但是色阶是基于直方图的变换,而每一张图像的直方图都可能不同,因此对于PhotoShop来说可以用“色阶”慢慢调节每一张图像,但对于本软件这种用一套参数处理一系列图片的情况,“色阶”显然不适用,只能用“自动色阶”。

自动色阶功能由于是对三原色直方图分别进行校正,因此校正后可能会出现偏色,如偏黄的校正后偏蓝。如果不希望出现偏色,可以选择“自动对比度”。自动对比度针对灰度直方图进行调整,因此不会出现偏色。

20.表面模糊

和Photoshop里的同名功能差不多,作用是在保持文字、线条、色区边缘原有锐利程度基本不变的同时,对相似色区进行模糊,使图像更平滑。大概的原理可以简述 如下:

  1. 对于原始图像中的每个像素,搜索“半径”参数划定的相邻矩形区内的所有像素。如半径为5,则搜索上、下、左、右距离均在5以内的像素,这是一个11×11的矩阵。
  2. 搜索过程中,记下那些与中央像素(即原始像素)的差异小于“阀值”的相邻像素,待整个相邻区域搜索完成后,对记录下来的符合条件的相邻像素做模糊 (加权平均),结果值就是原始像素的新值。

Photoshop中的“表面模糊”的算法总结见这里:
http://bbs.redocn.com/thread-274838-1-1.html

我个人觉得Photoshop的“表面模糊”算法相当于算术平均,在半径较大时模糊得太厉害,但 有时又不得不使用较大的半径,因此在本软件中针对不同的半径值使用了不同的算法:

  • 半径1~5:与Photoshop的“表面模糊”相同。
  • 半径6~10:采用了何凯明先生提出的“引导滤波”,具体算法详见他的论文《Guided Image Filtering》。 这种算法对内存需求相当大,如果图像像素尺寸较大,可能会出问题。
  • 半径11~15:采用了著名开源图像处理软件GIMP中的“选择性高斯模糊”(Selective Gaussian Blur),我觉得在大半径情况下高斯模糊比方框模糊更好一点。但我仅仅是用了GIMP的思想,代码是不会去抄它的,它那个太慢了。

界面上参数的含义:

  • 遍数:指定对图像执行几次表面模糊,0表示不进行表面模糊。为了节省时间,一般建议不要用太大的半径,如果效果不满意,可以试试看增加遍数。
  • 半径:指定搜索邻域范围,不同的半径可能采用不同的算法,见上面说明。另外半径对执行时间有直接影响,较大的半径需要较长的执行时间。
  • 阀值:阀值大小对执行时间无影响,但对效果有影响,较小的阀值模糊得不是那么厉害,较大的阀值会模糊得更厉害一些。

注意:表面模糊效果虽然比“柔化”和“调节”的效果好,但速度却慢很多(没办法,我才疏学浅没有Adobe公司程序员的优化本事),因此建议慎用。

21.USM锐化

与Photoshop中的同名功能类似。与前面“锐化”、“调节”的区别是:锐化、调节对图像的每个像素都是公平的,逐个像素用3×3或5×5做卷积,因此在使文字、线条边缘更锐的同时,其他地方也可能会锐得出现麻点。而USM锐化一般只对文字、线条边缘有影响,对图像其他地方基本没有影响,因此现在的Photoshop教程中逐渐建议用USM锐化代替常规锐化。

我见过对USM锐化的名称、原理、历史渊源解释得最好的是:
http://en.wikipedia.org/wiki/Unsharp_masking
看完之后再去看国内所谓“PS高手”的原理解释,荒谬感油然而生。

想搞懂原理的建议仔细阅读上面说的网页,才能知其然并知其所以然,当然嫌麻烦也可以先听听我的无责任简单解释:

  1. 原始图像记为A,把A复制一份记为B,在PS里相当于复制出来一个图层。
  2. 按照“半径”参数指定的半径值,对B做高斯模糊。
  3. 把模糊后的B与A逐点相减,差值的绝对值记为C。
  4. 如果C小于“阀值”的某个倍数,则说明A、B在该点上差异不大,不需要对A做什么改变。
  5. 如果C大于“阀值”的某个倍数,则说明A、B在该点上差异较大,则对A上该点像素做改变:
    A' = A + 数量 × C ÷100
    即“数量”是一个百分数,通过它将差异反馈回原始图像。

用过高斯模糊的都知道,模糊后变化最大的是文字、线条的边缘部分,内部变化反而不大,因此USM锐化通常只对边缘起作用。

界面上的参数解释:

  • 遍数:指定对图像执行几次USM锐化,0表示不进行USM锐化。为了避免锐化太过,一般建议不要用太大的半径、数量、阀值,如果效果不满意,可以试试看增加遍数。
  • 数量:作用见上面的简单解释,数量越大锐化效果越明显。
  • 半径:对蒙版进行高斯模糊的半径,适当小一点可以增加模糊效果。如果半径、数量都很大,那就没啥锐化效果,而是转变成“增加对比度”效果了,原因也很简单:在较大半径作用下,蒙版模糊得太厉害,已经没啥细节,差不多是纯色了,所以相当于对每个原始像素点增加或减少一个常量,拉伸了整体对比度。
  • 阀值:越小越有锐的感觉,越大越没啥锐化的感觉。

注意:USM锐化效果虽然比“锐化”和“调节”的效果可能会好一点,但速度要慢一些,因此一般建议只有在“锐化”和“调节”不能满足要求时,才选择“USM锐化”。

22.光线

“光线”这个功能从名字上来说是从ACDSEE PRO学的,因为我经常用它的Light EQ功能处理照片。但在实现时实在搞不懂ACDSEE的专利技术,所以最终学的是Photoshop中的“阴影/高光”滤镜,效果比ACDSEE Pro的Light EQ差了好几条街,但参数范围比Photoshop灵活,可以双向选择。

“阴影”指的是图像中的暗部,往右增加会增亮暗部,出现更多的暗部细节;往左减小会使暗部变得更暗,泯灭暗部细节。

“高光”指的是图像中的明亮部分,往右增加会使明亮的部分更明亮,直至溢出成纯白色;往左减小会使明亮的部分变得不那么刺眼。

23.色调均化

其实就是直方图均衡化,不过采取了措施防止出现偏色。直方图均衡化一般针对动态范围不足、看起来比较灰暗的彩色图像,但不建议用于灰度图像——灰度图像处理结果会很糟糕,甚至恐怖。

24.以上参数仅用于当前窗口
有时候为了更好地比较处理前后的效果,可以在打开图像文件后点“窗口->新建窗口”菜单,创建当前图像的副本,然后勾选“以上参数仅用于当前窗口”,这样原始窗口的处理效果就不会影响副本窗口,可以来回切换进行比较。

在批处理界面中还包含如下选项:

25.包括子文件夹
如果此选项被选中,则批处理时自动对所选文件夹及其子文件夹下的所有图像文件进行处理,并在目标文件夹下创建相同的文件夹结构;否则只处理所选文件夹下的图像文件。

26.复制文件日期、时间
如果选中,则结果文件与源文件具有相同的文件日期、时间;否则结果文件的日期、时间为当前系统日期、时间。

27.DPI
在目标文件中写入的DPI值。此参数的缺省值是在“切边”的“页面大小”中指定的DPI值,但如果仅仅在批处理界面中更改DPI值,不会对图像产生缩放作用,只会更改生成的图像文件中的DPI字段的值,而在“页面大小”中指定的DPI值则可能会更改图像大小。

如果想批量修改图像文件中DPI字段的值,可以选择“文件->批量设置DPI”菜单,这个也同样只是改一下图像中记录的字段值而已,不会对图像进行缩放 ,详见下面的具体说明。

28. 不处理彩色图像文件
只有在色彩选项不是“24位真彩”或“保持原样”时才允许选择此选项。如果需要处理的漫画中包含彩色封面,可以勾选此选项,以避免将24位真彩封面转成灰度或 其他图像,造成损失。

图像增强参数的作用顺序

本软件依照下列先后顺序处理每一张图片:颜色替换、通道互换、反白、通道混合、旋转、纠斜、切边、照度修正、放大、光线、自动色阶/自动对比度、 高亮度、亮度、曲线调节里的强力去背景、对比度、曲线调节、Gamma校正、色调均化、加粗、柔化、调节中的高斯模糊、表面模糊、缩小、锐化、调节锐化、USM锐化、减色、 去斑、去黑区、页面排版、存盘。

如果需要批量处理的顺序与上述顺序不同,可以采用多遍处理的方法,即第一遍处理后,再进行第二遍处理,中间结果存储为无损压缩的PNG格式,以免损失。

如果奇偶页需要处理的参数不同,可以将奇偶页复制到不同的文件夹,然后再处理。下面这个批处理命令将奇数页文件(文件名以1、3、5、7、9结尾)移动到odd文件夹:

for %%a in (1 3 5 7 9) do move *%%a.* odd

下面这个则将偶数页文件(文件名以2、4、6、8、0结尾)移动到even文件夹:

for %%a in (2 4 6 8 0) do move *%%a.* even

当然在此之前要先创建好odd、even文件夹。

存盘文件类型的选择:

  • 对于纯黑边图像,存为TIFF可以获得最佳压缩比,而且是无损压缩;
  • 对于24位彩色、256级灰度图像,可以存为有损的JPG、JPEG 2000,也可以存为无损的PNG;
  • 对于其他色彩数,建议存为PNG。

对各种图像文件格式的解释参见我写的《乱谈常见图像格式》

批量设置DPI:

目前“批量设置DPI”功能允许批量设置BMP、PNG、JPG、TIFF文件的DPI,但有一些限制:

  • BMP:这个比较简单,直接更改BITMAPINFOHEADER结构体的biXPelsPerMeter、biYPelsPerMeter字段,因此速度飞快,也不存在兼容性问题。
  • PNG:这个就没这么简单了,因为不是所有PNG文件都有phys段,所以采用了很笨的方法:把PNG文件解码,设置DPI后重新编码、存盘。所以速度会慢一些,文件 长度也可能会出现变化。好在PNG格式是无损压缩,无论解码、编码多少次都不会对画面造成影响。
  • JPEG:为了简单起见,只对JFIF格式的APP0段(FF E0)中X_density、Y_density、density_unit字段进行更改。不支持EXIF段中的DPI描述,对于没有APP0段的JPG文件也无能为力。
  • TIFF:只支持单页TIFF,多页TIFF只设置第一页的DPI。不支持采用JPEG压缩的TIFF文件。另外某些扫描或传真图像X、Y向DPI可能不同,用此功能 则强制设置为相同。

总之,如果需要设置的BMP、PNG、JPEG、TIFF文件都是用本软件生成的,用“批量设置DPI”功能更改DPI是没啥问题,用其他软件生成的就要看运气了。另外此功能仅仅是改变了DPI值,对图像的像素尺寸没有任何影响。

查看直方图与统计图像颜色数:

点击工具条上的“显隐直方图”按钮,可以显示或隐藏直方图:

  • 直方图缺省显示R、G、B、灰度共四个通道。
  • 点击直方图上方的按钮,可以显示或隐藏对应的通道。
  • 如果直方图的最大值与最小值差距较大,小值可能会太贴近横轴而看不出来,这时可以勾选“log”选项,把所有的数值取对数,就可以缩小差距。

点击工具条上的“颜色数”按钮,可以统计当前图像中的颜色数。统计值有两个,一个是原始图像的颜色数,一个是当前处理结果的颜色数。

密技曝光

、IJG vs. IJL

IJG的全称是Independent JPEG Group(独立JPEG小组),该组织以C语言源代码的形式提供应用广泛、完全免费的JPEG解码/编码函数库,编译后生成二进制格式的LIB文件,可以连接到其他编译型语言的程序中。其实对于Windows程序员来说,这个函数库最难的地方就是对编译选项的设置(Unix无此问题),一旦设置完成,编译成功,差不多就可以卖钱了。有些开发商就是将对IJG的调用封装一下,生成DLL或OCX,就开始堂而皇之地收费。由于IJG生成的代码简洁干净,无需任何DLL或OCX,很多收费的图像浏览器、编辑器等也直接或间接地基于IJG,包括Windows自身的相关API。另外在IJG的源代码中还包含对GIF、BMP、PPM、TGA、RLE文件解码/编码的实例代码,因此也有人说IJG提供的JPEG库支持这些图像格式,其实这些代码仅供IJG测试用,一般生成的LIB文件中并不包括这部分代码,如果想支持这些格式还需要在此源码基础上花功夫。

IJG最大的好处是稳定、兼容性强,毕竟经受了多年的考验。缺点是速度太慢,碰到大文件会很难受。

IJL的全称是Intel JPEG Library,是由Intel公司提供的JEPG解码/编码库,专门针对Intel处理器进行了彻底的优化,因此在Win-tel环境下速度一流。这个工具最大的特点就是简单,一共只有六个函数(ijlInit、ijlFree、ijlRead、ijlWrite、ijlGetLibVersion、ijlErrorStr),而且随机文档中附有完整的VC++实例,因此对于VC程序员来说不用费什么脑子就可以对JPEG应用自如。

IJL有两个主要的版本:1.5版和2.0版。1.5版是最后一个免费版本的IJL,以后的版本都是收费版。而2.0则是IJL的最后一个版本,以后IJL被Intel Integrated Performance Primitives (IPP)v6.1中新推出的UIC(Unified Image Codec)所取代。

免费的IJL v1.5流传很广,但存在下列问题:

  • 内存漏洞。这个用IJL的DLL版看不出,要用Static Lib版才能看出来:每打开一个文件,VC会报告72字节(3通道JPG)或24字节(单通道JPG)的漏洞。网上有文章说明如何用内联汇编打补丁来解决这个问题。
  • 不支持EXIF中指定的旋转参数。这个问题不大,可以在解码后自己旋转,但需要自己再去解码EXIF。
  • 手册上说不支持CMYK色彩空间,但自带的JPGView例子支持部分CMYK的解码,另外一些解码后色彩不正确。这个也可以修正,同样需要自己进行处理。
  • 容错性太差。某些数据异常的文件用IJG能解码,用IJL则不行。有源代码的话很容易修正,没有源代码就难了。

IJL v2.0从其他途径可以搞到,包括部分源代码。但是从我试用的情况看,除修正了内存漏洞外,其他问题依旧存在。不过毕竟有一些源代码,可以自己动手修正。另外虽然IJL v2.0的编译环境要求是VC++ 2002以上,自己建个project在VC6下编译也没有问题,花几分钟修正一下就好。

从速度上来说,在目前的主流CPU上IJL v2.0要比v1.5快,毕竟可以采用最新的处理器指令。因此从v2.53开始,本软件不再采用IJG,改用IJL v2.0。

在IPP的sample中,也给出了用IPP改造后的IJG版本,速度比原版IJG要快,但还是没有IJL快,而且兼容性很差,有些用原版IJG编码没有问题的文件,用IPP版IJG编码出来就是花的。

二、ComicEnhancer vs. Photoshop

其实我个人认为,Photoshop的漫画增强效果还是不错的,但在分享转换参数方面还存在一些不足,所以我才会编这个程序。

  1. 从总体上说,ComicEnhancer模仿的是Photoshop的Batch Action功能,但支持的图像格式、图像处理方法和效果、效率可能不如Photoshop,毕竟是在业余时间里鼓捣出来的东西。
  2. Batch Action看得见的参数不多,建立时一般是对图像操作进行录制,因此如果在BBS上撒个帖子:“我用Photoshop进行了××操作,增强了××漫画”,别人大概也是有听没有用。而ComicEnhancer的所有参数均是可见的,结果也是可重复的,因此如果在BBS上撒个帖子:“我用ComicEnhancer增强了××漫画,所用参数为××”,大家都可以受益。
  3. Photoshop里我最欣赏的就是Curve功能,通过用样条函数表示的非线性映射,能够同时调整图像的亮度和对比度。但是这个功能的可重复性实在是太小。ComicEnhancer的所有操作都是可重复的。
  4. 最要命的一点,Photoshop实在是太大、太全了,会用它处理漫画的人好象不太多。

三、JPEG,BMP,GIF, TIFF and PNG

如果说JPEG是当今网上最流行的图像格式,大概不会有人反对。但由于JPEG是有损压缩,在提供较小文件长度的同时,JPEG格式也具有以下缺点:

  1. JPEG主要针对的是“自然图像”,即色彩比较丰富、颜色过渡自然的图像,如普通彩色风景照片、人物照片等。而动画、漫画一般是“非自然图像”,即颜色跳跃比较大,并且有文字等信息,这样 经过JPEG有损压缩后,在线条、文字的边缘部分就会产生细小的碎片(高频噪声),在压缩比较大时尤其明显。这对狂热追求画质一族来说实在是个遗憾。
  2. 虽然某些人宣称“JPEG还原时无失真”,但这不过是一句广告语罢了。由于JPEG的有损压缩特性,实际上每压缩一次,都会损失一些图像信息,因此JPEG并不适合保存图像处理的中间结果。如果对以JPEG格式发行的图片进行编辑,再保存成JPEG格式,每保存一次都会造成损失。

由于这些原因,网上有人开始尝试用无损压缩格式保存动漫图片。常见的无损压缩格式有BMP、GIF、PNG和TIFF等:

1、BMP
BMP格式的特点是操作简单,基本上所有的工具都支持它,如果想自己开发图像处理程序的话,读、写BMP文件的源代码也随处可见。但BMP图像基本上是把象素信息直接写到文件里,不进行压缩,或仅采用简单的RLE(行程编码)压缩,因此用BMP格式保存的图像文件一般都比其它格式的文件大得多,导致几乎没有谁会在网上发行BMP格式的动漫图片。我唯一见过的一次是有人以单色BMP格式发行了一套赤松健的《永远的圣诞老人》,长度比质量系数65%的256级灰度JEPG还小,不过单色BMP不是黑就是白,没有任何过渡,看起来实在是……

2、GIF
GIF大概称得上是目前网上最流行的无损压缩图像格式。我看到的第一套以GIF格式发行的漫画是英文版《乱马》,其图像之细腻绝对不是JPEG能够比拟的,而且由于采用16级灰度,图像尺寸也不大。后来陆续又见过一些以GIF格式发行的港版漫画,虽然图像都不错,不过文件尺寸上就差远了--全是256色GIF。不过GIF也有一些问题:

  1. GIF压缩算法的核心--Lempel-Ziv-Welch (LZW)算法是有专利权的,专利权归Unisys公司所有。开发解码程序也就算了,如果开发编码程序,就算开发的是freeware,也需要缴纳专利费,否则 可能会有麻烦。
  2. GIF 89标准只支持灰度和调色板图像,24位真彩图像属于非标准。ACDSEE在把其它格式的图像批量转成GIF的时候,干脆就把所有彩色图像都转成256级调色板GIF。

有鉴于此,至少我是不会在我开发的软件里支持GIF编码的,解码则直接调用CxImage,要打官司也找不到我头上。

3、PNG
对于Unisys向支持GIF格式的freeware收费的行为,网络界当然不会没有反对的声音。其中一些反对者聚集起来,提出了新的PNG格式(听起来象不象DivX和Xvid的故事?)。PNG的压缩算法采用公开的ZIP压缩算法,不仅压缩率比LZW高 (从统计学上说如此),而且不需要支付专利费用,连压缩、解压源代码都有专门的zlib组织免费提供。
与GIF相比,PNG格式不仅文件长度更小,而且在色彩方面支持得更好,差不多达到BMP的水平。尤其是动漫图片常用的24位真彩和256级、16级、8级和4级灰度。

因此,整个“动漫DIY系列”将全面支持PNG格式。

4、TIFF
TIFF可以说是一种包罗万象的图像格式,内部允许使用多种图像压缩格式,包括BMP使用的RLE、PNG使用的zip、GIF使用的lzw、JPG使用的jpeg压缩算法等。从我使用的结果来看,如果使用与其它图像格式相同的压缩算法,TIFF文件并没有什么优势。但是在压缩黑白(单色)图像时,TIFF提供的CCITT G4压缩算法比zip、lzw、RLE等具有非常明显的优势,因此ComicsEnhancer Pro在保存TIFF格式时,单色图像均采用CCITT G4压缩,其它图像采用TIFF规范规定的LZW压缩。

四、JPEG 2000

现在虽然JPEG 2000已经成为标准,但似乎标准对代码实现定义不足,导致现在出现了一些不兼容的JPEG 2000代码。以C语言开源项目为例,目前比较有名的有kakadu software的kakadu、Michael D. Adams的JasPeropenjpeg组织提供的LibOpenJPEG。从我测试的结果看,似乎JasPer编码的兼容性更好,而openjpeg解码的兼容性更强。说得更白一点,用JasPer编码的JP2文件直接插入PDF文件不会出错,而openjpeg编码的会;从Acrobat生成的PDF文件中抽取JPEG 2000文件,用openjpeg能够解开,而JasPer解不开。kakadu的解码速度、兼容性无与伦比,但是某些图像解码后的效果不如openjpeg。

另外IPP也提供了自己的JPEG 2000编解码器,从我测试的结果看,时空效率略逊于kakadu,而且我实在是被IPP的其他codec吓怕了,根本不敢实际应用。

在综合考虑各方因素后,本软件采用kakadu(32位用MMX优化,64位用纯C++)实现JPEG 2000编解码。

在JPEG 2000标准中,定义了JPEG 2000文件(以JP2为文件扩展名),和JPEG 2000编码流(code stream,以J2k、JPC为文件扩展名)。JP2包含的信息更完全,因此本软件编码时一律编码成JP2文件。解码则支持JP2、J2k和JPC。 另外虽然kakadu支持调色板图像的编解码,但是从我测试的情况看,其他软件如ACDSEE、Acrobat等对调色板JPEG 2000的支持并不一定与kakadu一致,因此封闭了调色板JPEG 2000的编码功能,JP2文件只能保存256级灰度和24位真彩图像,但是解码支持调色板JP2文件,解码效果与kakadu的一致。

从我使用的情况看,JPEG 2000的效果不见得比JPEG强多少,但是编码消耗的时间要多得多,实在不很划算,难怪到现在也流行不起来。

鸣谢

本软件的JPEG解码/编码采用了Intel发布的IJL(Intel JPEG Library),但进行了修正;PNG文件的支持采用了libpng组织提供的libpng源代码(zlib采用了ASM版),TIFF文件的支持采用了libtiff组织提供的libtiff源代码,GIF文件支持采用了Davide PizzolatoCxImage,Jpeg 2000支持采用了kakadusoftware提供的kakadu源代码,webp采用了Google的libwebp

附录 版本更新记录

v4.08
功能增强:增强TIFF文件的容错性。
错误修正:某些特殊尺寸的JPG文件解码、编码后底部出现白线。
错误修正:在“自动缩小”状态下,某些图像左、右旋转后会出现不能刷新的区域。

v4.07
功能修正:在“批量设置DPI”界面中,允许设置的最小DPI从80放宽到50。
错误修正:另存为JP2格式时,灰度图像不正确。

v4.06
功能增强:“另存为”时,能够根据文件原有扩展名及当前色彩自动选择新的缺省扩展名。
错误修正:自动裁边时,在某些情况下会出错退出。

v4.05
功能增强: 原“自动纠斜”功能扩展为“自动纠斜_横排”、“自动纠斜_竖排”、“自动纠斜_双向”、“手动纠斜”,以适应不同的需要。原“自动纠斜”相当于“自动纠斜_横排”。
功能增强:对于“自动纠斜_横排”、“自动纠斜_竖排”、“自动纠斜_双向”,可以选择“清除黑区”选项。
错误修正:在“切边”对话框里,在选定纸型后,忘记禁止页边空输入框了。

v4.04
继续与CMYK色彩空间的JPG做斗争。

v4.03
错误修正:在某些情况下,“自动纠斜”会导致出错退出。

v4.02
新增功能:在“通道”中增加“CMYK反白”选项,彻底解决CMYK色彩空间的JPG颜色问题。
功能增强:改进了“颜色数”算法,速度大大加快。
错误修正:在“切边”中,如果选择“垂直”了“靠上”,则上边距对位置不起作用,而是下边距起作用。
错误修正:在将24位真彩减色成16级以下灰度或单色后,如果选择了“16级灰度以下PNG设置背景透明”,则图像保存时会出错。

v4.01
错误修正:碰到空白页时,自动裁边会导致软件出错退出。

v4.00
新增功能:在“切边”对话框中加入了排版功能。
新增功能:调节,包括可以连续调节参数的高斯模糊、锐化。
新增功能:表面模糊,与Photoshop中的同名功能类似,在保持边缘的同时对图像进行平滑。
新增功能:USM锐化,与Photoshop中的同名功能类似,在保持边缘的同时对图像进行锐化。
新增功能:减色选项,可以选择减色时是否抖动、减色时使用的算法等。
新增功能:照度修正、照度归一。同时去掉与此重复的原“去阴影”选项。
新增功能:光线,模仿Photoshop的“阴影/高光”。
新增功能:“色调均化”选项。
新增功能:颜色数,对当前图像的颜色数进行统计。
新增功能:在“曲线”中,增加二次调节项。
新增功能:通道,包括通道互换、通道混合、颜色替换等。原“红蓝互换”选项与“通道互换”重复,故取消。原“反白”选项也移至通道界面。
新增功能:在“切边”界面中可以选择“纠斜”,实现自动纠斜。
新增功能:“16级灰度以下PNG设置背景透明”选项,便于制作背景透明的PDF。
新增功能:对纯黑白二值图可以设置去斑点。
新增功能:原“加粗”(即“膨胀”)增加了二档,并增加“变细(腐蚀)”、“开”、“闭”。
新增功能:直方图中加入“log”选项。
功能增强:状态条上能显示当前图像的色深(bits per pixcel)。
功能增强:“锐化”增加了a1~a3级。
功能增强:增加了“自动对比度3”。
功能增强:“柔化”增加了a1~a5级,相当于半径1.0~2.0的5×5高斯模糊。原先01~05级“柔化”矩阵也进行了修改,效果比原来的更柔和。
功能增强:图像缩放改用IPP实现,速度快了很多,不过EXE文件也大了很多。
功能增强:在状态条上显示图像DPI。
功能增强:强化“曲线”的效果,原来的效果太温柔了。
功能修正:“高亮值”下限从170降至150。
功能修正:批量设置DPI时,DPI上限放宽至8000。
功能修正:去掉了缩放算法的选择项。
功能修正:批量处理时的进度条改为按照文件数显示进度,以提高精确度。
功能修正:调整了几项图像处理功能的执行顺序。
功能修正:重写底层图像数据结构、图像读写及图像处理,使CEP、CV、UV共用同一套图像引擎。
错误修正:如果图像尺寸太大,减色成纯黑白时,会一片白。
错误修正:直方图中R、B颠倒了。
对图像处理顺序进行了调整。
对本帮助文件进行修订。

v3.11
功能增强:支持Alpha通道透明的TIFF文件。
错误修正:4通道、没通道16位色PNG识别不正确。
功能修正:对PNG文件来说,能解码出一部分的文件就不再报告解码错误。
错误修正:由于IJL的不幸疏漏,造成16位量化表的JPG文件解码不正确。

v3.10
新增功能:支持webp格式的解码。
新增功能:增加“自定义工具栏”功能,可以对工具栏按钮、文字、图标等进行调整,方便使用大屏幕的用户。
功能增强:换了一套真彩工具栏图标,支持大、中、小三种尺寸。
功能增强:在打开32位bmp文件时,强制把背景置为白色。
功能增强:“色彩”中扩展了128色、64色、32色、16色、8色、4色、2色、128级灰度、64级灰度、32级灰度。

v3.09
错误修正:某些CMYK色彩空间的JPG文件解码不正确。

v3.08
错误修正:某些PNG解码不正确。

v3.07
功能增强:更改文件名排序方式,“按文件名字母顺序”时基本与Windows资源管理器顺序相同。
功能增强:更改多文件选择对话框的实现方式,减小不必要的内存占用。
错误修正:某些alpha通道透明PNG文件解码异常。
错误修正:某些CMYK色彩空间的JPG文件解码异常。

v3.06
新增功能:“切边”对话框中支持用快捷键翻页。
新增功能:在状态条上显示图像像素尺寸。
功能增强:支持某些非标准BMP图像。
错误修正:如果选择了“自动缩小”,“保存”或“另存为”存出来的图像只有当前可见区大小。

v3.05
新增功能:增加直方图显示,便于在处理时查看处理是否过头。

v3.04
错误修正:不关闭批量处理对话框,直接退出会出错。

v3.03
错误修正:某些图像减色为单色时会出错退出。

v3.02
继续消除单色图像右侧的黑色竖线。

v3.01
错误修正:某些单色图像右侧可能出现黑色竖线。

v3.00
新增功能:在“参数”中新增“JP2压缩”项,用于定量控制生成的JPEG 2000文件大小,详见使用说明。
新增功能:在“参数”中增加“反白”选项,以支持手持阅读,详见使用说明。
新增功能:在“批量转换”对话框中增加“查看日志”按钮,便于查看错误日志。
新增功能:批量处理界面支持文件夹、文件拖放,允许编辑源文件夹、目标文件夹。
功能增强:允许通过拖拽文件夹打开文件,以前只允许拖拽文件。
功能增强:优化“减色”算法,以加快速度。
功能增强:JPEG 2000编码器不再采用jasper,改用kakadu,以提高兼容性和编码效率。
错误修正:某些JPEG 2000调色板图像解码不准确。
错误修正:英文版下有时“曲线”会出错退出。
更改英文版界面字体。
改为发行Unicode版,取消ANSI版的发行。
对使用说明进行了修订。

v2.57
新增功能:支持从资源管理器中拖拽文件。
功能增强:修正“单色”算法。
功能修正:对JPG解码前先做填白处理,避免因为解码失败而出现随机颜色。
错误修正:某些JPG中的EXIF旋转标识识别错误。

v2.56
新增功能:在“批量转换”界面中,可以指定目标文件的DPI,缺省为300DPI,详见使用说明。
新增功能:“批量设置DPI”,可以批量设置BMP、PNG、JPG、TIFF文件的DPI,详见使用说明。
错误修正:IJL不能正确解码某些含JFXX段的JPG文件。

v2.55
zlib、IJG代码恢复原始版本,与IPP版说再见,以避免层出不穷的兼容性问题。

v2.54
功能增强:对含无效字符的文件路径能够给出提示。
错误修正:切边预览窗口显示的文件不正确。

v2.53
功能增强:JPEG 2000解码改用Kakadu,以加快速度。
功能增强:JPEG编解码改用经过修正的IJL 2.0,以加快速度。
功能增强:zlib、IJG代码改用IPP优化版,以加快速度。
功能增强:在批量处理界面中,选择源文件夹后,自动设置目标文件夹与源文件夹一致。
错误修正:在批量处理时,如果元文件夹与目标文件夹相同,可能会对新生成的结果文件再处理。
错误修正:在Win7下,“打开文件”对话框如果选择了“预览”,初始文件无预览。

v2.52
新增功能:“图像增强参数”中增加“红蓝互换”选项,用于处理红外照片等特殊图像。
错误修正:黑白图像选“自动色阶”后变色。
错误修正:某些Old-style JPEG压缩的TIFF文件显示有错。

v2.51
新增功能:“图像增强参数”中增加“加粗”选项,用于加粗较细的文字笔画。
功能修正:在bicubic算法中改用锐化参数,并设置bicubic为缺省放大算法。
错误修正:批量处理时,如果“色彩”选择“黑白漫画”,“新文件扩展名”选BMP,则彩色图像不会被转换成灰度图像。
错误修正:某些CMYK色彩空间的JPG文件显示不正确。
错误修正:缩图时,最下或最上一条扫描线可能不正确。

v2.50
新增功能:图像旋转,包括左旋、右旋90度,及180度旋转。
新增功能:在批量转换对话框中,选择目标文件夹时可以新建文件夹。
功能调整:状态条上的窗口切换控件更改成UnicornViewer所用控件。

v2.49
新增功能:“图像增强参数”中增加“自动色阶/自动对比度”选项,对发白、发黄的彩色页面有效果。
新增功能:在“切边”中,增加“填白”选项。如果该选项被选中,则本该被裁剪的部分不再裁剪,而是用白色填充。
功能修正:引入UnicornViewer的“切边”界面,不再按像素裁切,而是按百分比裁切。
功能修正:“高亮度”处理顺序提前,便于去掉水印。
错误修正:打开某些JPEG 2000图像时出错退出。
错误修正:选择“切边”之后再选择“自动缩小”,画面显示比例不正确。
错误修正:在选择“自动缩小”后,调节参数时图像会自动恢复原大小。

v2.48
错误修正:某些CMYK色彩空间的JPG文件打开后色彩显示不正常。
错误修正:大比例缩图时可能会出错退出。

v2.47
功能增强:LibOpenJPEG升级至v1.3,jpeg 2000解码速度有所提高。
功能增强:“柔化”级别从2级增加至5级,方便在“单色”模式下去斑。
错误修正:不能打开某些采用JPEG压缩的TIFF文件。

v2.46
新增功能:批量处理时新增“复制文件日期、时间”选项,如果选中,则结果文件与源文件具有相同的文件日期、时间。
功能修正:透明背景PNG的背景色强制设置为白色。
功能修正:对于纯粹由数字构成的文件名,即使在“文件显示顺序”中选择了“按文件名字母顺序”(缺省),也会按照数字的实际值进行排序,避免10.jpg排到2.jpg前面。

v2.45
错误修正:某些CMYK色彩空间的JPG文件显示不正确。
错误修正:大比例缩图时,会出现亮线。

v2.44
功能增强:改写镜像、翻转、旋转90度的代码,以提高速度。
错误修正:某些CMYK色彩空间的JPG文件显示不正确。

v2.43
新增功能:为主窗口添加LOGO。
新增功能:鼠标双击主窗口空白区(黑色背景区),相当于点击“文件->打开”菜单。
错误修正:某些图像减色至4级灰度时会出错。

v2.42
功能修正:另存为TIFF时,除黑白图像采用CCITT G4压缩外,其他所有图像均采用LZW压缩,以获取最大兼容性。
功能修正:透明背景GIF的背景色强制设置为白色,不再用GIF本身的背景色。

v2.41
错误修正:缩小显示图像时可能会出错退出。

v2.40
新增功能:支持按照JPEG格式中的EXIF信息,自动对图像进行旋转。某些数码相机喜欢这个。
新增功能:“文件显示顺序”增加“按文件末尾数字”排序选项。
错误修正:碰到某些破损GIF文件会出错退出。

v2.39
错误修正:在放大某些图像时,会出错退出。

v2.38
兼容某些JPEG压缩的TIFF文件。

v2.37
功能增强:在选择“8级灰度”、“4级灰度”时,背景色强制置为白色。

v2.36
功能增强:支持某些特殊格式的TIFF文件。
错误修正:如果图像文件正在被某些软件打开,则不能正常读取该文件。

v 2.35
错误修正:某些大图缩小时,会出错退出。

v2.34
功能增强:支持某些特殊格式的TIFF文件。

v2.33
功能增强:支持CMYK色彩空间的JPG图像。

v2.32
功能增强:支持某些柯达扫描仪生成的OJPEG TIFF图像。

v2.31
新增功能:支持jpeg 2000,包括jp2、j2k和jpc文件。
错误修正:在打开某些CCITT G4压缩的TIFF图像时,会出现缓冲区溢出错误。

v 2.30
功能增强:支持上一版本未能支持的非标准OJPEG格式TIFF文件,怪文件还真是层出不穷。
功能增强:对于长、宽DPI不相等的TIFF文件,能够自动调整长宽比。

v 2.29
1、功能增强:继续加强对非标准OJPEG格式TIFF文件的支持,但是有些文件还是无法解码,只能保证软件不会异常退出。
2、功能增强:允许文件存储为TIFF格式,并且支持全部颜色选项(上一版本只能存储单色TIFF)。单色图像采用CCITTFAX4(G4)压缩,真彩图像采用JPEG压缩,其它图像采用LZW压缩。

v 2.28
新增功能:模仿Excel,在状态条上显示当前窗口列表。
新增功能:在状态条上显示当前文件序号/当前文件夹中的文件数。
新增功能:工具条。其实最初的版本是有的,后来由于与某些Windows 95环境冲突,所以删了,现在重新恢复。
新增功能:在“色彩”选项中,可以设定将24位真彩色减色为256色。
新增功能:减色后的图像允许存为BMP、TIFF格式。
功能增强:减色功能升级到CxImage 5.99c所带的源代码。
功能增强:在批量减色时,如果选择了“不处理彩色图像文件”,则根据图像的实际内容而不是文件格式判断图像是否为彩色图像。
功能增强:zlib升级为1.2.3,以避免潜在的安全风险。
功能增强:除了按文件扩展名外,还按文件头识别图像文件格式。
功能增强:GIF解码器换成了cximage提供的解码器,虽然速度差了点,不过容错能力比原来的强。
功能增强:在“文件->打开”对话框中,可以选择是否打开预览功能(缺省不打开)。
功能增强:对libtiff源代码进行修正,以更好地支持OJPEG格式的TIFF文件。由于历史的和技术的原因,国内很多扫描外包公司提供的彩色TIFF影像文件都是非标准的OJPEG格式(没有核心技术的悲哀!)。由于地址错位,Photoshop、ACDSee等正宗图像处理软件都会将这些文件当作已损坏的文件加以拒绝,俺实在是被逼无奈,才会捏着鼻子去支持这些垃圾格式。

v2.27
功能增强:改进“打开文件”对话框的图像预览效果。
功能增强:加快用箭头键移动图像的速度,代价是图像移动不是那么平滑。
错误修正:在1280*1024分辨率下,用鼠标拖动很大的图像时,图像会乱跑。
错误修正:在“参数”对话框中,先选中“Jpg质量”后再切换到“缩放”,会出现“缩放”项中的最大值变为100(滑动条处于最右端)。感谢樊云军的指正。

v2.26
1、功能增强:减色功能升级到CxImage 5.80所带的源代码。
2、功能增强:缩小图像时,允许指定缩小算法。以前缩小时一律使用bilinear算法。
3、功能增强:在将彩色图像转换成灰度图像时,灰度计算公式从G = (R + G + B) / 3改成G = (54 * R + 183 * G + 19 * B) / 256,与libpng采用的公式相同。
4、功能增强:读取BMP文件时,能够处理BI_RLE8、BI_RLE4、BI_BITFIELDS格式的图像。
5、功能增强:“打开文件”对话框升级到ComicsViewer 1.20带图像预览的对话框。
6、功能增强:“打开目录”对话框升级到ComicsViewer的树型目录对话框。
7、功能增强:libtiff升级到v3.7.1,libpng升级到v1.2.8,zlib升级到v1.2.2。并且zlib使用的是ASM版(其实只有两个文件是ASM的)。虽然没有确凿的测试数据,不过我相信png文件的编/解码速度会快一点。
8、功能增强:简体中文版对话框的字体全部修改成宋体9。

v2.25
新增功能:缩放的时候,可以选择放大算法:bilinear、bicubic和nearest,分别适应于中档、高档、低档机,当然放大后的效果也不一样。

v2.24
功能修正:png格式的压缩率从Z_BEST_COMPRESSION改成Z_DEFAULT_COMPRESSION,牺牲了一点文件长度,但是速度加快许多。

v2.23
错误修正:批量处理时源文件不能包含TIFF、WMF。

v2.22
新增功能:支持读取TIFF、WMF格式的文件,但是不能输出这两种格式。
功能修正:透明GIF文件的背景色改为窗口背景色,而不是黑色,以符合习惯。

v2.21
功能修正:色彩的缺省选项从“黑白漫画”修改为“保持原样”。

v2.20
1、新增功能:可以将彩色和256级灰度图像降低到16级、8级、4级灰度或单色。
2、新增功能:支持16级、8级、4级灰度和单色效果预览。
3、新增功能:PNG格式支持16级、8级、4级灰度和单色图像的输出。

v2.19
1、新增功能:支持PNG格式。读取的时候可以读取所有色彩模式的PNG,输出的时候只能输出24位真彩和256级灰度的PNG。
2、新增功能:切边。可以批量处理,切边参数可以保存。
3、功能修正:页面浏览的快捷键改为与ComicsViewer相同。

v2.18
为了更好地处理动画截图,对图像增强进行如下调整:
a. 锐化操作在操作流中的顺序提前。
b. 锐化参数增加到9级。

v2.17
增强线程安全性。

v2.16
同步发行英文版。

v2.15
除JPG文件外,输入格式增加对UFO、GIF、BMP的支持,输出格式增加对BMP的支持。现在本程序也可以当作文件格式转换工具使用了。

v2.14
将“参数”对话框的标签由一行改为两行,避免用箭头按钮进行切换。

v2.13
1. 对“批量转换”界面进行了调整。
2. 窗口背景色改为黑色。
3. 增加了错误记录文件访问的鲁棒性。

v2.12
1. 新增“自动播放”功能:从当前文件开始,顺序显示同一目录下的后续文件。文件显示顺序同浏览顺序。自动播放间隔通过“自动播放设置”功能进行设置。
2. 对用箭头键操纵的大图像滚动算法进行了改进:采用多媒体专用的高精度定时器(精度到1ms),对时间进行精确定位,保证在高、低速机器上均能得到平滑的滚动效果。测试平台包括:在赛扬300A/128MB上跑的Windows Me、Windows NT Server 4.06,在PIII 1G/256MB上跑的Windows 98 SE2、Windows 2000 Server。

v2.11
1. 新增鼠标浏览功能:除了普通的按住左键拖动大图外,还支持鼠标翻页(双击左键下翻,按住左键单击右键则上翻)。
2. 增加文件监测功能:当目录中的文件发生变化(添加、删除、更名)时,自动刷新文件缓冲,翻页时就能浏览到更新后的文件。但是继续保留2.10版加上去的“刷新目录”菜单,原因很简单:为了保证在不同的平台上都能运行,程序中使用了通用监测函数,而没有采用NT专用函数,这样如果打开的是网路驱动器上的文件,自动监测功能可能不太可靠,还要手动刷新。浏览本机图像则不存在这种问题。

v2.10
继续从ComicsViewer引进idea和s/c:
1. 仿照Photoshop的Curve功能,增加了“曲线”(专业术语应该叫“对比度延展”)功能。不过可能是因为我在曲线生成方面偷了点懒,效果不如Photoshop明显,但也有长处:(1).参数化曲线,结果可重复;(2).预设多种模式,便于初学者上手,也便于学习Photoshop的Curve功能。
2. 仿照IE中的“后退”和“前进”功能,增加了“前一页”和“后一页”功能。这样在浏览时就不用担心无意中碰到Home或End键了:只要敲一下退格键(BackSpace)或选“查看->前一页”菜单即可返回原页面。
3. 增加“全屏浏览”和“自动缩小到窗口大小”功能。其中“全屏浏览”的效果看起来有点土,但MFC只能做到这一步,我又懒得用DirectX,所以就这样了。
4. 增加“刷新目录”功能。如果当前窗口所显示文件的目录中有文件加入或删除,选择此功能后就能正确地用PgDn和PgUp键浏览变化后的文件。其实对用户来讲这个功能应该是多余的,好的程序应该能够自动检测到目录所发生的变化。请期待以后的升级吧。
5. 增加关键性的条件判断,在读取图像文件失败后不会再出现保护性错误。
以现在的浏览功能来看,ComicEnhancer Pro已经差不多可以用来看漫画了,并且和其它图像浏览器相比具有独到的特点:
1. 可以随时根据漫画质量和当前显示器设置对图像进行增强,保证最佳视觉效果,同时图像文件本身保持不变。
2. 可以在一个主窗口下同时浏览多个文件,或同一文件的多个备份,便于比较。不过每打开一个图像窗口均需消耗大量内存,因此在低于128MB内存的机器上不提倡同时打开4个以上的窗口。基本上当你听到硬盘狂响不止时就是物理内存不足了。

v2.02
从ComicsViewer引进了新的idea和s/c:
1. 增加了基本图像浏览功能:打开某个文件后,用PgDn、PgUp、Home、End键可以在同一个窗口中打开同级目录下的其它文件。文件的浏览顺序通过“查看->文件显示顺序”菜单项进行设置。
2. 经高人指点,对mask滤波算法内核进行了优化。受其影响,放大、锐化、柔化操作速度均有提高。
3. 对用鼠标、键盘操作的图像滚动进行了更改,使滚动过程更平滑。
4. 修正了一个bug:参数栏中的“尺寸缩放”不等于100,“以上参数仅适用于当前窗口”项也未选中,但是新打开的窗口仍然按100%显示。
5. 为“参数”栏增加了快捷键:Ctrl+P和Ctrl+A,以方便左撇子和右撇子。

v2.01
修正了v2.0中的一个bug:在进行“成批转换”时,只有“属性”对话框中的参数起作用,“批量漫画增强”(原ComicEnhancer界面)中的参数不起作用。

v2.0
推出了众望所归的“预览”功能,而且是:
1. 全尺寸“所见即所得”的预览效果;
2. 真正MDI的预览界面,可以同时预览多个文件,或打开同一文件的多个窗口(窗口上限受内存、CPU速度等限制,建议不超过10个);
3. 预览时可以指定参数的作用范围,可以单页调节/保存,也可以成批调节/保存;
4. 通过预览确定参数后,选择“文件->成批转换”菜单即可调出原ComicEnhancer界面,对成批图像文件进行处理。
由于用户界面、功能等改动较大,因此软件版本号升级为整数,软件名称也由ComicEnhancer更改为ComicEnhancer Pro。

v1.24
原来的“转换”按钮更改为“全部转换”,即对源目录下的所有文件进行转换,适用于参数已确定的情况;新增“选择转换”按钮,允许对选定的(多个)文件进行转换,适用于参数尝试、调整阶段。

v1.23b
为了与Mpeg2Jpeg相配合,对放大时的平滑算法进行了调整。此调整对黑白漫画几乎没有什么影响。
如果图像放大后在边线、文字附近出现碎片,可以通过“柔化”进行过滤,也可以通过增加亮度、对比度加以消除,不过亮度上去后可能需要进行Gamma校正,否则会太刺眼。

v1.23a
    (1).原有“锐化”功能的效果太显著了,增加两档较弱的效果,便于实用。
    (2).将“黑白漫画”选项由复选项改成列表项,更加直观、方便,选项也增加到彩色漫画、黑白漫画、保持原样三个。
    (3).增加目录选择对话框的尺寸,方便浏览。

v1.22
    (1).对亮度、高亮度、对比度、Gamma校正算法进行了最彻底的优化,速度接近理论极限值,大概用于实时处理都够了。
    (2).由于Gamma校正的查表由二维表改为一维表,表格所占内存减少为原来的1/80,“输入值圆整为5的倍数”这项内部限制也被取消。
    (3).全部重写了JPEG访问接口。以前的访问接口其实是copy来的,经过了层层封装,使用起来很方便,可是中间环节太多,影响效率。新的接口去掉了所有不必要的中间环节,直接对IJG的JPEGLIB进行操作,缓冲切换也减至最小。但是毕竟是文件操作,还有复杂的编码/解码过程,所以速度改进有限。不过光是其中的错误处理一项就让我头昏了一下午。
    (4).对尺寸缩放、锐化、柔化进行了微小改进,速度提高不很明显。这些功能的核心算法是各种高/低通滤波,能到这种程度已经让我偷笑了。幸好这三个功能也不常用。

v1.21
将Gamma校正的算法由硬碰硬的幂运算改成了查表,速度终于优化到可以用于大尺寸图像的地步。

v1.20
    (1).应公众要求,破例将界面由英文转为中文,如果使用的不是简体中文Windows,需要外挂NJStar。
    (2).增加了一批图像新功能:Gamma校正、尺寸缩放、锐化、柔化。
    (3).增加了设置管理功能:保存、调入、恢复。
    (4).增加停止功能:在开始转换后,用户如果愿意可以中断当前正在进行的转换。
    (5).Logo图像由静态变成动态。当时手头一时找不到合适的动画制作软件,临时现编了一个的说。
    (6).更正了一个错误:如果目标目录在源目录里的话,会一直目录套目录转换下去不会停。
    (7).去掉了两个装饰性的选项:Auto Level(自动平衡)和Edge Enhance(边缘增强)。

v1.1
增加对Highlight的阀值的调节功能,缺省阀值从原来的170涨到190,加强对较淡的边线、文字的保护。

v1.02
将Slider的Pagesize从10降到5,方便懒人使用。

v1.01
对Brightness、Highlight的运行速度进行了优化

v1.0
提供Brightness、Contrast、Highlight、JPEG Quiality、Gray Scale、Edge Enhance功能,支持JPG文件格式。