prevcontentnext


スキャンとスキャナたち

この章では Gimpでスキャナをどう使うかについて、いくつかの助言をします。 ここではSaneをとりあげます。 SaneはUNIX/Linux上のスキャナプログラムでGimpにはプラグインとして見えるものです。 また、スキャナを買う場合にはどんな知識が必要かも簡単に見ていくことにしましょう。

 

Gimpでスキャナを使うときには

 

UNIX/Linux用のスキャナプログラムには様々なものがあります。 これについてはUNIXやLinuxシステムを使ってスキャンする を御覧下さい。 しかしこの章では Sane(Scanner Access Now Easy)だけについて見ていきます。というのも著者らの考えではSaneこそGimpでスキャンするときの確実な方法だと思うからです。

Saneがサポートしているスキャナとオペレーティングシステムのリストについては、 付録5 Sane のサポートするスキャナ のSaneスキャナリストを御覧下さい。 この章では、Saneを LinuxSolaris にインストールする方法について述べます。

また、フラットベット型のUmax Astra 1200Sスキャナと スライド型のHP Photosmart スキャナ(SCSIモデル)の利用法と設定についても説明します。 ただし、著者らは特定のブランドや特定の型のスキャナを買うよう 薦めているわけではありません。 単に著者らは、ここで調査したスキャナが持つ機能に満足しており、ここ Frozenriverで利用しているものはまずまずであると言えば十分でしょう。 SaneでサポートされているHP Photosmartは 未だ多少不完全気味であり、したがってここではあまり立ち入りませんが、 Saneの設定の例として示しておきます。

どのスキャナを買うか

 

とにかくパラレルポートの安いスキャナに関しては忘れて下さい。 なぜならそれらはSaneやUnix/Linuxではほとんどサポートされていないからです。

次に、Saneで接続する限り USB(Universal Serial Bus)スキャナも対象外です。 USBのものはパラレルポートのスキャナよりもサポートが悪いです。 USBインタフェースは、おそらく良い選択でしょうが、しかしLinuxではUSBスタックは Kernel 2.2.7でようやく導入されただけです。 この文章を書いている現時点では(1999年7月) SaneはUSBスキャナをサポートしていませんし、LinuxのUSBスタックは まだまだ「若い」状況です。 しかしながら、今後この状況は変化すると思われます。 多分、将来的にはSaneもLinuxもUSBスキャナをサポートするようになるでしょう。

他のUNIX、例えばSolaris、IRIX、AIXはUSBをサポートしていません。 なぜならそれらのハードウェアにはUSBポートがついていないからです (BSD系のUnixにはある意味USBのサポートがありますが)。 とりあえず、今の所はUSBに関しては静観してみましょう。 とにかく現時点でのSaneはUSBのスキャナはサポートしていません。 (それにSCSIのスキャナの方がいいです。)

以上をまとめると、私達がお薦めできるGimpで使うためのスキャナは、データをSCSIインタフェースで送るものだけということです。

どのようにスキャナを使いたいのでしょう?

まずはじめに、なぜスキャナを使いたいのか自問してみて下さい。 Webデザインのために画像を集めたいのでしょうか。 DTPのため? 図形や文書をデジタル化するため? 手持ちのスライドや写真のネガをコンピュータに入力するため? それとも、単に自分や家族で使って楽しむためでしょうか。

もちろん、目的は様々でしょうし、答えも沢山あるでしょう。 これはGimpの本でGimpとSaneの使い方が主題なので、 応用の可能な分野の小さな部分についてしか話をすることができません。 ここでは、お話をするために、 同じ要求を満たすスキャナをカテゴリに分類してみます。

そんなに昔のことではありませんが、 スキャンは誰かが生計をたてるためにするものでした。 スキャナは高価な器具で、 プロの事務所くらいしか買うことができませんでした。 スキャン自体もまた複雑な手順が必要でしたし、 それはつまり専門家だけがスキャナを利用できるということでもありました。

今日ではスキャナは(私達のほとんどにとって) むしろワープロやドライバーのような単なる道具です。 私達はスキャナを必要な時、たとえば、 画像や図面や文書のデジタルコピーをとりたい時、に使います。

(Gimpでの利用に関連した)異なる応用分野を次のようなカテゴリに分類してみます。

·ウェブ画像

·学校での利用、 低レベルのDTP、SOHOでのスキャンや印刷

·セミプロのDTP

·図形や画像の合成

·プロのDTP

·スライドやネガのスキャン

スキャナへの要求が低いものはリストの最初にあり、 高度な応用を必要とする高い要求のあるものがその後に続いています。 各グループに関連するスキャナの質の話の前に、 スキャナのスペックの違いが実際にはどういう意味なのか話をする必要があります。


これらのスペックは実際にはどんな意味なのか

 

今日では、あなたがスキャナを買おうという時に、売り手の方ではそれを単にコンピュータのありふれた周辺機器を売ることと同様にしか考えていないでしょう。 数年前と違ってスキャナは非常に安いものとなりました。 以前とは違って、 コンピュータの店はスキャナを売っても特にもうけが大きいということはありません。 つまり、スキャナを売る方も特に専門家を必要としなくなってしまいました。 ということは、スキャナについては自分で調査しなくてはなりません。

調査にはいくつかの方法があります (スキャナがSaneをサポートしているかどうかを調査の手始めにしましょう)。 スキャナの会社のWebを調べたり、コンピュータの雑誌を読んでみたり (DTPや画像処理に焦点を当てた雑誌だけを読むことをお薦めします)、 あるいはWeb上の評価を見たりして下さい。 最後にもう一つ、これは私の個人的な好みですが、 興味あるスキャナについてのコメントをUsenet上で探してみるという方法もあります。

調査していくと、スキャナのスペックや評価/テストで新しい用語に出会うかと思います。 よくある一般的なものとしては:

· ビット深度(Bit Depth)(bpp): これは各RGBのチャネルが持つ最大のビット数を示しています。 たとえば、24ビット(8ビットグレースケール)のスキャナは224の異なる色と 28のグレイのシェードを持ちます。 スキャナが高いbpp値を持つ場合には、 低いbpp値のものよりも画像の暗い部分や明るい部分でより詳しい情報を取り出せます。

しかしながら、この値で騙される人は多いので注意して下さい。 それに現時点では30ビットかそれ以上のスキャナは実際にはほとんどありません。

· 光学的解像度(Optical resolution): これは通常は600x600 ppi(あるいは dpi)というふうに表示されています。 この表現は通常はスキャナのX方向(ページの横方向)と Y方向(ページの縦方向)のハードウェアの最大のサンプリングレートを示しています。 重要なのは、X方向の光学的サンプリングレート(optical sampling rate) (もっと一般的に解像度(resolution)とも呼ばれる)という要素です。 ビット深度と同様に、この値にだまされる人は多いです。 現時点では1,200ppi以上の解像度で実際にスキャンできるフラットベットの スキャナはほとんどありません。

· ハードウェア解像度(Hardware resolution): これは通常は(フラットベットのスキャナでは) 2,800x2,800 dpiなどと表示されています。 この値は通常、スキャナが扱うことのできる 最大のハードウェア補間(interpolation)を示します。 おそらく気がついているのではと思いますが、 この数字はあまり興味あるものではありません。 なぜならこの値はスキャナが細部までスキャンできるかどうかの良し悪しを示していないので、 選択の際の参考にはならないからです。

· 最大解像度(Maximum resolution): これは通常は 9,600 dpiのように表示されています。 ほとんどの場合、バンドルされているスキャナのソフトウェアが可能な最大の 補間の結果の値と考えて良いでしょう。 この数字はまったく意味がありません。 というのも、Gimpではディスク容量の制限さえクリアすればもっと良いことができるからです。 さらに、3回を越えるどの補間でも画像のサイズが改善されるかは疑問ですし、 筆者らとしてはおすすめしません。

ビット深度

例えば、24ビット(8ビットグレイスケール)のスキャナと30ビット (10ビットグレイスケール)のスキャナについて考えてみます。 24ビットのスキャナの信号-ノイズ(SN)比を 1:X とします。 ノイズとは間違いや正しくないスキャン情報のことであり、 信号ノイズ比とは信号と、信号がどの位のノイズを持っているか間の比です。 宣伝されている30ビットのスキャナが本当に30ビットのスキャナだったとすると、 信号-ノイズ比は24ビットスキャナのノイズ率Xの四分の一に減少していなくてはいけません。

この目標を達成するためにスキャナのメーカにはいくつかの選択肢があります: 光源の輝度を上げること、より感度の高いCCD (画像をキャプチャするためのデバイス) を使うこと、あるいは、より長い露光時間を用いるような実装を行うこと (これはつまり、 多くの「光」を使ってキャプチャするためにスキャナの速度を遅くすることを意味します) です。

最初の2つの手法は高価になりますし、3番目の方法はあまり良くありません。 なぜなら3番目の方法ではスキャンが遅くなりますし、CCDは光を浴びすぎます。 おそらく良い方法はより高感度のCCDと良い光源を使うものです。 しかし、既に述べたようにこれは高くつきます。

スキャナの信号はアナログであり、AD(アナログからデジタルへの) 変換器によってデジタル信号に変換されます。 8ビット(24ビットカラー)スキャナではこれは8ビットのAD変換器により行なわれ、 10ビット(24ビットカラー)スキャナではこれは10ビットのAD変換器によって行われます。

