使用 ImageMagick 修復(fù)掃描圖像
多年前,在翻閱一家舊書店的書架上的內(nèi)容時(shí),我偶然發(fā)現(xiàn)了一本名為 《UNIX System Command Summary for Berkeley 4.2 & 4.3 BSD》 的小冊(cè)子,由 Specialized Systems Consultants 出版。我買它是出于好奇,因?yàn)樗呀?jīng)有將近 20 年的歷史了,但仍然在很大程度上適用于現(xiàn)代 Linux 和 BSD。
無(wú)論是當(dāng)時(shí)還是現(xiàn)在,我都很開(kāi)心。一本寫于 1986 年的小冊(cè)子在 2016 年仍然很重要,而同一個(gè)書架上關(guān)于專有操作系統(tǒng)的書籍并不值得印刷它們的紙張。(想一想:你認(rèn)為什么技術(shù)可以在僵尸末日中幸存下來(lái)?)這本小冊(cè)子已經(jīng)放在我自己的書架上好幾年了,但我突然想到可能值得對(duì)這個(gè)作品做一點(diǎn)數(shù)字保存,所以我決定掃描這本小冊(cè)子來(lái)創(chuàng)建一本 ??CBZ 電子書??。
使用 ??Skanlite?? 進(jìn)行掃描很容易,但很耗時(shí)。然而,當(dāng)我完成后,我發(fā)現(xiàn)有些頁(yè)面不是很平整。
A page of text, including a table of contents and a glossary, that is crooked and distorted
在打印中,這稱為配準(zhǔn)問(wèn)題,這意味著打印內(nèi)容的位置在頁(yè)面上的方向不正確。
ImageMagick
??ImageMagick?? 是基于終端的非交互式圖形編輯器。嘗試在無(wú)圖形環(huán)境(如純文本終端)中編輯圖形似乎違反直覺(jué),但實(shí)際上很常見(jiàn)。例如,當(dāng)你將圖像上傳到 Web 應(yīng)用用作個(gè)人資料圖片時(shí),應(yīng)用服務(wù)器上的腳本可能會(huì)使用 ImageMagick 或其庫(kù)處理你的圖像。非交互式編輯器的優(yōu)點(diǎn)是你可以制定需要對(duì)示例圖像執(zhí)行的操作,然后只需按一下按鈕即可將這些效果應(yīng)用于數(shù)百個(gè)其他圖像。
ImageMagick 通常與其他圖形編輯器一樣強(qiáng)大,只要你花時(shí)間了解它的許多功能以及如何組合它們以實(shí)現(xiàn)所需的效果。在這種情況下,我想旋轉(zhuǎn)歪斜的頁(yè)面。在搜索了 ImageMagick 的文檔后,我發(fā)現(xiàn)我需要的解決方案的 ImageMagick 術(shù)語(yǔ)稱為糾偏。將你的術(shù)語(yǔ)與其他人的術(shù)語(yǔ)保持一致對(duì)于你不知道的任何事情都是一個(gè)挑戰(zhàn),因此當(dāng)你使用 ImageMagick(或其他任何東西)時(shí),請(qǐng)記住,你描述問(wèn)題或解決方案的用詞可能和別人不一樣。
要使用 ImageMagick 對(duì)帶有彎曲文本的圖像進(jìn)行校正:
??-deskew?
? 選項(xiàng)表示可接受偏差的閾值。通過(guò)跟蹤看似字母的對(duì)象的峰谷來(lái)確定傾斜。根據(jù)掃描的彎曲程度,你可能需要多于或少于 25% 的閾值。我已經(jīng)達(dá)到了 80%,到目前為止,低于 25% 沒(méi)用效果。
結(jié)果如下:
The same page of text, now with the text properly aligned
修復(fù)了!將其應(yīng)用于文檔的剩余 55 頁(yè)以修復(fù)傾斜的頁(yè)面,而對(duì)已經(jīng)筆直的頁(yè)面不做任何事情。換句話說(shuō),由于我的閾值設(shè)置,在不需要調(diào)整的頁(yè)面上運(yùn)行此命令是安全的。
使用 ImageMagick 裁剪圖像
在糾正了歪斜之后,因?yàn)槲覓呙杳恳豁?yè)都比必要的范圍要多,以防止意外切斷單詞,我認(rèn)為裁剪我糾正的頁(yè)面是有意義的。我很高興在頁(yè)邊空白處保留一些空間,但沒(méi)有以前那么多。我經(jīng)常使用 ImageMagick 的“裁剪”功能來(lái)處理這個(gè)網(wǎng)站上的圖像,所以我很熟悉這個(gè)選項(xiàng)。但是,我需要確定如何裁剪每一頁(yè)。
首先,我需要圖像的大小:
知道尺寸后,我能夠?qū)ξ铱梢猿惺艿膩G失多少像素做出一些估計(jì)。經(jīng)過(guò)幾次試運(yùn)行,我得到了這個(gè):
這并不完全適合,但當(dāng)我將它應(yīng)用于冊(cè)子中的其他圖像時(shí),它被證明很重要。這些頁(yè)面的內(nèi)容和掃描儀位置各不相同,所以我很高興給每一頁(yè)一點(diǎn)空余空間。
這是校正和裁剪的圖像:
The same page of text, with the previous fixes applied and crooked white margins around the page cropped out.
使用開(kāi)源批量編輯圖像
ImageMagick 的美妙之處在于,當(dāng)你確定了修復(fù)圖像的公式,你就可以將該修復(fù)應(yīng)用于需要相同修復(fù)的所有圖像。我使用 ??GNU Parallel?? 執(zhí)行此操作,它使用我所有的 CPU 內(nèi)核來(lái)完成數(shù)百頁(yè)的圖像校正。這并不需要很長(zhǎng)時(shí)間,而且結(jié)果不言而喻。更重要的是,我已經(jīng)有了一個(gè) UNIX 歷史上有趣作品的數(shù)字檔案。