有许多扫描仪可以在其设置中设置图像伽玛,但不幸的是,这个伽玛可以在扫描仪软件中进行调整,而不是在扫描仪侧进行调整(通过模拟方式或至少使用更多分辨率不仅仅是8位)。比方说,我们从扫描器的线性响应最初,所以255是最大亮度,128是半亮等,然后图像经过一个LUT:通过跳过的级别确定图像伽马
0 -> 0,
1 -> 21,
2 -> 28
...
127 -> 186,
128 -> 186,
...
254 -> 255,
255 -> 255
问题是:我们得到一些一束扫描具有未知伽玛设置的页面,并希望自动处理它们,而无需人工仔细检查。
我们希望检测像缺少某些特定亮度级别的图像(此处,gamma = 2,2我们错过1..20,22..27等),并基于该图像分配相应的亮度级别伽马值的图像,所以它会被正确处理后。顺便说一下,我们会提醒用户由于伽玛转换导致信息丢失,所以用户应尽可能关闭它。
这很容易确定这个最常见的gamma = 2.2的情况,我们只是检查相应的零。 Gamma = 1也很容易:在这种情况下,我们应该完全没有失误。
但是,这将是最优雅的解决方案,以确定不只是这些情况下,但由独特的价值缺失任意伽马。例如,gamma = 1,01除了20以外的所有值。在gamma = 1,2(Plustek Opticbook扫描仪喜欢灰度图像的这个值)时,我们有1,2,5,7,9,12,...缺失, 等等。
有一个问题:有些低值和高值可能会丢失,有时仅仅是因为页面上没有额外的白色或额外的黑色区域,所以我们应该切断这些“尾巴”,并且仅使用内部错过的级别。
我们可能花费大量时间建立某种决策树,但是所有的处理过程都应该尽可能快:这些图像有600 dpi的分辨率。
任何想法?