最近、bppが商品のポイントになっているため、 製造側にとってシステムを改善させる簡単な手として、 新しい10ビットのAD変換器を買い、 システムの残りの部分はそのままにするという方法があります。 (これはこういうこともありうるという悪い場合の話です)。 そして、あなたが2ビット分の代金として払った分は、 2ビット分の画像の詳細の代わりに2ビット分のノイズになってしまうというものです。

これは必ずしも全ての30ビットのスキャナに対して本当というわけではないのですが、 しかし、bppの数字がいつも保証されているわけではない、 ということも気にとめておいて下さい。

光学的解像度

先のビット深度の話は光学的解像度でも同じです。 それはたとえば、光学的解像度を300x300から600x600にした場合、 600ppiのスキャナでは300ppiのスキャナの1/4の光しか各ピクセルには届かないからです。

繰り返しますと、光源とCCDのデバイスがボトルネックとなり、 高い解像度を達成するためには両方が交換されなくてはいけません。 製造者は新しい光学的サンプリング率を増加させるために、 新しいCCDを使う必要がありますが、 製造者は低い質のCCDを選択しがちです。

どうしてあるスキャナは他よりも安いの?

これらのことを考えてみると、 どうして同じ600x600の光学的解像度を持つ2つのスキャナが、 まったく違う値段になるのか理解できるでしょう。 より高価なもの(有名ブランド代の追加は別にして) はより良いCCD、光源、光学レンズ、機械、を使っている可能性が高く、 また、電子的な工夫を内部で行なっているということもあるでしょう。

優秀なスペックを持つが一番安いスキャナというものは、 実際にはユーザの期待とは合わないものです。 良い300ppiのスキャナは安物の600ppiのスキャナよりもずっと良い結果になるでしょう。

異なる種類のスキャナ

これまでは全部フラットベットのスキャナについての一般的な話をしてきました。 他の種類のスキャナももちろんあります。

· ハンドヘルドスキャナ(Handheld scanners): このスキャナは画像のキャプチャ方向にそって手でスキャナを動かすものです。 ハンドヘルドスキャナはフラットベットのスキャナが高価な時代だった 数年前には非常に人気がありました。 この方式のスキャナは非常にゆるい条件、 たとえばWeb用に画像をスキャンするという場合でさえ見合うものではありません。 しかしながら、モバイル計算機に興味があれば、 この型のデバイスも面白いでしょう。 それは持ち運びができますし、 文書や本のあるページをスケッチのように手早くスキャンすることができるからです。

· シートフィード方式のスキャナ(Sheetfed scanners): これはファックス方式のスキャナです。 画像や紙をスロットに入れてフィードされるものです。 ファックスのスキャナとしては最も一般のものです(そうです、 ファックスは実はスキャナなのです)。 この型のスキャナは単純な文書をスキャンするために利用されます。 しかし、これはGimp用の画像をスキャンするものとしては明らかに不適当です。

· フラットベットスキャナ(Flatbed scanners): これはここで説明するスキャナとして最も多才なものです。 これはオリジナルを置くプラテン(光学的文書ガラス)を持っており、 コピー機に似た形をしています。 Gimpで処理する画像をスキャンする場合には、 おそらくこの型のスキャナが必要になるでしょう。 一つだけこの型で欠点があるとすれば、それは大きさです。 フラットベットスキャナは他の型のスキャナに比較して大きく扱いにくいです。

· スライドとフィルムのスキャナ(Slide and Film scanners): これは35ミリのネガやポジフィルム片をスキャンするための特別製です。 この型は用途が限られていますが、写真家には非常に有用なデバイスです。 また、スキャンの質もフラットベットスキャナで 紙をコピーするようにして得られたものよりずっと良いです。 この種類のスキャナについてはこの章でまた説明することにします。 というのも、いくつかのルールがこの型のスキャナには通用しないからです。 もし、写真をとることと、 Gimpを使うことの両方が好きであればこのスキャナを入手するのも良いでしょう。

· ドラムスキャナ(Drum scanners): これはプロ用の高価なスキャナで、値段はほとんどの人に手がでないものでしょう。 ドラムスキャナは最高の品質で高い解像度の画像をスキャンできます。 もしこの質のものが欲しい場合には 常にどこかのサービスビュロー から買うことになるでしょう。 DTPを仕事にしている場合、 サービスビュローに高品質なドラムスキャンを注文する 最終の仕上げの段階までは低解像度のもので仕事をすることができるでしょう。

結論としては、Gimpのような画像操作プログラムを使うのであれば フラットベットが最良のスキャナです。 その他の選択としては、 スライドやネガが扱いたい場合にはスライドスキャナという選択肢があります。

どれだけのスキャナの質が必要でしょうか?

この章でお薦めしているものは絶対というわけではありません。 この章はいくつかの一般的な情報を基に、 スキャナの選択の際の多少の手助けにならないかと考えているのです。 GimpはたとえSaneがサポートしていても、 8ビットのグレイスケールと24ビットのカラー以上のビット深度はサポートしていません。 ppiとbppのスペック情報が正しい場合(普通はそうじゃないですが)、 次のような助言ができると思います:

300 ppi スキャナ

· 写真の 1:1 スケールでのスキャンと2から4倍の拡大

· ロゴのスキャン、ローエンドのドローイングやアート作品のためのスキャン

· Webページで利用するもののスキャン

· ファックス、OCR、文書の保存とプリンタをコピー機として利用するためのスキャン

600 ppi スキャナ

· 写真のスキャンと4倍を越える拡大

· 高品質な複写あるいは拡大のためのドローイングのスキャン

· 2x2や4x5のような大きなスライドのスキャン : この場合にはスライドを使えるスキャナでないといけません。

1,200 ppi (あるいはそれ以上の) スキャナ

· 35mmのスライドやネガのスキャン

24 bpp スキャナ

· 写真のスキャン

· ドローイングやアート作品のためのスキャン

· Web出版のためのスキャン

30 bpp スキャナ

· 悪い写真のスキャン。たとえば、露出不足や露出過度の写真

· スライドやネガのスキャン

36 bpp スキャナ

· もしプロであれば、大きなスライドのスキャンのために、 36bppのスキャナを使うかもしれません。

価格

スキャナの値段はずっと下っています。 そのためこの文書が書かれた1999年よりも後でこのガイドラインを見れば 不正確になっているかもしれません。

· アマチュア用のフラットベットスキャナ: 良いレタースキャナでも500ドル以下でみつけられるでしょう。 小売価格が175ドル以下の場合には、そのスキャナの価値は怪しくなります。

· プロ用のフラットベットスキャナ: 本当に良いスキャナを入手したいと思ったら700ドル以上はみた方がいいでしょう。

価格は下がり続けるでしょう。 しかし、本当に安いスキャナは普通は安いジャンク以上のものではないという事実は そんなに急激に変化するものではないでしょう。 格安のスキャナはたいていパラレルポートのスキャナであり、 それはLinux/Unixではあまりサポートされていません。

SCSI カード

Linux/Unix環境ではスキャナに附属しているSCSIカードはたいてい無意味です。 というのもそのカード用のドライバがないからです。 Linuxでサポートされている良品の安いSCSIカードは50ドルから100ドル位で入手できます。 UnixのワークステーションではSCSIはある意味標準です。 たとえば、全てのSunワークステーション(Ultra 5と10を除く) にはSCSIインタフェースがついています。

大きなSCSI-idをスキャナにわりあてるのを忘れないようにして下さい。 (なぜなら、スキャナには高速なレスポンスとなる小さなSCSI-idは必要ないからです。) いくつかのスキャナのSCSIインタフェースはSCSI one標準で、 SCSIチェーンの最後に置く必要があります。

まとめ

· 一般のユーザにとって、600 ppi、24か30pbbのスキャナでほとんどの用途に十分でしょう

· 一般に、安くて高い性能値のついているスキャナより、 それより低いスペックでも高いスキャナを買う方が良いしょう。 というのも安いスキャナについている高い性能値はそのまま信用できないからです。

· 極端に安いスキャナは買ってはいけません。 すぐ後悔することになるでしょう。

· 写真が主な相手ではない場合にはフラットベットのスキャナを買いましょう。 もし写真を主に扱いたい場合にはスライドスキャナも良い選択です。

· たとえプロのグラフィックアーティストであっても、 非常に高価なスキャナは必要にならないはずです。 Web出版の仕事をする場合には、それは全然不要のはずです。 スキャンした画像を更に画像処理するための要素として使う予定の場合、 良いスキャナに満足できるでしょうし、 進んだプロ仕様のスキャナに投資する必要はないでしょう。

· もしWindowsやMacを利用していない場合、 スキャナ附属のソフトが何かとか、ソフトの質はどうかなどは気にする必要はありません。 しかし、WindowsあるいはMacを利用している場合、スキャナのソフトは重要です。


Saneのインストール

 

Saneのコンパイルとインストールは難しくありません。 設定の部分の方がより難しい可能性があります。 特にネットワークを介してのスキャンの設定が難しい場合があります。

