×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
以前8ビットBMPエンコーダ ってのを作ったんだけど、これは256階調のグレースケールしか出力出来なかった。で、256色の最適化されたカラーテーブルを作る方法について以前から考えていたりしたのだけど、てっく煮さんでK-means法というクラスタリング手法の事を知り、これを減色アルゴリズムに使うことにした。
今回はパラメータをRGBの3座標に限定したけど、さらにピクセルのXY座標も付加することで(距離関数に何かしらの工夫がいるんでしょうけど)領域判定なんかにも使えるらしい。
以下は16色で減色を行うサンプル。上が元画像ね。
クリックするたびにカラーテーブルを更新して徐々に最適化する。
あと何かキーを押すとリセット。
処理の手順は簡単には以下のような流れ。
RGBよりもL*a*b*だとかYCrCbだとかの色空間でクラスタリングしたほうが、人間の目にとってより自然になる、というような話もあるけど。
今回はパラメータをRGBの3座標に限定したけど、さらにピクセルのXY座標も付加することで(距離関数に何かしらの工夫がいるんでしょうけど)領域判定なんかにも使えるらしい。
以下は16色で減色を行うサンプル。上が元画像ね。
クリックするたびにカラーテーブルを更新して徐々に最適化する。
あと何かキーを押すとリセット。
処理の手順は簡単には以下のような流れ。
- ランダムな16色のカラーテーブルを作って、それぞれのピクセルを一番近いテーブル色で置き換える。
- 同じテーブル色を選んだピクセルの元の色の平均値を求めて、そのテーブル色を置き換える。
- 再度、それぞれのピクセルを一番近いテーブル色で置き換える。
- 以下、2と3の繰り返し
RGBよりもL*a*b*だとかYCrCbだとかの色空間でクラスタリングしたほうが、人間の目にとってより自然になる、というような話もあるけど。
で、RGB→YCrCbの変換を行って、輝度信号の解像度を上げるとカラーテーブルがどのように変化するか実験してみた。色数は8色に減色。
まず、変換後もYCrCbの信号を均等に扱った場合。元の画像の色味がある程度再現されている一方、人物の顔がボケてしまっているような印象。また、服のシワなどはあまり再現していない。
次に輝度信号Yを√2倍の解像度にした場合。色合いがほとんどセピアになってしまったが、服のシワや人体の凹凸などがややハッキリする。
最後にY解像度を2倍にしたもの。色合いはほとんど再現されないが、色の濃淡の差はより細かく再現される。
まず、変換後もYCrCbの信号を均等に扱った場合。元の画像の色味がある程度再現されている一方、人物の顔がボケてしまっているような印象。また、服のシワなどはあまり再現していない。
次に輝度信号Yを√2倍の解像度にした場合。色合いがほとんどセピアになってしまったが、服のシワや人体の凹凸などがややハッキリする。
最後にY解像度を2倍にしたもの。色合いはほとんど再現されないが、色の濃淡の差はより細かく再現される。
PR
26歳のハローワールド
カレンダー
03 | 2024/04 | 05 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
最新記事
(05/23)
(05/11)
(05/09)
(05/08)
(05/08)
(03/07)
(02/25)
(02/07)
(02/07)
(01/28)
最新コメント
[11/27 gyzwviyehl]
[11/18 Tepexaxyonelo]
[09/12 gomFolley]
[08/16 CypeBachCoece]
[06/02 gb]
[03/06 kishima]
[01/18 KNDY]
[01/16 kage]
[12/23 KNDY]
[12/23 kage]
最新トラックバック
カテゴリー
アーカイブ
ブログ内検索
アクセス解析