Hlavní navigace

Grafika v UNIXu - barevná kalibrace skenerů, OCR

1. 10. 2001
Doba čtení: 8 minut

Sdílet

Dnešním dílem uzavřeme sérii článků o skenování návodem k barevné kalibrací skeneru v UNIXu, několika závěrečnými poznámkami a zakončíme přehledem projektů pro OCR s otevřeným kódem.

Barevná kalibrace skeneru

Barevná kalibrace je postup, kdy se vytváří a používá tzv. barevný profil, který popisuje barevné zkreslení daného zařízení. K úpravě barev lze použít barevné kalibrační profily, které převádějí barevný prostor zařízení do nezávislého barevného prostoru nebo barevného prostoru jiného zařízení. Při kalibraci obrázku je možné profily zřetězit (je to výhodné z hlediska minimalizace výpočetních chyb – s profily se pracuje v plovoucí řádové čárce, zatímco obrazová data jsou omezená na malý počet bitů). Protože barevné kalibraci chci ještě věnovat některý z následujících dílů, dnes se omezíme jen na ukázky použití programu SCARSE ve skenovací praxi.

Jak velký vliv na podání barev má barevná kalibrace u levných skenerů, se můžete přesvědčit na této ukázce (fotografie jste viděli již v předminulém dí­le).

Tabulka č. 200

sken bez úprav
Obrázek bez úprav, pouze s gama korekcí.

kalibrovaný sken
Tentýž obrázek po úpravě programem SCARSE za použití typového barevného profilu skeneru bez dalších úprav.

Barevná kalibrace ale patří mezi standardní postupy zejména u vyšší kategorie skenerů. Kvalitní barevné reprodukce by bez ní byly nemyslitelné.

Pokud se chystáme obrázek upravovat za pomoci barevného profilu, je nutné, aby vstupní barevný prostor byl přesně stejný, jako byl barevný prostor při tvorbě kalibračního profilu. Pro většinu profilů to bývá prostor lineární. Všechny úpravy úrovní provedeme až po kalibraci!

Obrázek si naskenujeme v  lineárním barevném prostoru, jak nejlépe můžeme, a poté jej budeme kalibrovat. Zatím nelze provádět žádnou z níže uvedených úprav přímo v XSane ani jiném programu z dříve uvedeného přehledu.

Parametry programu SCARSE se mohou lišit podle umístění souborů v konkrétní instalaci a typu skeneru, volba -vvv zapne upovídaný režim. Program umí pracovat pouze s formátem TIFF. Při práci může program ohlástit informaci o ztrátě některých barev, které monitor (nebo barevný prostor) již neobsáhne. Není to závada, ale typický problém převodu barevných prostorů. Řeší ho tzv. mapování gamutu.

Ukázky práce s barevným profilem skeneru

Převod naskenovaného obrázku do nezávislého barevného prostoru sRGB za použití barevného profilu skeneru (UMAX Astra1200S):

cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \
  -r /usr/share/cms/profiles/sRGBSpac.icm sken.tif vystup.tif

Převod naskenovaného obrázku do barevného prostoru monitoru za použití téhož barevného profilu skeneru a modelového barevného profilu monitoru (luminofor typu Trinitron, barevná teplota 5000 K, gama 2,2 – tj. vč. dříve zmíněného záměrného snížení hodnoty gama o 10 % v rámci zobrazovacího záměru – rendering intent):

# vytvoříme pomocný převodní profil
ipb -v -c c -oLab -E1 labng.icm
# podle informace výrobce monitoru (luminofor + barevná teplota)
# zvolíme modelový barevný prostor monitoru a převedeme obrázek
cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \
  -r labng.icm -r /usr/share/cms/profiles/display/TRIN5022.icm \
  sken.tif monitor.tif
rm labng.icm

Převod naskenovaného obrázku do nezávislého barevného prostoru CIE Lab (obrázek v tomto barevném prostoru většina prohlížečů, nejen UNIXových, neotevře, 16bitový CIE Lab pak neotevřou ani mnohé komerční programy pro DTP studia):

cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \
  sken.tif lab.tif

