スロー・プログラム
おはようございます。本日の当番、プログラマのM.L.Kです(LはLoopBackのLです。Loop&Back!)。
山々の針葉樹どもが奔放な生殖活動にいそしむ今日この頃、皆様はいかがお過ごしでしょうか?
やっぱり、メディアンカットで減色です。
前回は、シミみたいなものに対処するため、最終的に生成されたパレットの中から、色の見直しを行い、一番ふさわしいと思われる色を割り当てる、といったカンジのことを行いました。
結果、画像中のシミみたいなものはなくなりましたが、見直しを行う過程で、結構な数のピクセルの色が入れ替わっていることが分かり、新たな疑問が生じました。
<疑問>
もしかして、外れ値になったために適切でないグループに振り分けられた色が存在するままで、中央値(メディアン)を算出したり分割したりするのは、グループ分けとしては適切とは言えないんじゃね?
…
というわけで、今回は、分割を行うたびに色の割り当ての見直しを行ってみます。
つまり、前回は、
2色分割→3色分割→4色分割→…→256色分割→見直し&割り当て
というものでしたが、今回は、
2色分割→見直し&割り当て→3色分割→見直し&割り当て→4色分割→見直し&割り当て→…
という処理にしてみる、ということですね。
で、早速結果。
う~ん、正直、前回の結果と比べて、さほど変化があるようには思えません。
がっかり。
とりあえず、例のごとくフリップさせちゃいます。
…と思いきや、異なる256色パレットの画像をアニメーションさせようとすると、ツールの都合で、パレットが変化してしまい、ちゃんと比較することができません(パレットが統合されディザがかかる)。
くやしい!でも、128色でフリップさせちゃう!
128色ということなので、比較としてはまっとうとは言えないのですが、それでもそれぞれの減色の癖みたいなものが見てとれます。
前回のものに比べて、今回のほうが、微妙なグラデーションで使われている色への割り当てが多くなされているようです。
前回の方式では殆ど無視されていた色が、今回の方式では、別のグループがすくい上げているワケですから、どちらつかずな微妙な色の配分もきちんと考慮されている、といった結果なのだと思われます。
前回の方式 16色バージョン
今回の方式 16色バージョン
気を良くして16色バージョンも比較。
注目すべきは、ハイライトの部分にきちんと白が割り当てられている点です。
実はこのハイライトの部分は、減色前の元画像では微妙に赤っぽかったり、微妙に青っぽかったりするので、前回の方式では、同じ白のまとまりとしてのグループ化ができていなかった部分です。こうしてみると、方式の差はかなり顕著ですね。
減色としては、今回のやりかたで十分っ!
と言いたいところなんですが、非常に残念なお知らせがあります。
まあ、おおかた予想されているとは思いますが(タイトルからしてそうですし)、今回の方式はメチャクチャ時間がかかります。
前回の方式に比べて10倍以上の時間がかかっちゃいます。画像がもっと大きければ、下手すると1000倍くらい遅いです。
(ノ゜皿゜)ノ彡┻━┻
…
orz
中央値の算出と分割の際に、無視される色を極力減らす、という着眼点は良かったのですが、そのアイディアを実現する実装としては、今回のそれは、安直過ぎました。
きっとどこかに、何回も何回も見直しをしなくても、今回のクオリティに迫る結果を得ることができるやりかたがあるはずッ!
というわけで、次回は青い鳥を探しに旅に出ます。
(メーテルリンク的には、手近な鳥籠にいるっていう噂なんで)
| 固定リンク
「プログラマー」カテゴリの記事
- ポジティブシンキング♪(2012.01.25)
- Simple is best(2011.12.19)
- 残り半月!(2011.12.16)
- もしもの時の為に(2011.12.15)
- OpenCVと某カメラを使う(2011.12.14)












コメント