ロード トップ 参照元 逆検索 検索 ヘルプ

[logo] MGLで画像処理?


注意)主題は、MGL2で画像処理やろうぜ ではなく、 え? MGL2で画像処理やるの? ってことです。そのへん誤解のなきよう...

MGL の 色表現は HSBもどきで しかも 12bit しかない。

という前提なんで こうなっちゃったのだが... mghana とか mglvns とか 表現力が重要なものでは やっぱり情報量が足りないんだろうか ... なんて 思ってしまう。

MGL2で表現できる色1 MGL2で表現できる色2

こうなったのは、Hue が 12 の分解能で しか 作れなかったというのが大きかったりするんで なかなか拡張は難しい んだけれども、一応 (はるかなる将来の)拡張案。
MGL では 色は 32bit の空間が一応ある。下 15bit 使ってしまっている ので、拡張は (たぶん) 上 16bit に対し 15bit かなぁ

     1    5        5         5      4      4        4       4
    |R| H(4-0) | S(4-0) | B(4-0) | OP | H(8-5) | S(8-5) | B(8-5) |
   予約 H下位    S下位     B下位        H上位    S上位    B上位

こんな風にしちゃったら どおかなとは思うんだけれども、演算する人におこられて しまうかなぁ。
そもそも 高速な HSB 変換コードが作れなければ どうにもならないんで はるかなる将来の拡張案としか 書けない。
まあ 1bitづつ 拡張する場合もこのフォーマットに従えばいいから、 5 + 5 + 5 というパターンもありえるんだけども... それでも 高速な 24 色の Hue 変換が.. ネック。高速がネックというのもあるけど 24 に場合わけしないと いけないから コード作るのがとっても面倒。
もしそれができたとしても 32bpp draw engine は ひどいから たぶん 16bpp native draw engine を作ることになるんだろう。 これ 32K エントリぐらいのテーブル必要になったりもするし、 やっぱり はるかなる将来? 2MB ぐらいのキャッシュが モバギで あたりまえになったころ... 7-8 年もたてばそうなるかも知れないから 予断は許さない。とはいえそのころの 5bit HSB は いまの 4bit HSB より 価値低いって気もする。
あとは、packRGB とかのマクロも 32bit 版 つくらないといけない.. か。


ひとつ思いつきました。下位ドライバ(現在の実装だと fb16.h) で スムージング処理をするとか... たとえば、

遅くなるのは確実ですが、どれぐらい遅くなるのか見積もってやって 影響が 小さそうなら採用する。ダメなら見送り。


実は本題は 上のような話じゃなくて HSB そのものは 画像処理 したとき 困ったりするんだろうか .. とか そういう話 。私よくわかりませんので だれか教えて!

S とか B は 加減乗除 がきくのはわかるけれども H はどうなの ?

という話。

よくわからんが 自分なりに 考えてみる...

HSB だと嬉しい 処理ってないの?

上の話を書いてみて思ったけれども、HSB って単に直観的な もので、演算量と して 嬉しい話はないかも知れない。
だんだん セピア色になっていく エフェクトみたいなのがあったら楽だと おもっていたんだけれども、上の処理を考えると、別に楽ってわけじゃなさそう。


げ、mghanaで mglsvrが70%ですか 基本的に mglsvr 側の処理が重いってことですね。

MGLは遅い?で見積もったけれども、かなり速い シグマリオンで mglsvr 使わなくても 320x240 で 13.4 fps ぐらいしか出ない。 mglsvr 使うとどうかというと もうちょっと落ちる(はず)。
というわけで 15fps とか 20fps 狙うのは 現状ではかなり厳しい.. どころか不可能のような気がします。10 fps 出すのが 精いっぱい? mghana で実際はどれぐらい出ているんだろうか... かなり気になります。
あと、client 側と server側は非同期で動くので、client 側から見たfps と 実際の fps とは差が出てくるかも。

それはともかく、MGL が 倍速いとできることが違ってくるとかいう感じですね。 いますぐ対処するのは とっても厳しいですが キモに命じておきます。 (ちなみに 倍速くできるとは思っていないです。狙うのは 5割 up ぐらい。 最高にうまくいって 7割 upか)


ディザについて

MGL2でディザがかかっているか確認したい という話が...

なんで頑固に ディザいれているかというと..16bpp 専用のコード 書く人は たぶん 8bpp(256 色)とか 2bppの見栄えを構うだけの 余裕がないだろうと いう気がしたから。... 高度なディザを自分でいれるような.. 使わないマシンのため のコードは なかなか書けないっす。

ところで、くわがたさんの 誤差拡散ディザいいですね。等高線がきれいに消えて いる。mil に いれたいなぁ ..といってみるテスト。

---

mc_from_rgb()が少しおかしいのではという話が...

うーん。だいたいは合っていると思うけども.. 自信はないっす。いちど確かめないといけないですね。

おお、15度ずれている ってことですか。確かにそのとおりだなぁ。どうやって直そう...

あと、性能について の 話ですが、いまは、疑似フレームに書いて そこから 本当のフレームバッファにコピーする構造なわけです。で

で、これをするためには、いまの疑似フレームバッファ版 から 共有フレームバッファ 版(shared_fb版) にしないといけない。そうすれば、fb に書けばそれが 他の層で上書きされることがなくなる。

その上で、frame buffer のアクセス方法をアプリに知らせられば 良いのかなぁ なんて思っています。


(最終更新 Thu Mar 30 18:51:39 2006)