Saneの賢い点の一つはネットワークインタフェースです。 これによって、複数のグラフィックスワークステーションがある場合、 どれか一台にスキャナがあれば、このスキャナを共有することができます。 これはとても実用的です。 忙しいオフィスでは、 スキャン専用のためだけにワークステーションが一台占有されているというのは 非常にやっかいに感じるでしょう。

SCSIモジュール

最初にすべきことは、 Solarisの場合にはgeneric SCSIモジュールドライバをインストールすることです。 Linuxの場合にはgeneric SCSIモジュールをロードすることです(ただ、generic SCSIアクセスをサポートするようカーネルをリコンパイルする必要があるかもしれません)。

generic SCSIインタフェース (これはgeneric SCSIモジュールによって提供されます)なしでは、 SaneはSCSIコマンドをスキャナに送信することができません。 つまり、スキャンできません。

Solaris 2.x

Solarisには少なくとも2つの generic SCSI ドライバがあります。 一つはJoerg Schillingによって作成されたフリーなもので、 もう一つはKevin Sheehanによる有料のものです。 商用のSCSIドライバの方がよりセキュアですがいくらか設定の必要があります。 フリーのバージョンはこの問題に関して現在改善が進められています。 この章では、フリーのSCSIドライバをどうやってインストールするかについて説明しましょう。

まずはSCSIドライバをダウンロードしなくてはいけません。 Saneを参照してダウンロード場所を見て下さい。 もし、Solaris 7の場合にはJoerg Schilling の示している手順を追う必要があります。 ここでは、Solaris 2.4 から 2.6までについて説明します。

もしSparcシステムの場合には、 SCHILYscg.sparc.tar.Zをダウンロードして下さい。 もし、PCでSolarisX86を走らせている場合には、 SCHILYscg.i386.tar.Z.をダウンロードして下さい。

ここではドライバをインストールする際のガイドラインを示します。

 
 


 
 

もしX86システムを使っているようでしたら、 SCHILYscg.sparcSCHILYscg.i386 に置き変えて見て下さい。

この後しなくてはいけないことは、ドライバの設定を再設定して /devディレクトリを再構築するためにリブートすることだけです。 Solarisでは次のコマンドを入力すれば、以上のことは自動で行なわれます。


 
 

これでドライバの準備はできました。ドライバのインタフェースは後で設定します。 デバイスパーミッションの設定 を参照して下さい。しかしここでは他にしなければいけないことに進みましょう。

Linux

Linuxでは二つのオプションがあります。 generic SCSIモジュールをロードする(推奨)か、 カーネルを再構築してgeneric SCSIサポートとするかのどちらかです。 カーネルの再構築はこの本の範囲を越えていますので、どのようにして generic SCSIモジュールをロードするかについて説明しましょう。

まずはLinuxをサポートしたSCSIカードがなくてはいけません。 そしてほとんどのスキャナ附属のSCSIカードは Linuxでサポートされていないことに注意して下さい。 ここではどのようにSCSIカードを有効にするかについては述べません。 これに関してはLinuxのディストリビューションのマニュアルや Linux SCSI How-toを調べてみて下さい。 また、Saneを参照して下さい。 ここではSCSI moduleをどのようにロードするかを説明します。

 
 

上記の例はRed Hat Linux 5.2です。 もし異なるディストリビューションの場合には違うかもしれません。 鍵となる値は2.0.36-0.7です。 これは、あなたのマシンのカーネルのバージョンでなくてはいけません。 (もしあなたのディストリビューションがrpmを利用していた場合、 rpmのバージョンはおそらく0.7以上でないといけないでしょう)。 カーネルのバージョンはunameを使って調べることができます。


 
 

問題なくモジュールがロードできた場合には、それを start upファイル、たとえば、rc.local、に書いておくことを おすすめします。こうすることでLinuxがリスタートする毎に確実に モジュールを読み込むようになります。

これはRedHat Linux 5.2の/etc/rc.d/rc.localファイルの例です。 sgモジュールのinsmodは このファイルの最後の行で実行されています:

 
 

一つ注意することは、 これはgeneric SCSIモジュールをロードする推奨の方法ではないことです。 最近のLinuxカーネルは load-on-demandスケジュール、 つまりモジュールはそれが必要な時、たとえばスキャンを行う時、 になって始めて読み込まれる方式を利用できます。 この機能をどうやって有効にするか、 Linuxディストリビューションのマニュアルを調べて下さい。 そうでない場合には、 keditgedit を使ってこのファイルを編集して下さい。 ( rc.localファイルを編集する場合にはrootになる必要があります。 )

コンパイルのための設定

Saneを設定しコンパイルするのは簡単です。 覚えておくことは、開発用のheader ファイルがコンパイル時に必要ということです。 ライブラリだけではコンパイルできません。 もしSaneのコンパイルや設定で問題があれば、 プラグインのコンパイルの一般的な助言を参照して下さい。

まずはじめに、Saneをダウンロードしなくてはなりません。 どこからSaneを入手できるかSane を参照して下さい。

· コンパイルの準備のためのSaneの設定(Configuring)は簡単です。 単に、Saneのディストリビューションディレクトリで./configure をタイプして走らせるだけです。 SaneはGimpGtk (Gimpのメニューなどで利用されるツールキットライブラリ)と一緒に利用されるので、 SaneをGtkがインストールされた所でconfigureプログラムを提供する必要があります。

· GtkとGimpが/usr あるいは /usr/local 以下にインストールされているかどうか探すためには、 which gimp と入力します。すると /usr/bin/gimp あるいは /usr/local/bin/gimp という答えが帰ってくるでしょう。 とはいえ、Saneのconfigureプログラムにはこれを教える必要はありません。 どのみちconfigureプログラムはGimpとGtkをみつけるでしょう。

· しかしながら、GtkとGimpをどこか他の場所にinstallしている場合、たとえば /opt/gimpなど、にはその情報をconfigureプログラムに教える必要があります。 configureの際に問題があれば、configureと同じディレクトリにある config.logファイルを調べる必要があります。 また、 configureを次のように--help オプション付きで起動することができます。

./configure --help

そうすると、configureはそのオプションを全て表示するでしょう。

次の例はどのようにSaneを展開configureするかを示しています。

 
 

もしGimpが標準のディレクトリにInstallされていない場合

Gimpが標準の場所、たとえば /usr/usr/local にある場合、Saneのconfigureは自動でGimpを発見します。 Saneをコンパイルしたら、 Gimpのplug-inの機能としてSaneが見えるようになるでしょう。

Gimpをどこか他の場所にインストールしている場合、 たとえば、/opt/gimpなどの場合、 SaneのconfigureプログラムはGimpをみつけられないでしょう。 そして、コンパイル後もSaneはGimpのplug-inとして有効にならない可能性があります。

しかし、GimpとGtkが同じ場所にインストールされている場合、 これは簡単に直すことができます。 Saneのあるディレクトリのfrontendディレクトリ中の Makefileをgedit(あるいはkedit)で修正するだけです。 Saneのディストリビューションディレクトリのトップに frontend/Makefileはあります。

CPPFLAGSの行に、 -DHAVE_LIBGIMP_GIMP_Hを加え、 GIMP_LIBSの行には、 -lgimp を加えて下さい。

これらの行を加えるとその結果は次のようになります。


 
 

セキュリティのための準備

さて、急に話を進めるのは本意ではありませんが、 後にセキュリティのレベルを上げるためにここで多少調整するものがあります。

依存するライブラリが、 標準でない場所にあることがあります。 たとえば、GimpとGtkが/opt/gimpにあったり、 libjpeg/usr/local以下にあったりという場合です。

スキャナプログラムのために sgid(set group id on execution) を有効にしてセキュリティを向上させると スキャナプログラム(例えばxscanimage)は 必要なライブラリを見つけることができません。 それは標準ライブラリの場所にないからです。 なぜか? それにはデバイスのパーミッションの 設定を参照し、 ここで何をしているかを理解して下さい。

· Solarisでは、標準外のライブラリ/usr/lib
/libにないことを意味しています。

· Linuxでは、 /etc/ld.so.confファイルを調べ、 スキャナプログラムが起動する際に探す標準のディレクトリはどこかをみつけて下さい。

この解答は -R/where-you-have-librariesを プログラムをlinkする際に加えることです。

次の例ではこれが含まれています。

-R/usr/local/lib

(frontendディレクトリ中にある)Makefile の中のLIBSの行に上記の部分が加えられていることがわかるでしょう。 ここでは、GtkとGimpが /opt/gimp以下にインストールされているとしたため、 GTK_LIBSの行に -R/opt/gimp/libを加える必要もあります。


 
 

どのライブラリが欠けているかは lddをタイプするだけで簡単にみつけることができます。 たとえば、 プログラムをコンパイルして"sgidした"後に ldd xscanimageとすれば、 ldd はどのライブラリがプログラムからみつからないかを教えてくれるでしょう。

そうしたらすべきことは、その欠けているライブラリのあるディレクトリを (frontendディレクトリ中の) Makefile に -R をつけて加えるだけです。

その後make cleanを起動し、 makeを frontend ディレクトリで起動して下さい。 これでプログラムが再び作成され、依存するライブラリをみつけるでしょう。

コンパイル

コンパイルには makegccあるいはcc (コンパイラ)、ldなどがpath上になくてはいけません。Solarisではこれらのツールは /usr/ccs/binディレクトリにあります。 そしてこのディレクトリがpathの中に含まれていなくてはいけません。