Pokud hledáte typový barevný profil pro váš skener, možná ho najdete na této stránce nebo někde jinde na Internetu. Chceme-li však ještě lepší výsledek, je lépe si vyrobit barevný profil přímo pro náš kus skeneru (a jeho současný stav). K tomu potřebujeme barevnou kalibrační tabulku. Tu je možné zakoupit v prodejnách pro počítačové grafiky nebo jako součást softwarových balíků. Levnou standardní kalibrační tabulku IT 8.7 s podporou všech projektů s otevřeným kódem nabízí Wolf Faust (s ní byly vyrobeny i některé profily na uvedené stránce). Pokud byste o ní měli zájem, je možné se v diskusi k článku dohodnout na společné koupi více kusů (jedná se o maloprodej, dovozce neexistuje).

Studiové skenery

Pokud nám opravdu záleží na kvalitě nějakého obrázku, nemůžeme čekat, že náš malý skener za několik tisíc korun bude konkurovat špičkovému zařízení za milióny. Možnosti takového přístroje jsou nesrovnatelné – jeho rozlišení je často i řádově vyšší, ostrost je téměř dokonalá a barevné podání je pod neustálou kontrolou obsluhy (doufejme). Proto je u náročné předlohy dobré uvážit, zda se nám vyplatí pokoušet se o naskenování nebo se obrátit na grafické studio, které nám zaručí kvalitu skenu. Sken mohou připravit rovnou v barevném prostoru CMYK vhodném pro tisk. S některými předlohami nám ani nic jiného nezbyde, neboť domácí skener je bez šancí (fotografie na rastrovém papíře, sken z filmu na plakát apod.).

Studiové skenery se dělí na dvě kategorie – plošné a bubnové. Plošné pracují s precizní obdobou mechaniky běžných plošných skenerů – lineární snímač projíždějící nad předlohou. Bubnové pracují s rychle rotujícím průhledným bubnem, předlohu na něm připevněnou postupně osvětluje paprsek laseru a snímá fotočidlo. Kvalita i cena obou typů je srovnatelná, možnosti mírně odlišné. Cena za sken pro tiskovou velikost A5 (300 DPI) se ve studiích pohybuje kolem 200 Kč, často i se základní retuší.

Malý skript na závěr

Chcete s pomocí dostupných programů (a s jejich omezeními) dostat ze skeneru maximum? Připravil jsem pro vás malý skript. Není rozhodně určen na přímé použití – nejdříve si jej vložte do editoru a upravte si všechny potřebné hodnoty (profil skeneru, umístění profilů). Pak proveďte několik experimentů, kterými vyberete optimální hodnotu doostření (pokud skener skenuje neostře, vždy jde o kompromis ostrost–šum). Samozřejmě, že pro různá rozlišení budete muset vytvořit různé skripty s různou mírou doostření. Skript pracuje jednoduše. Do podadresáře raw naskenujeme obrázky bez jakékoliv korekce a v maximální bitové hloubce. Spustíme skript a v aktuálním adresáři nalezneme zpracované skeny. Tyto obrázky dále zpracováváme podle potřeby (úprava úrovní, retuš, zápis v jiném formátu) jako obvykle.

#! /bin/sh

echo "PostScan - skript pro zpracování skenů"
echo "(c) 2001 Stanislav Brabec, UTX"
echo "optimalizováno pro:"
echo "skener    UMAX Astra 1200S"
echo "rozlišení 300 DPI"

shopt -s nullglob

if [ ! -d raw ]
then
    echo "Musíte mít adresář raw se skeny ve formátu tiff!"
    exit 1
fi
cd raw
for i in *.tif
do
    echo "$i"
# iterativní (3× opakované) Laplaceovo zaostření v lineárním prostoru
    convert -sharpen 1.8x0.4 "$i" "../${i}_1tmp$$.tif"
    convert -sharpen 1.8x0.4 "../${i}_1tmp$$.tif" "../${i}_2tmp$$.tif"
    convert -sharpen 1.8x0.4 "../${i}_2tmp$$.tif" "../${i}_1tmp$$.tif"
# kalibrovaný převod do sRGB
    cmap -p /usr/share/cms/profiles/astra1200sr.icm \
         -r /usr/share/cms/profiles/sRGBSpac.icm \
         "../${i}_1tmp$$.tif" "../${i}_2tmp$$.tif"
    rm "../${i}_1tmp$$.tif"
