メディアンカット

投稿日:

3日前からHSPの減色プログラムを作ってたのですが、
 
なかなか難しい。
 
メディアンカットを実装したいんだけど、資料がない。
 
ということで、作ったプログラムの一部
 
プログラム1
1 全ての色からある程度階調を落とした色数のヒストグラム作成
2 色数を多い方から昇順でソートする。
3 ソートした色の最初から指定した色数まで選ぶ。
 
はい、減色は出来てるのですが。
色数が少ない場所はもちろん全滅です。
というわけでメディアンカット?を作ってみようと
ぱっと検索エンジンで調べてみる。ブロックを作ればいいんだな!
 
プログラム2
1 全ての色からある程度階調を落とした色数の直方体ブロック作成と色数を調べる
2 直方体の中で色数が一番多いのを選ぶ。
3 直方体の3辺の中で一番長いの辺を選ぶ。
4 選んだ辺の真ん中から2つにぶったぎる。
5 その2つを色数を調べて、両方とも色が分散してたら色数カウントを増やす。
6 2~5を繰り返して、色数が指定した色数になったら7へ。
7 ブロックから平均をとってパレットに追加。
 
これが、なかなかうまくいった。
しかし何かがおかしい、あんまり使われていない色は全然出ていない。
よく検索で調べてみると、ブロックを区切る時に、真ん中ではなくて
区切った時に色数が大体半分になるような位置にしないといけないということが分かって
 
プログラム4
1 全ての色からある程度階調を落とした色数の直方体ブロック作成と色数を調べる
2 直方体の中で色数が一番多いのを選ぶ。
3 直方体の3辺の中で一番長いの辺を選ぶ。
4 選んだ辺で区切った時に色数が大体半分になるような位置を区切る。
5 その2つを色数を調べて、両方とも色が分散してたら色数カウントを増やす。
6 2~5を繰り返して、色数が指定した色数になったら7へ。
7 ブロックから平均をとってパレットに追加。
 
とやった。これやってみると、たしかにいけるのだが、
うん。指定した色数まで減色できなくなった。
特に64色以上だと途中で止まってしまうことが。
また調べてみると、
2 直方体の中で色数が一番多いのを選ぶ。
ってのはどうやら、
・直方体の中で色数が一番多いのを選ぶ。
・直方体の中で辺が一番長いのを選ぶ。
・直方体の中で体積が一番大きなものを選ぶ。
という種類があるということが分かりました。
でどれも試してみましたが、指定した色まで減色できないという。
うん。バグかな。
 
それで、プログラム2と4を組み合わせて、
上の中の体積のやつを選んで、64色まで限定というのが完成しました^^;
画像効果に利用するだけだからこれで十分だ。うん!
 
あああ。もうなんか、限界です。どこが間違っているのやら。
どっかで収束してしまうのかな。
 
ところで、今までメディアンカットって1つのアルゴリズムの一種で、
その決められたアルゴリズムを実装したら誰でも簡単に減色で切ると思っていたけど、
実際は 色をブロックにして、それを分けていく というそういうのがメディアンカットって言うのかな。
うん。詳しくないからうん。違ったらごめんなさい。
 
話し変わりますがポスタリゼーションってのも作りました。
階調変更のみで、RGBテーブル参照のコントラスト処理で実装できると思って、
いろいろやってみたのですが、たしかに階調変更はするのですが、
PictBear、SHARAKU、みたいに綺麗にできねええ。
なんじゃこれ^^;
それで階調変更の前にコントラストを60あげて処理したら綺麗になった。
ポスタリゼーションの内部処理に”コントラストあげる”ってのが本当は必要なのか。
広告

コメントをどうぞ(承認された後に公開されます。メールアドレスの記入は自由ですが、記入した場合でも一般公開されることはありません)

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中