gccもpathに含まれている必要があります。 そしてそれがどこにインストールされているか (これはどのプレコンパイルされたバージョンをダウンロードしたかによります) を知っておく必要があります。 gccのディレクトリがわかったら(この例では、gccは
/usr/local 以下にあるとしています)、次を入力して下さい。

export PATH=/usr/ccs/bin:/usr/local/bin:$PATH

Linuxでは必要なプログラムがインストールされてさえいれば問題はありません。 それらはpathに自動で含まれていることでしょう。

後にSaneを走らせみて問題が起ったら、configureを起動する際に次のflag を加えてみて下さい。

--disable-shared, --disable-dynamic and --enable-preload

通常、LinuxやSolarisではこれをする必要はありません。

これでSaneをコンパイルし、インストールする準備ができました。 上記の設定でSaneは/usr/local以下にインストールされます。 これを変更したい場合には、次のオプションを指定して下さい。

--prefix=/where/to/install/sane

ではSaneをコンパイルしインストールしてみましょう。

既にSaneはおそらく/usr/local以下にインストールされたことでしょう。 もし何か問題があれば、 プラグインのコンパイル を参照し、コンパイル一般に関する情報を探してみて下さい。

実行時の設定

ローカルなワークステーションでSaneを使ってスキャンする前に (ネットワークを介してのスキャンに関してはネットワークアクセスでとりあげます)、Sane自体を設定(configure) する必要があります。 Saneの設定ファイルは、もし /usr/local以下にSaneをインストールした場合には、 /usr/local/etc/sane.d/以下にあります。

どのデバイスがスキャナに接続されているか、また、 どんな型のスキャナが接続されているかを調べるため、Saneの開発チームは find-scannerというプログラムを作成しています。 このプログラムはSaneのディストリビューションディレクトリ中の toolsディレクトリ (これはSaneをコンパイルしたメインのディレクトリ中のtoolsディレクトリです) にあります。 find-scannerはスキャナの接続場所とどのモデルかをみつけるでしょう。

Solarisではどのように見えるかをここに示します。

 
 

:

そしてこれがLinuxでどのように見えるかです。

 
 

ここでは、HPのスキャナが /dev/scg0c (あるいはLinuxでは/dev/sg0) にあり、 UMAXスキャナが /dev/scg0eにあります(Linuxでは sg1)。 ここですべきことはSaneに HPスキャナの場合には /dev/scg0cに、 UMAXスキャナの場合には/dev/scg0e に尋ねるよう設定することです。 これを行う前に、Saneが正しく働くかどうかテストすることをおすすめします。 まず、rootになり(su root) cd/usr/local/etc/sane.d/ まで行ってdll.confを編集します。 ここではpnmという行以外は全てコメントアウトして下さい。

次はそのファイルの例の一部分を示しています:

 
 

次にrootで /usr/local/bin/xscanimageを走らせてみます:

 
 

もしSaneが動けば(モジュールの動的ロード)、 どのpnmデバイスを使うかをセットするためのダイアログが出現するでしょう。 OKをクリックして続けて下さい。そうすると sxcanimageのメインスキャナウィンドウにアクセスできるでしょう。


 
 

これらのダイアログが出現すれば、Saneはおそらく上手く働いています。 次に、dll.confファイルを編集し、 hpとumaxの行の# を消し、pnmをコメントアウトして下さい。 もし他のブランドのスキャナを使っている場合には、 もちろんhpやumaxの行を使うべきではありません。 そのかわりに利用しているスキャナの # を消して下さい。 また、コンパチビリティのリストも調べて下さい。 Saneのスキャナのリストは Sane のサポートするスキャナ にあります。 これは、時々ですが、たとえば、 NikonのスキャナはNikonブランドでも実際の中身はUMAXだということがあるからです。 コンパチビリティリストにはどのエントリをコメントから外せば良いかが 正しく書いてあります。

次はfind-scannerで抽出されたデバイスの情報を使います。 Saneを/usr/local/以下にインストールした場合には、 Saneでサポートされている全てのバックエンド(スキャナ)用の configファイルが /usr/local/etc/sane.d ディレクトリ以下にあるはずです。 (そうでない場合には、 /あなたが/Saneを/インストールした場所/etc/sane.d/にあるはずです)

ここの例では、hp.confumax.confを修正しなくてはなりません。 ここでのconfigファイルの修正というのはスキャナがどのデバイスに接続されているか、 例えば、/dev/sg1 (Linux) や /dev/scg0c (Solaris) のようなものです。 もし、dll.conf中でhpとumaxの代わりにepsonをコメントから外した場合、 epson.confファイルをここの例の代わりに変更して下さい。

これが今回のumax.confファイルの例です。

最後の行がスキャナが /dev/scg0eに接続されていることを示しています。 通常、Saneを何もないところからインストールした場合、 この行は/dev/scannerのようになっています。 変更すべき点は、この/dev/scanner 部分を適切なインタフェースに変更することです。

rootのまま、/usr/local/bin/xscanimageを起動して下さい。 ここでは2つのスキャナがあるため、丁度pnmのテストデバイスで見たように デバイスダイアログが出現するでしょう。 ここでも単にOKをクリックして下さい。 このテストで全てが動いているか確認できます。 もし全てが完全に機能しているのでしたら、 あなたのスキャナとしてメインスキャナインタフェースをアクセスできるでしょう。


 
 

デバイスパーミッションの設定

ここで起こる問題は通常のユーザはスキャンできないということです。 これは、/dev/sg1/dev/scg0 はrootの所有になっており、rootのみが読み書きできる状態であるためです。 Linuxではこれはそんなに大きな問題ではありません。 しかし、Solarisのインタフェースでは多少の物議をかもしだします。 Linuxの場合には、 /dev/sg1 のアクセス許可を 777とし、 誰もがスキャンできるようにすれば終わりです。

これはshellでは次のようにします:

[olof@whopp olof]$ su root -c "chmod 777 /dev/sg1"

注意: ここでrootのパスワードを入力しなくてはいけません

Solarisインタフェースでこれと同じことをすると問題が起きます。 というのは、全員が読み書きの権限を所有すると SCSIインタフェースの全てのデバイスがそのように設定されてしまうのです。 これは、もし同じインタフェースに誰か(あるいはあなたが間違って)が "全消去"のコマンドをディスクに送付することができるということです。 これでおわかりのように、この権限を変更する方法は、この問題を解く良い方法ではありません。

このための解答は、デバイス(たとえば/dev/scg0) に読み書きのアクセスができる特別なユーザとグループを作ることです。 これによって、システムはスキャナコマンドを呼び出す毎に 特別なスキャナグループへと自動でグループIDをセットします。 ここですべきことはsgid(set group id on execution) を全てのスキャナプログラムで有効にすることです。

これはLinuxでも安全な方法です。 また、後にユーザとグループをネットワークスキャンで有効にする必要が起こるでしょう。

ユーザの管理はあまりに多くの方法があるので、 ユーザを加える方法に関してはこの本の範囲を越えています。 オペレーティングシステムのマニュアルを御覧になって下さい。 一つの良いヒントはuseraddのマニュアルを見ることです。 新しいユーザでは他の人がログインできないよう、 アカウントをロックすることを忘れないようにして下さい。 たとえば、Saneという新しいユーザとSaneというグループを作成するのが良いでしょう。

Linuxでは次のように入力して下さい:

 
 

Solarisでも同じことをしますが、scg0 の本当のデバイスの名前をみつけることも含めなくてはならないでしょう。 Solarisは全ての本当のデバイス名を/devices以下に保持しています。 /dev ディレクトリは本当のデバイスへのシンボリックリングだけを保持しています。

この例ではどのように本当のデバイス名をみつけるかを示しています。 それはscg0について行なわれることに注意して下さい。 scg0e中の"e"は単にSCSI IDです。 この場合、"e" の意味はスキャナがSCSI ID 4であるという意味です。

 
 

残りはLinuxの例と同様です。 その後、xscanimageプログラムを通常のユーザで実行できるようになります。 Saneをコンパイルする際に-Rフラグで正しいディレクトリを加えていた場合、 全てがうまくいくはずです。しかし、もし次のようなエラーが出た場合:


 
 

この意味は、xscanimageをコンパイルした際に、 (-Rフラグ)でxscanimage が必要とするディレクトリの加え忘れがあるということです。 (セキュリティの準備を参照)。 他にどんなライブラリが欠けているのかを見つけるには、 lddを次のように使います:


 
 

これまでに見たのはjpegライブラリだけがみつからない場合ですが、 しかしもちろん他の多数のライブラリがみつからないということもあるでしょう。 それはlddを走らせてみないことにはわかりません。

さて、次はみつからないライブラリが計算機のどこにインストールされているのかを みつけなくてはなりません。 それがわかったらスキャナプログラムを再コンパイルできます。 Saneのディストリビューションディレクトリ(Saneをコンパイルしたディレクトリ) にcd して下さい。 frontend/Makefileを編集し、 みつからないライブラリのあるディレクトリ(jpegライブラリのある場所)を セキュリティのための準備 で行なったように -R フラグを用いて追加します。

frontend/Makefileを編集する際、次のように入力して下さい。

 
 