# snížení barevné hloubky na 8bpp
    convert -depth 8 "../${i}_2tmp$$.tif" "../$i"
    rm "../${i}_2tmp$$.tif"
done


OCR

Protože v druhém dílu jsem zcela zapomněl na open source projekty pro optické rozpoznávání znaků (OCR), dnes to napravuji.

OCR patří mezi oblíbené práce studentů umělé inteligence. K produkčnímu nasazení je ovšem potřebné dosáhnout alespoň 99,9% rozpoznávání (a i to stále znamená zhruba dva překlepy na stránku). Jiné nároky na tyto programy má obyčejný uživatel, který při datlování „všema dvěma“ neopíše deset řádků ani za deset minut (o překlepech nemluvě), jiné nakladatel, jenž potřebuje načíst (nebo přepsat) tisícistránkovou knihu. Algoritmy OCR se dělí na dvě skupiny – neuronové sítě, typické učící se programy, a na heuristické algoritmy, které hledají písmena podle specifických znaků. Dobrý OCR program často obě metody kombinuje.

Pod názvem GOCR (nebo též JOCR) se skrývá asi nejznámější projekt z této oblasti. K rozpoznávání znaků používá netriviální heuristiku. K práci nepotřebuje GUI, rychlostí však nevyniká. K tomu, aby uměl česky, mnoho nechybí – dopsat podporu pro výstup ISO-8859–2 či Unicode, a vytvořit heuristiku pro háček (heuristiku pro ostatní diakritiku již program obsahuje). Na čistém textu z laserové tiskárny dosahuje téměř použitelného výsledku (jedna chyba na řádek), u strany ze starší knihy je chyba bezmála v každém slově.

Velmi zajímavým projektem je Clara OCR. Program je založen na neuronové síti. Podpůrné funce hledají diakritiku, nečistoty a dělí text do slov. Aby podporoval češtinu, chybí mu tabulka české diakritiky (informace o znacích a jejich možné diakritice) a převodní tabulka pro ISO-8859–2. Je též nutné opravit inicializaci XKB. Ze zajímavých funkcí uvedu možnost přeučení známého znaku.

Opuštěný xocr je též založený na neuronové síti (podařilo se mi zprovoznit pouze verzi 4.1; není mi jasné, jde-li o freeware nebo shareware). Je ochoten naučit se české znaky, pokud se mu smaže jeho databáze písmen a učí se od počátku. Opět je nutné opravit inicializaci XKB. Uživatelské rozhraní nepřívětivé, v určitých místech padá, na disku však po sobě zanechává rozpoznaný text. Chybí rozpoznávání slitků (musí se učit vcelku) a nečistot; není-li předloha dokonale čistá, je rozpoznávání zcela nepoužitelné – jakákoliv nečistota jej zmate na řádek i více. Též požadavky na vodorovnost řádků jsou vysoké.

NistOCR je akademický projekt na rozpoznávání ručně psaných textů, který se po šesti letech dočkal další verze.

Cal Poly OCR library je další OCR knihovna, napsaná na akademické půdě, které již devět let čeká na využití.

Program OCRchie se mi nepodařilo zkompilovat, projekt WOCAR ani nalézt (přeci jenom se to podařilo, hledejte zde – pozn. redakce).

Zajímavé jsou OCR FAQ a OCR Resource List.

Pominuli jsme zde specializované OCR projekty, jako je rozpoznávání čínštiny, tibetštiny, čárových kódů či not.

CS24_early

Tabulka č. 201

text pro ocr

jednak ze slonové kosti, jednak ze zlata, ale t?é json
    vyrobeny ze samého cedrn, V této t?hliei n?la mat ka
    K?sela, potomního korint bskébo t?ana, když ho po na-
    rození velmi borlivě bledali Bakebiovei, Napaměť zaehrá-
    nění se Kypselův rod pojmenoval na Kypselovee a t?bl t-
    et věnovali do Olympie, tehdejšt Ko?tané nazýv v t?-
    hliee kypselai, Také dítět t byloprý dáno jménopo tomto,


První kroky jsou vždy těžké.
(text z knihy Pausaniás: Cesta po Řecku, Praha, 1972)

Byl pro vás článek přínosný?

Autor článku