vine-users ML アーカイブ



[vine-users:058768] Re: Tgif でビットマップ画像を挿入

  • From: 加藤 雅 <mkato@xxxxxxxxxxxxx>
  • Subject: [vine-users:058768] Re: Tgif でビットマップ画像を挿入
  • Date: Mon, 3 Mar 2003 23:31:10 +0900
加藤(大阪)です。

Mon, 3 Mar 2003 15:12:42 +0900 付
cachu <cachu@xxxxxxxxxxxxxx> さんのメールより:

> > パラメータ 222 はどういう根拠で選ばれたのでしょう。
> > 
> > 自分なら良く考えもせず 256 とかやってしまいそうなのですが・・・
> 
> まずなぜ ppmquant を挟んだかですが、フィルターを試す前にターミナル上で
> 
> $ bmptoppm hoge.bmp | ppmtoxpm > hoge.xpm
> 
> としたら「色数が多すぎます、ppmquant 256 を試してください」と出ましたの
> で、減色をする必要があると判断し ppmquant を挟みました。
> 
> つづいて「なぜ 222 なのか?」ですが、深い理由はありません。フィルターの
> 書式のサンプルとして /usr/share/tgif/tgif.Xdefaults を見ますと PNG → XPM
> や JPEG → XPM の例がありました。そのいずれも ppmquant 222 としていました
> ので、256 ではなく 222 にすることに何か意味があるのだろうと思ってそうし
> ました。特に根拠はありません。
> 
> ただ意味付けとしては小澤さんの書かれた
> 
> 	Noriaki OZAWA <ozawa@xxxxxxxxxxxxxxxxxx> wrote:
> 
> > TGIFで表示する程度ならば普通は256色もあれば十分なので,減色させるよう
> > です.例題のフィルタが222色なのはデフォルトで予約されているのを浸食し
> > ないようにだと思います.
> 
> なのかなという気もします。

お付き合いいただき、有り難うございます。

おっしゃる事は了解致しました。256色 - (標準パレット 19色 + α) = 222色
と言う事なのですね。

そこで、自分の環境(Vine 2.6r1 + update)で同じ事を確かめてみたのですが。

$ bmptoppm bc.bmp | ppmtoxpm > bc.xpm
bmptoppm: Windows BMP, 714x536x24
ppmtoxpm: (Computing colormap...
ppmtoxpm: ...Done.  140022 colors found.)

と、問題無く 24bit true color に変換できました(実使用色は上に見られる
ように、14万色ですが)。

この画像は、bmp の方は、先に[vine-users:058743]で書きました ppmquant
フィルタなしの bmp 読み込みフィルタを通して Tgif に読み込むことが
出来ます。変換後の xpm の方も同様で、Tgif で obj ファイルに保存した
場合、どちらを挿入した場合も当然ながら同等の結果と成りました。

opj ファイルの頭の部分も、

color_info(140041,65535,0,[
	"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
        ................

と、納得の行く色数と成っています。

ちなみに、Tgif と、各フォーマット変換ツールのバージョンは、

$ rpm -q tgif
tgif-4.1.42-0vl1

$ bmptoppm --version
bmptoppm: Using libpbm from Netpbm Version: Netpbm 9.24
bmptoppm: Compiled 2002年  6月  9日 日曜日 02:20:30 JST by user "tkoba"
bmptoppm: BSD defined
bmptoppm: RGB_ENV='RGBDEF'
bmptoppm: RGBENV= 'RGBDEF' (env vbl is unset)

$ ppmtoxpm --version
ppmtoxpm: Using libpbm from Netpbm Version: Netpbm 9.24
ppmtoxpm: Compiled 2002年  6月  9日 日曜日 02:20:30 JST by user "tkoba"
ppmtoxpm: BSD defined
ppmtoxpm: RGB_ENV='RGBDEF'
ppmtoxpm: RGBENV= 'RGBDEF' (env vbl is unset)

$ rpm -q netpbm
netpbm-9.24-4vl1

でした。

なお、このスレッドで提案された方法を各々 Tgif に挿入して試してみたところ、
写真系の画像(デジカメ画像、スキャナ取り込み画像等)ではどの方法でも、
それなりの画質が得られたのですが、CG 系の画像(3DCG出力等)では、以下の
ような問題が出ました。

png 16M色ファイル、bmp(cachu さんのフィルタによる)
    著しい画質劣化が見られました。(ブロックノイズ様の劣化)
    png 16M色 の場合も ppmquant 同等のフィルタが働いているようで、
    よく似た傾向の劣化でした。
    間引き減色によるものと思われます。

convert -colors 256 による減色画像
    グラディション内にマッハバンドが見られました。
    上の png 16M色、bmp + 減色フィルタ、程ひどくは有りませんが、プリンタ
    出力した場合等は目立つかも知れません。

スレッド元の寺西さんの場合、(プログラムによる)実験結果の出力画像と
言う事でしたので、CG 系の画像と推測できますが、この場合、

可能な限りの高画質を求められるなら、
    cachu さんのフィルタから減色フィルタを除いたもので bmp を直接
    挿入するか、フルカラー xpm に変換して挿入する。
程々の画質で妥協できるなら、
    gimp 等で適切なディザ処理を施した減色を行い、png、xpm、gif、etc の
    256色ファイルに落してから挿入する。

が、良い結果を得られると思われます。

--- 
加藤 雅 <mkato@xxxxxxxxxxxxx>
	http://isweb15.infoseek.co.jp/diary/add10/rox/