この後、スキャナプログラムに対してchmodchown を使う必要があるでしょう。 (プログラムをコンパイルし、インストールしたので、 ファイルのパーミッションとオーナーが以前と異なるためです。)

 
 

これでもうSaneは動くはずです。 それでも上手くいかない場合には、全部もう一度点検しなおし、 何も間違いのないことを確認して下さい。

ネットワークアクセス

Saneの機能で一番素敵なものの一つは、 ネットワーク越しのアクセスが可能ということです。 実際に、Saneに制御されるスキャナな皆、ネットワークスキャナになります。 このために、クライアント(ネットワークスキャナを使うワークステーション)とSaneのサーバ(スキャナサーバ)の両方を設定しなくてはいけません。

これは次のことを含んでいます:

· Saneのためのネットワークアクセスのルールの設定

· inetdスーパーサーバを通してのサーバの起動に関する設定

· 正しいホストからのスキャンの要求についてのスキャナクライアントの設定

Inetd -- スーパーサーバー

Saneのネットワークサーバを作成する一番簡単な方法は inetdを使う方法です。 inetdはtelnet(あるいはrlogin)を提供しているサーバです。 あるホストに対してtelnet(あるいはrlogin)を行なうごとに、 inetdサーバはtelnet(あるいはrlogin)の要求に答えるため、 ホスト上でtelnet(あるいはrlogin)サーバをその同一のホスト上で起動します。

sanedスキャナサーバを (クライアントからの要求で)起動可能にするためには、 /etc/inetd.conf ファイルを編集し クライアントがネットワークを越えてスキャンしようとする時に inetdsanedを起動するサーバとなるように記述しなくてはなりません。

また、新しいスキャナのサービスを加えるため、/etc/services ファイルをクライアントとSaneサーバの両方のマシンで編集する必要もあります。

inetdサーバには tcp wrappers 有り (標準的なLinuxディストリビューション) と 無しのものがあります。 (tcp wrappersは inetd に制御されるサーバのアクセス権を制御するために利用されます。) これら二つの版の間では、 inetd.confファイルの設定部分が多少異なっています。

こちらは、tcp wrappersがない場合の /etc/inetd.confがどのようなものかであり:

そしてこちらがtcp wrappers有りの場合です。 :

好みのエディタ、たとえば、keditやgeditを使って 適切な行を/etc/inetd.confファイルに加えましょう。 この操作を行う際にはrootでなくてはいけないことをお忘れなく。 また、sane usersane group が上記のinetd.confにあることに気がついているでしょうか? sanedをrootで走らせるのは良い考えではありません。 もしそうすると、クラッカーがワークステーションのセキュリティを 脅かすようなことができるようセキュリティホールを開けることになるでしょう。

Solarisでは groupではなく、userのみが /etc/inetd.confファイルに記述できることに注意して下さい。 この場合にはinetd.confファイルから、 ".sane"の行を消して下さい。

/etc/services ファイル

次のステップは Sane が起動する際にどのポート (技術的な言葉ではないのですが、これはドアのようなものです。 目的の人と話すためには、どのドアをノックすべきか知らねばなりません) を使うかを/etc/servicesに記述することです。 これはクライアントとサーバの両方で必要です。 次は/etc/servicesファイルの最後にこの行が追加された様子です:

 
 

あとはinetdサーバを再起動するだけです。 これはサーバにSIGHUPシグナルを送信することで可能です。 まず、inetdサーバの pid (全てのUnix系のコンピュータで走っているプログラムはそれぞれを区別できる pidという数を持っています。) これは次のようにしてわかります。


 
 

rootの行が問題の行であることに注意して下さい。 olofの行は単にプログラムのリストのうちinetd を探すためにgrepを使ったために出てきた行です。 次にSIGHUPシグナルを送る方法を示します。 通常、この例のpid番号と実際の番号は異なることに注意して下さい。

 
 

アクセス制御

sanedサーバにアクセスできるホストを許可する方法は現在の所3つあります。

· saned.conf

· /etc/hosts.equiv

· tcp wrapperがインストールされている場合、 /etc/hosts.allow/etc/hosts.deny

この3つのいずれの方法も利用できます。 しかし、/etc/hosts.equivを使う方法は最も危険です。 /usr/local/etc/sand.d/saned.confにあるsaned.conf ファイルの場合、saned.confのアクセス制御と tcp wrapperのアクセス制御の両方を編集する必要があります。 saned.confによるアクセス制御では、ファイルの最後に単に スキャンを可能にしたい全てのホストを追加するだけです。

これはどのように見えるかの例です。(もちろんホスト名は個々の環境に依存します。):

 
 

まず、localhostを有効にし(これは通常賢い方法です)、 frozenriver.nuドメイン中の他のいつかのホストも有効にします。 長いホスト名を利用しない場合、 短い名前を指定するだけで良いです。 たとえば、短いホスト名を利用している場合、 whopp.frozenriver.nuは"whopp"となります。 #で始まる行はコメントで、 sanedサーバには無視されます。

もし、tcp wrapperがインストールされている場合、 そちらを利用することをおすすめします。 tcp wrapperの設定はこの本の範囲を越えますので、 tcp wrapperのマニュアルを御覧下さい。 man tcpdman -S 5 hosts_access とタイプすることでマニュアルを見ることができます。 host_accessマニュアルページでは、 tcp wrapper でホストのアクセス制御をする方法が記述されています。 tcp wrapper が設定されていない場合、これを機会にやってみてはいかがでしょうか。 tcp wrapper を設定した後であれば、 saned.conf には +を加えるだけで済みます。

次はこの結果がどのように見えるかの例です:

 
 

/etc/hosts.equiv ファイルによる方法はSaneへのアクセス制御としては (いや、実際にはワークステーションやサーバに対する全てのアクセス制御に対して) 非常に危険です。 この方法は、 ワークステーションのセキュリティを低下させるには一番てっとり早い方法と言えるでしょう。

これはあるUnixのドメインで異なるUnixワークステーションにログインすることを 簡単にする目的で存在しました。 この機能は、非常にセキュアなUnixだけのネットワークで構成されているネットワークでは 意味を持ちます。

リモートのUNIXコンピュータ(ホスト、クライアント)、 Unix系のコンピュータとあなたのワークステーション(サーバ)が、あるユーザ名の 一致するユーザを持つとします。 もし、リモートのログインホストが/etc/hosts.equiv ファイルにて指定されている場合には、そのユーザはパスワードの入力なしで あなたのワークステーションにログインできます。 明らかにこのファイルはセキュリティに関する問題があります。 インターネットに継がっているコンピュータであれば、/etc/hosts.equiv ファイルを使用しないことを推奨します。

我々は読者の方々がスキャナにアクセスする方法として 安全な方法を選択して下さったと信じます。

ネットワーククライアントの設定

コンパイルのための設定 で行なったように、ネットワーククライアント上でSaneのインストールを始めましょう。 /etc/servicesファイルの編集を /etc/services ファイルの時と同様に編集します。 この時にはinetdサーバは再起動する必要はありません。

次に/usr/local/etc/sane.d/dll.confファイルを好みのエディタ、 gedit や kedit で root になって編集します。 ネット上にあるもののシャープ記号#を消去して下さい。 また、その他の行はシャープ記号でコメントアウトすることをおすすめします。 クライアント(ワークステーション)のdll.confファイルの例を示します:


 
 

/usr/local/sane.d/net.confファイルも編集する必要があります。 これは、スキャンする際にどのサーバを呼ぶかを指定するファイルです。 SaneはSaneのネットワークスキャンサービスがどのホストから提供されているかを 想像することができません。 そこで、サーバにあるスキャナを指定します。 しかし、ここでは単にホスト名を書くだけでよいでしょう。 これでSaneスキャナサーバ上の全てのスキャナへのアクセスが可能になります。

これはクライアントのnet.confファイルの例です:

 
 

長いホスト名を使っている場合、 tinyjump.frozenriver.nu という名前は、tinyjumpのようになります。 (もちろんこの名前はあなたが使用しているSaneサーバのホスト名に置き換えなくてはいけません。)

これでscanimage プログラムを利用してネットワークスキャンンのテストを行う準備ができました。 このコマンドで-Lフラグを指定すると、 全てのアクセス可能なスキャナのリストが得られます。 そこにはネットワークスキャナが見えるはずです。

著者のサイトでは次のようになりました:

 
 

Saneスキャナサーバ上からアクセスできるスキャナの同様のリストが得られれば、 ネットワークスキャナが働いていることになります。

Xsaneのインストール

さて、これでSaneはすぐに使えるようになりました。 SaneのデフォルトのGUIはxscanimageというもので、 これはなかなか素敵です。 しかし、Xsaneと呼ばれるさらに良いプログラムがあるのです。 Xsane は xscanimage より優れた点をいくつか持っています。 これは利用が簡単で、また、例えば gamma 補正 の設定が保存できるなどの機能もあります。 Xsane のその他の良い点は、スキャナをコピー機としても利用可能になる点です。 Xscanimage はそんなに洗練されていません。それは多少強力ですが、 使いにくい点があります。 したがって、ここでは、いかにXsaneをコンパイルし設定するかを示しましょう。 まずはXsaneをダウンロードします。 Sane を参照し、 どこからダウンロードするのかをみつけて下さい。

