[Up] [Next] [Previous]

画像の変換と加工

画像の変換や加工を行うツールとして、以下のパッケージツールが有名です。 XV はシェアウェアですが、他はフリーソフトウェアです。いずれも X Contribの CD-ROMやFTPミラーサイト等から入手できます。

ここでは、以下の簡単な画像処理の方法を説明します。

イメージの切り取り

イメージをあるサイズに収めたかったり、ある部分を残して切り取りたい場合 がよくあります。Unix によける XV や display はマウスでドラッ グした範囲を切り取ることが可能です。XV の場合、イメージを表示させ、マ ウスで切り取る範囲を四角にドラッグし、コントロールウィンドウの Crop ボ タンをクリックします。すると、その部分を残して画像が小さくなります。ま た、ハサミアイコンをクリックするとその部分が切り取られ、無くなります。

サイズ変更、回転、フリップ

イメージのサイズ変更、回転、フリップも XV や displayは活躍し ますが、ここでは Netpbm パッケージのコマンドを使った方法を解説します。

Netpbmパッケージのpnmscaleはポータブルビットマップイメージの 拡大・縮小をコマンドベースで行なうことができます。

% pnmscale 1.5 < input_file > output_file
とすると画像が1.5倍拡大されます。また、
% pnmscale 0.5 < input_file > output_file
とすると画像が半分に縮小されます。

また、pnmscaleはピクセルサイズによっても指定できます。

例えば、GIFイメージを100×100ピクセルにする場合、

giftoppm foo.gif | pnmscale -xysize 100 100 \
        | ppmquant 256 | ppmtogif > foo_out.gif
のようにします。ここで、ppmquantを使用しているのは、イメージ を縮小した場合、pnmscaleが余分な色を作ってしまうため、それ を抑える目的で必要です。

イメージの回転、反転、ミラーは Netpbm パッケージの pnmflip が 使用できます。

90度よりも小さな角度で回転させる場合、pnmrotate を使用します。 -90度 〜 90度まで指定でき、正であれば時計方向、負であれば逆時計方向に 回転します。30度時計方向に回転させる場合、次のようになります。
% pnmrotate 30 < input_file > output_file

スムースとシャープ

スムース効果はイメージの境界をぼかす効果があります。ちょうど曇ガラスで 見たようなイメージになります。逆にシャープは境界をはっきりさせる効果が あります。スムースとシャープ効果を行う機能は多くのコマーシャルソフトウェ アが持っています。Unix の場合、ImageMagick パッケージの displayconvertmogrifyや XV ツールにも、 その機能があります。Netpbm パッケージでは、スムースを行う pnmsmoothとシャープを行うpbmconvolツールがあります。 また、大きさを変えながら、スムースにする pbmpscaleもあります。 例えば、2倍に拡大してスムシングを複数回行った場合、次のようになる。
bmptoppm heart.bmp | pnmenlarge 2 | pnmsmooth | pnmsmooth
| pnmsmooth | ppmtogif

2倍に拡大し、スムーシングを行った例

色調整

GIFのようなイメージは、イメージ変換をしたときに色が崩れる場合がありま す。その色の調整に ppmquantppmquantallで色の数を制 限ができます。例えば、128色に抑えるには、
giftoppm foo.gif | ppmquant 128 | ppmtogif > foo128.gif

GIFイメージの透明化

GIF89a では透明化をサポートするようになっています。透明GIFイメージをサ ポートするWWWのブラウザでは透明化した部分が背景色と同一となるため、イ メージだけを張り付けたような効果があります。そのため、GIFを透明化する ことはWWWの世界では常識となっています。

ここでは、Unix上で透明化GIFを作成するための二つの方法を紹介します。ま ず、最初はNetpbmパッケージのppmtogifプログラムを使用する方法 です。ppmtogifには -transparentオプションをもってお り、このオプションを使用することによって、透明化GIFに変換できます。

giftopnm leaf.gif | ppmtogif -transparent #rrggbb > T-leaf.gif
#rrggbbは透明化する色を指定するもので、RGB 色で指定します(例 えば白の場合#FFFFFF、黒の場合#000000)。なお、イメージからRGB色を知るに は、XV が非常に便利です。知りたい部分をマウスの真中ボタンで抑える上下 どちらかに10進数と16進数で表示されます。

また、Andreas Ley氏によっ て、Giftransと呼ばれるツールが開発されています。これは、Netpbm のようにGIFを中間形式に変換する必要はないので、非常に便利です。透明化 したい色を -tオプションで指定します。

giftrans -t #rrggbb leaf.gif > T-leaf.gif
なお、このツールは giftrans.cとしてソースコードが公開されてお り、DOS や OS/2 などでも利用できます。

マッキントッシュの場合、Aaron Giles氏によって開発されたTransparencyと呼ばれるツールが あります。このツールは対話的に行うことが可能で非常に便利です。また、 ウィンドウズでは Paint Shop Pro や LView Proと呼ばれるプログラム(シェ アウェア)が透明GIFへの変換をサポートしており、大変便利です。

GIFイメージのインタレース 化

インタレースGIFイメージは GIF87a と GIF89a でサポートされています。イ ンターレースGIFの作成を Unix で行う場合、ここでも Netpbm パッケージが 活躍します。透明化の時にも利用した pnmtogif プログラムの -interlace オプションを使用します。なお、-interlace オプションは -transparentオプションと一緒に用いることもできま す。

giftopnm leaf.gif | ppmtogif -interlace -transparent #rrggbb > IT-leaf.gif
マッキントッシュでは GIFConverter と呼ばれるプログラム(シェアウェア)が、 ウィンドウズでは Paint Shop Pro や LView Pro と呼ばれるプログラム(シェ アウェア)が便利です。

例えば、LView Pro を使って透明化インタレースGIFを作る場合、以下のよう に行ないます。

FAQ

GIFの透明化およびインタレース化の有名なWebページ/FAQ は下記にあります。

http://dragon.jpl.nasa.gov/~adam/transparent.html

ftp://csi.jpl.nasa.gov/pub/graphics/transparent.faq

スライドシートの作成

たくさんの画像を一つのシートに表示させるスライドシートを作成する場合、 ImageMagick パッケージの montagaツールが便利です。 index.jpgを作成する場合、
(montage イメージファイル ... 出力ファイル)

例:
% montage *.gif *jpg index.gif
とします(最後に出力ファイルを書き、出力ファイル形式はImageMagickの接尾 辞によって決まっています)。

すると、以下のような画面が自動的に作成されます。これを後で説明するクリッ カブルマップと組み合わせて使用すれば、スライドシートが簡単に出来上がり ます。


作成されたスライドイメージ

Xウィンドウの画面ダンプ

Xウィンドウの画面ダンプは、xwd というコマンドが一般に使用されますが、 画面全体あるいはウィンドウごとしか画面ダンプが取れません。しかし、 Bruce Schuchardt氏が開発した xgrab と呼ばれるソフトウェアは画面の一部をダンプしたり、ダンプまでの時間を指 定する(カメラのような)機能があります。また、XWD 形式以外の XPM や ポス トスクリプトに出力することもできます。


Xgrab の初期画面


[Up] [Next] [Previous]