設定とコンパイル

Xsaneは設定とコンパイル時にSaneと同じパスを必要とします。 問題があれば、 プラグインのコンパイルを御覧下さい。

コンパイルのためのXsaneの設定は簡単です。 Xsaneのディストリビューションディレクトリで./configure を走らせるだけです。 XsaneはGimpとGtk (Gimpがメニューなどを表示するために必要とするツールキットライブラリ) と一緒に利用するので、Gtkがインストールされた場所をconfigureプログラムに 示さねばなりません。 もし、 GtkとGimpが /usr/usr/localにあれば、 which gimpとすると /usr/bin/gimp/usr/local/bin/gimpが出力されます。

Xsaneのconfigureプログラムには特に指定することはありません。 どちらにせよ、GimpとGtkのディレクトリをみつけるでしょう。 しかしながら、GtkとGimpをどこか他の場所にinstallしている場合、たとえば/opt/gimpなど、にはその情報をconfigureプログラムに教える必要があります。

この例ではどのようにXsaneを展開してconfigureするかを示しています。

 
 

もしGimpが標準のディレクトリにInstallされていない場合(/usr/local/usrでない場合)、話はSaneと同じです。 configureはGimpのプラグインのサポートを無効にします。 Xsaneはやはりsgid有効なプログラムとして走らせるため、 Saneと同様にfrontend/Makefileファイル中に -R/where/you/have/dependent/libraries を含めて下さい。

Xsaneは/usr/local/lib/sane/以下にあるいくつかのSaneのライブラリ (もしSaneを/usr/localにインストールした場合)に依存します。 これはそのディレクトリをMakefile中に-Rフラグで 指定する必要があることを意味します。

変更後の frontend/Makefile は次のようになるでしょう。

 
 

これでxsaneのディストリビューションの一番上のディレクトリでXsaneをコンパイルできます。 それは次のようになるでしょう:

 
 

何が問題が起きた場合には、 コンパイルのための設定を御覧下さい。 これら(SaneとXsane)が同じ記述なのは、これらの設定とコンパイルは非常に似ているからです。

サーバとネットワーククライアントのインストール

Xsaneを使う前にすべきことは、 xsaneのプログラムファイルのsgidをセットすることです。 次にその方法を示します(これはSaneのプログラムで行なったこととほぼ同じです):

 
 

これでXsaneを通常のユーザから走らせることができます。 もし、Xsaneをネットワーククライアントのスキャナで利用したい場合、 Xsaneをそちらにも同様にインストールしなくてはいけません。 これはこれまでみてきたSaneサーバのインストールと同じです。

GimpでSaneを使う

 

もちろんSane(もう少し正確に言うとxscanimageXsane)をスタンドアロンのプログラムとして利用できます。 しかし、SaneをGimpと一緒に利用するとさらに良いでしょう。 Gimpと一緒にxscanimageとXsaneを使えば、Gimpの画像操作関数が利用できるので、 さらに強力です。(一つの例外があります。それは、 24ビットカラーないし8ビットグレイスケールより大きなビット深度でスキャンしたい場合です。)

Saneと一緒に提供されているxcamプログラムは SaneのWebサイトによればConnectix QuickCamのような装置のためのものです。 残念ながらこの本ではxcamについては割愛します。

ScanimageはCLIプログラムです。 これまでの例では利用可能なデバイスのリストの表示に利用しました。 その応用の範囲はしかしもっと広いです。 たとえば、シェルスクリプトとして利用することでほとんどの種類のことができます。 しかし、これはGimpと一緒に利用することができないので、 これ以上ここでは立ち入りません。 しかし、Saneのディストリビューションには非常に良いマニュアルページがあります。 もし、SaneのマニュアルがMANPATH上にあるのでしたら、 単にman scanimageと入力すればこの情報にアクセスできるでしょう。

プラグインのインストール

XsaenとxscanimegeをGimpのプラグインとして利用するには、 それらをプラグインとしてインストールしなくてはいけません。 一番簡単な(そして正しい方法)は xscanimage/xsane からGimpのプラグインディレクトリにシンボリックリンクを張ることです。 次はその様子を示します(もちろん、 GimpのプラグインとSaneの場所は利用しているマシンに依存します):


 
 

Saneと一緒にGimpを動かす

これで既にGimpからSaneにアクセスできるようになっています。 あとはGimpを起動(あるいは再起動)し、 Xsanexscanimage をプラグインとして利用するだけです。 スキャンして直接Gimpで画像の編集ができるようにしましょう。

Xsaneは拡張|xsaneからアクセスできます。xscanimageは 拡張|Acquire Imageにあります。 各メニューアイテムの下に利用可能なデバイス(スキャナ)のリストがあるでしょう。 スキャナを利用するには、メニューからデバイスを選択するだけで済みます。

ここで一つ注意があります。 それはスキャナの設定を変更した場合、 pluginrcファイルを消去し、 Gimpに次の起動時にそれを再構築させることです。 これは単に rm ~/.gimp/pluginrc とし、Gimpを再起動し、新しいスキャナ(の設定)が Acquire ImageXsane の両方のメニュー項目に出現するようにします。

次の例では xscanimage ではなく、Xsaneを例にとって説明します。 これはXsaneがいくつかのたいへん有用なスキャナの操作機能を備えているからです。 xscanimageの基本的な利点は、Gimpの曲線ダイアログを使うように ガンマ補正カーブを手動でセットできることです。 この機能を使えば、 入力フィールドやスライダで固定のガンマ値を入力するのと違い、 どの方向に対してもガンマ曲線を調整できます。


フラットベットスキャナでスキャンする

 

これからUMAX Astra 1200Sというフラットベットスキャナで どうやってスキャンするかを紹介します。 しかし、スキャナインターフェスの主な機能はほぼ似かよっています。 Saneはスキャナの機能、たとえば、 ガンマ補正、レベル、ppi、ビット深度、プレビュー、 などを包括的に提供する標準的なアプローチを選択しています。 ppi (解像度)と bpp (ビット深度) の指定はもちろんスキャナに依存しますが、 しかしほとんどのフラットベットスキャナは同様の方法で操作できます。

基本的に、スキャナ間で異なる部分は特殊な機能に関してです。 たとえば、Photosmartスキャナはスライド排出機能があります。

スキャナインタフェース(UMAX)

GimpでUMAXのXsaneインタフェースを起動するには、筆者の環境では、 拡張|Xsane|net:tinyjump:umax'dev'scg0eとします。

するとXsaneスキャナインタフェースのメインウィンドウが開きます。 全部のコントロールとメニューについて簡単に紹介していこうと思います。 まずはメインのダイアログから始めましょう。

· チェッカーボード のシンボルのメニューはスキャンのモード(カラー、グレイスケール、 またはラインアート(白黒)など)を決定します。 このメニューの選択可能な項目はスキャナの能力に応じます。

· スキャナシンボルのメニューは スキャン元を指定します。 例えば、スキャナがシートフィーダを備える場合などです (もしスキャナがそのような機能を持たないのであればこれには触らないで下さい)。


· ハーフトーンドット のシンボルスライダは光学的解像度を ppi (dpi) で制御します。

· ガンマ スライダは ガンマ補正を設定します。

· 太陽のスライダはスキャンの明るさを制御します。

· 半月 のスライダはスキャンのコントラストを制御します。

 
 

スライダの下にはスキャン時の強調のためのいくつかのボタンがあります: Auto, Default, Restore Save。 もし、RGB defaultのチェックボタンのチェックをオフにすると、 ガンマ, 輝度(brightness)、 コントラスト(contrast)を各RGBチャネル毎に分離して設定できます。 このインタフェースは図 15.6のようになっています。

トップメニューバーには FilePreferencesHelp のつのメニューがあるでしょう。 File以下には、Xsaneの作成者と利用しているデバイスに関する一般的な情報があります。 PreferencesメニューにはSetupのためのエントリと、Advanced と Standard オプションがあります。 また、スキャンのヒストグラムとsave device settingsもあります。 これらの設定に関しては後に詳しく紹介しますが、 しばらくは基本的なSaneの操作に集中しましょう。

プレビューウィンドウ

多分、プレビューということの意味は御存知でしょう。 プレビューウィンドウを開くには、 previewボタンを押して下さい。 (もし Preferences で Save preview をチェックしている場合、 プレビューウィンドウを開くと最後に行なったプレビューが残っているのが見えるでしょう。) 最初にプレビューウィンドウを開くと、そこには何もなく白い画面が見えるはずです。 写真などを原稿台の上に置き、 Acquire Previewボタンを押して下さい。

すると、Saneは低解像度ですが高速に写真をスキャンします。 プレビューのスキャン中は、全てのXsaneのオプションはグレイになり、 Cancel Previewボタン以外は押せなくなります。 プレビューのキャンセル、いや、他のどんなスキャンのキャンセルもおすすめできません。 (ここにはバグが非常に潜みやすいのです) Saneがスキャンを終えるのを待ちましょう。 画像はいつも後で取得できます。

Xsanexscanimageに対する一つの優位な点は メインウィンドウ中で最終的なスキャンがどうなるか調整できる所です。 スキャン領域を限定するには、 プレビューウィンドウ中でマウスをクリックアンドドラッグし、 選択領域を作成します。 そうすると点線で選択領域の概形が見え、 Saneはその矩形領域内部のみをスキャンします。

その選択領域に満足したら(おおまかな選択でも問題ありません。 なぜならイメージの切り取りはGimpで行う方が簡単だからです)、 メインダイアログのScanボタンを押して下さい。 Saneが画像をスキャンし、Gimp中に表示します。

 
 

オプション

Preferencesメニューは Histogram オプションと同様に Standard と Advanced の両方のオプションを持っています。 ほとんどのオプションは スキャナに依存しますが、 いくつかのオプションに関しては説明しておく方が良いでしょう。

· カスカム化されたガンマ表を使う: もし、お持ちのスキャナがハードウェアでのガンマ補正をサポートしている場合、 このボタンでそれを有効にできます。 さらに、もしスキャナが8bit以上の色をサポートしている場合、 カスタム化されたガンマ表はそのビット数でガンマ補正を行うでしょう。 結局、8bit以上のbppを持つかハードウェアでのガンマ補正のどちらかがある場合、 あるいは両方ともある場合、これを使うのはいい考えです。

多分、xscanimageの方がガンマ曲線を扱うことにかけては より多機能であることを言っておいたほうが良いでしょう。 xscanimageのガンマ曲線はGimpの曲線コマンド (右クリック|画像|色|カーブ) と同じ方法で作成できます。

· 8あるいは10bppのビット深度: Xsane か xscanimage を Gimp から利用している場合、 Gimpが 8 bpp しかサポートしていないため、 8bppだけしか利用することはできません。 もし10 bppでスキャンすると、エラーになります。

·Histogram: これはGimpのレベル(右クリック|画像|色|レベル)のような機能です。これは色と明るさの両方のエラーを補正したい場合に有用なオプションです。 もしRGBデフォルトボタンのチェックを外している場合、 ここで各RGBチャネルのヒストグラムを独立して設定できます。

スキャナモード

ほとんどのフラットベットスキャナは、ラインアートグレイスケールカラー のスキャナモードを持っています。

ラインアート

ラインアートモードでのスキャンの結果はしばしば予測できません。 そのため、もし細い部分も詳細に残したい場合にはグレイスケールモードをおすすめします。 そしてグレイスケールのイメージを 黒と白にindexingによって操作するのが良いでしょう。

その他には 右クリック|画像|色|閾値 か、 右クリック|画像|色|レベル を使って、白黒のピクセル画がラインアートイメージとなるように制御するという 方法もあります。

グレイスケール

もちろんグレイスケールのスキャンモードは、グレイスケール(B&W)の写真を スキャンしたい場合には有用です。 カラーでグレイスケールイメージをスキャンする場合には、 スキャナのカラーバランスを心配しなくてはいけません。 もし、画像に後で着色したい場合、グレイスケールからRGBモードにGimpで 変換するのが良いでしょう。

カラー画像をグレイスケールモードでスキャンすることはあまりありません。 もし、カラー画像が白黒で印刷される運命ならば、 カラーモードでスキャンする意味がないのではないかと考えるでしょう。 しかし、これは常に正しいとは限りません。 それはスキャナの性能に依存することです。

例えば、同じ明度を持つ場合、 人間の目には黄色は青よりも明るく感じられます。 Gimpは人間の特性を考慮して青よりも黄色を多少明るく変換するなど、 カラーからグレイスケールへの変換を非常に上手くやります。 もしスキャナがGimpと同等、あるいはより良いグレイスケール画像を生成できる場合、 グレイスケールモードでスキャンするのが良いでしょう。 そうでない場合には、 カラーでスキャンしてGimpでグレイスケールに変換するのが良いでしょう。

カラー

カラーモードはカラーモードで、これはあまり言うこともないです。 もちろん、色補正や色の脱落に関して考える必要はありますが、ひどいスキャナを持っている場合には、Gimpで別の色補正機能を使って補正を試みるようにとおすすめできるだけです。

自動補正

Xsaneは非常に有益な 自動修正 (メインダイアログのAutoボタン)機能を持っています。 自動修正はスキャン中にあまり良く露光されていない写真の補正をします。 修正の計算はプレビューで選択されたハイライトとシャドウの部分を基礎にして行なわれます。 したがって、 スキャナの白いふたの部分が選択されないようにすることが重要になります。 この自動機能は正しく"露光"された画像の特定の部分でも有効に働きます。 たとえば、 人物のポートレートで顔の部分を正しく露光したものにしたいというような場合です。 プレビュー画像で顔の部分を選択し、 Autoボタンを押します。 そしてプレビューウィンドウでスキャンしたい全範囲を選択します。 もちろん、 自動補正機能は訓練されたプロフェッショナルのような精度で補正することはできません。 これはさらなる補正の手始めとして使うものです。 しかし一般には自動補正は非常にすばらしい働きをしてくれ、 それ以上手動で補正する手間をなくしてくれるか、 あるいは非常に少ないものにしてくれます。

 
 

ガンマ補正

筆者の考えでは、スキャンにおいてガンマ補正よりも重要な補正はありません。 ほとんどの人々はガンマ補正はスキャナで何か失敗があった時の補正であると信じているようですが、そうではありません。 ガンマ補正は出力デバイス、つまりモニタやプリンタ、の不完全さを補償するものです。 ガンマ補正はトーンの補正(明るさ/暗さ)であり、 それは補正用の特別なガンマ曲線を参照します。

ディスプレイにどのガンマ補正は必要なのかをみつけるためには、 ガンマキャリブレーション を参照して下さい。 ガンマ値が何かわかったら、ガンマのスライダをその値にドラッグして下さい。 するとスキャナがガンマ補正されます。 これは元の写真中の明るさがモニタ上で表示されるスキャンされた画像と 同じになるということです。 ガンマ補正は悪い写真を良く見せるものではないことに注意して下さい。 単にこの補正の後では元の写真の悪さも同様にモニタに出現するよう補正されるということです。 写真を改善する手助けとなる機能は他にあります。 (もちろん ガンマ補正はこのような機能としても使えます。 しかし、それはある意味、ガンマをモニタに合わせない ように変化させることです。)

 
 

トーンの補正

既にトーンの補正に関しては前の節で多少話をしています。 モニタに固有のガンマ値を正しく設定した場合に、 常にそんなに良くなるとは限らないことは述べました。 もし、原画像が露光しすぎだった場合、 間違った露光を考えてガンマ値を低くしない限り、 スキャンされた画像は同様に露光しすぎになります (露光不足の写真はその逆になります)。

もし古いカラー写真をスキャンする場合、 しばしば異なった色のトーンの問題に出会うでしょう。 古くなる写真の良く知られた問題は、 しばしばトーンが青から赤へと移動することです。 この不要なトーンの移動を補正するには、 Xsaneのメインのウィンドウで RGB のデフォルトボタンのチェックを外し、 画像中で支配的すぎる色のチャンネルを抑制することです。 そのチャンネルのガンマの制御スライダを動かし、 結果に満足するまで補正して下さい。

もし、写真のトーンの範囲が寒い青の影の方向に移動した場合、 画像をもう少し暖かくしたいでしょう。 その場合には、ガンマの赤のチャネルの値を増加させなくてはいけません。 (そして緑のチャンネルも少し同様に増加させて下さい。) この技術はモデルの顔の皮膚の色を少し暖かみのあるものにするためにしばしば利用されます。

同様に、もう少し寒い感じに調整したい写真というものもあるでしょう。 その場合には、青のチャネルのガンマ値を増加させる、あるいは赤のチャネルのガンマ値を減少させる(またはその両方を組み合わせる)と良いでしょう。

スケーリング

スケーリングとスキャンに関して話をする場合には、 それはスケーリングは単に画像を拡大するものかという問題ではありません。 スケーリングに関して考える場合には、 出力デバイス(プリンタやモニタ)に関しても考える必要があるのです。

よくある4x6の写真をスキャンしてみましょう。

· この写真を1:1のスケール、300 ppi(dpiではありません!) の解像度で印刷することにします。 その場合、300 ppi の解像度でスキャンするでしょう。

· 同じ解像度(300 ppi)で二倍の大きさ(2:1)で印刷したい場合、 600 ppiの解像度でスキャンする必要があるでしょう。

· 最終的な目的が、72 ppiのwebページの場合、 そして元の写真と同じサイズで表示したい場合、 72 ppiの解像度でスキャンせねばならないでしょう。

· 同様に、2:1の解像度が欲しい場合、144 ppiでのスキャンが必要です。

もう御理解頂けたと思いますが、スケーリングファクタは最終的な出力に依存するのです。

スケーリングの制限

300 ppi のスキャナを利用している場合、 画像を 4:1以上でスケーリングすることはおすすめできません。 600 ppiのスキャナの場合、それ以上のこともできます(が、しかし、35mm のスライドは無理でしょう)。

一般に、元画像(写真)の質によって画像がどの位スケールできるのかは決まります。 もし、スキャンされた写真が低質なものの場合、そのストラクチャ、粒子などがそんなにスケールしない場合でも見えることがあります。明らかに、写真で粒子やストラクチャのような人工感を見せる意味はありません。

300 ppiのスキャナを利用して 4:1 を越えるスケーリングは画像に高いノイズを載せることになります。 そのため、300 ppiのスキャナで小さな写真(やスライド)をスケールすることは 考えないほうが良いでしょう。

最後の大きな助言は、いつもスキャナでスケールさせることです。 100 ppiでスキャンして、Gimpでスケールさせるようなことはしてはいけません。 Gimpでスケールさせた場合、Gimpはピクセル間の色を適切になるよう 補間(つまり想像)します。 したがって、スケールは常にスキャナで行なって下さい!

ドローイングと印刷画像のスキャン

ドローイングと印刷画像のスキャンは モアレ(moiré) パターンや、エイリアシング 効果のような人工感を持っています。 なぜ、新聞から画像をスキャンした場合にとても悪いものになるのでしょうか?

モアレ効果

本、雑誌、あるいは新聞は、何らかのlpi (lines per inch 1インチあたりの線数)を持っています。lpiはまた、線周波数(line frequency)としても知られています。 デジタルサンプリング理論より、元信号の情報を正確に再現したい場合には、 少なくともその元信号の周波数の二倍の周波数でのサンプリングが必要です。 (この場合、信号とは印刷された網点です。) これはナイキストレートあるいはナイキスト周波数と呼ばれます。 150 lpiで印刷された本をキャプチャするには、 300 ppiでスキャンしなくてはいけません。 しかし、ほとんどの300ppi スキャナは実際には 300 ppi でスキャンすることはできないことが多いので、そのようなスキャナでは 150 lpi で印刷された本をスキャンすることには使えません。 それはそういうスキャナは 150 lpi の元画像をスキャンするのに必要な 周波数をとらえる能力がないためです。

 
 

モアレパターンの修正

たとえ正しい解像度でスキャンできた場合でも(150 lpi のドローイングあるいは本に対しては 300 ppi)、 レイアウトに合わせて画像のサイズを変形した場合、 モアレパターンの問題がでてきます。これに対する解答は:

1. 多少のノイズをのせる: (右クリック|フィルタ|ノイズ| ノイズ追加)

2. 多少のガウシアンぼかしを加える:
(右クリック|フィルタ|ぼかし|ガウシアンぼかし(IIR))

3. 非シャープ化マスクでシャープにする(大量):
(右クリック|フィルタ|強調| 非シャープ化マスク)

4. これで、画像のリサイズと印刷を行えます。

結果は完全ではありません。しかし、 これは市販のモアレ対策プログラムを利用しなくても得られる結果としては良いものです。

エイリアシング

サンプリング周波数の基本的知識を既に御存知になったと思うので、 ドローイングのスキャンでも同様の現象が発生することが理解できるでしょう。 線でできている画像を考えると、その線を全て取ってきて 1インチ中に何本の線が含まれているかを計算するということができることがわかるでしょう。 これが線画の"lpi"です。 正確な結果を得るにはこの lpi の二倍の解像度でスキャンしなくてはいけません。

低い解像度でスキャンした場合、 原画像の詳細な部分を得ることはできません。 この場合、画像中の線はどこから始まるのかわからないでしょう。 このような望まれない効果はエリアシング(aliasing) と呼ばれており、 低いサンプリング周波数では線を全て書くことはできないという事実に基いています。 エリアシングのかかった画像では、細い線は元の画像のように細く表示されません。 エリアシングの効果は細い線のいくつかのまとまりによって引き起こされます。

さらにlpiと印刷に関して知りたい場合には、プリプレスとGimpの色 を御覧下さい。

スキャンとWebと印刷

 

プリプレスの章(参照)では、 印刷に関してよりプロフェッショナルな観点から述べました。 しかし、おそらく多くの読者はGimpを単にSOHOの環境で利用されていることでしょう。 つまり、おそらく多くの人が300 dpi から 1,400 dpiの間の「解像度」 のインクジェットプリンタ、あるいは、300 dpi や 600 dpi のレーザープリンタ を利用していることでしょう。

インクジェットプリンタ

インクジェットプリンタはレーザプリンタに比較するとかなり異なるものです。 なぜなら、それはFMスクリーニングを利用しているからです。 FMスクリーニング(私のインクジェットプリンタがハーフトーンスクリーンのように見えない理由は ?参照) は同じハーフトーン dpi のプリンタよりもより低い解像度でも良い結果を出力します。 (FMスクリーニングプリンタで議論はする場合には、 実際にはdpiに関しては何も言えません。解像度を参照)

おおまかな目安としては、出力デバイス(プリンタ)として 300 dpi の場合、 125 ppiを使うという感じです。

· 300 dpi インクジェットプリンタ; 100 ppi でスキャン

· 600 dpi インクジェットプリンタ; 200 ppi でスキャン

· 720 dpi インクジェットプリンタ; 240 ppi でスキャン

· 1,440 dpi インクジェットプリンタ; 480 ppi でスキャン

この表は絶対的なものではありません。 これはガイドラインであり、 同じテストを実行した後により良い結果を得る助けにはなるでしょう。 高い解像度のものをスキャンする場合、 スキャンの解像度を低くすることも試してみて下さい。 たとえば、600 dpi のインクジェットプリンタで(200 ppiのかわりに) 150 ppi でスキャンするというテストを行ない、 結果が満足できるものかどうか試してみて下さい。 通常はプリンタの能力を完全に利用することはないでしょうから (たとえば、600dpi のプリンタで300dpi の解像度のものを印刷する)、 200 ppi ではなく、100 ppiでスキャンすべきです。

Gimpから画像を印刷する場合、通常は プリンタダイアログのppi option を確認して下さい。 そして、スキャンの解像度 (例 300 dpiのインクジェットプリンタには 100 ppi) でプリントして下さい。

レーザープリンタ

上記のリストはインクジェットプリンタのものですが、 これは同様にSOHOのレーザープリンタにも適用できます。 しかしながら、いくつかの異なる解像度を用いるのは良い考えでしょう。 非常に良い結果を得るには、プリンタがどのようなlpi を利用しているか(あるいは適切なlpiのオプションがあればそれを設定する) 理解する必要があるでしょう。 lpi はどの ppi をスキャンと印刷で必要とするかを決定します。 lpiとハーフトーン印刷について知りたい場合には、 解像度と画像サイズ を参照して下さい。

ウェブページ

ウェブパブリッシングのためにスキャンするのは非常に簡単です。 単に、72 ppiでスキャンすれば終わりです。 この解像度は高解像度の詳細が不要な場合のカラー写真では十分なものです。

たとえばドローイングのようにディテールが重要なものをスキャンする場合、 より高い解像度でスキャンする必要があります。 (ドローイングと印刷画像のスキャンを参照) この場合には巨大なWeb画像ができてしまいますが、 しかし、低い解像度ではディテールをスキャンすることができません。

この問題に簡単な解決法はありません。 しかしながら、次のトリックを試してみて下さい。 (非シャープ化マスク参照) 高解像度の画像で非シャープ化マスクフィルタを適用し、 全てのエッジとディテールを強調します。 その後、よりWebで利用しやすい大きさの画像にリサイズします。

その他のオブジェクトのスキャン

 

もしフラットベットスキャナをお持ちの場合、 もちろんそれで写真をスキャンするだけではないでしょう。 それは、ほとんどの平らな物体をスキャンできます。 そして多少のトリックを使えばある種の3Dのオブジェクトもスキャンできます。

生地をスキャンするのは非常に簡単ですが、 露光時間を増やさねばならないでしょう(もしそういうオプションがあれば)。 その他に、もっと光をあてるとか、ガンマを増加させるなどもできます。 これらは生地が紙や写真ほどには光を反射しないためです。

多分、多くの人が3Dのオブジェクトを写真として複写しようとしたと思います。 例えば自分の手などを、です。 その結果はおそらくあまり満足するものではなかったと思います。 その理由はスキャナ/コピー機はドキュメントグラスの距離の部分に焦点があうように 最適化されているからです。 他の理由としては3DのオブジェクトからのCCDへの反射光は十分ではないからです。

3Dのオブジェクトの良質の画像が欲しい場合、デジタルカメラ、 あるいはこちらの方が良いのですが35mmカメラを入手すべきでしょう。 良いデジタルカメラは非常に高価(この原稿を書いている時点で)ですが、 1200ドルあれば良いカメラを入手できるでしょう。 これはSOHOの利用では十分なカメラの話です。 もし、プロ用のカメラが欲しい場合には、10,000ドル以上必要でしょう。

ある限られた範囲で3Dのオブジェクトのスキャンについて考えてみます。 確かにそれは可能です。 しかし、その結果はまったくプロの仕事にはなりません。 (何か特別の効果をねらっているのではなければ) 適切な結果を得るには、物体をつつむ箱のようなものに入れねばならないでしょう。 スキャナの台と蓋の間で押しつぶすようなことは考えないで下さい。 ダンボール紙、できれば内部の白いものを入手して下さい。 物体を台の上に置き、その上に箱をかぶせます。 そこで多少高いガンマ値でスキャンしてみて下さい。

ここに、「白い箱」技術を使ってスキャンした結果を示します。

 
 

prevcontentnext


Frozenriver Digital Design
http://www.frozenriver.nu
Voice: +46 (0)31 474356
Fax: +46 (0)31 493833
support@frozenriver.com
Publisher Coriolis
http://www.coriolis.com