MedianCut調整

分割したあとピクセルが含まれてない時に軸を変えて探しなおすのと
それでもピクセルが含まれてない時にAABBがおかしなことになってたのと
色空間の大きさを変えられるようにしたのと
誤差拡散で色が染み出ちゃうのに対応したのと処理をまとめたりとか
いままで分割面で適当に色を決めてたけどちゃんと重心で取るようにした。


かなり綺麗になったけどOptpixで減色したのと比べると暗い部分に多くパレットを割いてしまってて明るい部分がちょっと変。


人間の目は明るさに敏感とか聞いたので暗い部分は優先度を下げるようにするだけで相当綺麗になるんじゃないかな。
YUV空間でやってみるか。


そういえばコメントで指摘があったとおりプリファレンスでメモリの割り当てが増やせて24bitの色空間でも出来ました。
でも18bitくらいでもあんまり結果は変わらないね。
若干良くなる程度。
物によっては18bitの方が綺麗に出ることもある。


色々な画像の色空間を眺めてると主軸が2方向に伸びるようなのがあったりとかしてて
そういう分布の複雑さ(もしくは形状)を表す関数を分割したらもっと綺麗に出来るんじゃないかと思ったり。
というかそんな論文を昔に見たことあるような気がする。


MedianCutの良い所は数学的に複雑な事は殆どやってない(実装するとわかるけど超簡単)というシンプルさだと思う。シンプルが故に工夫を加えやすい。
これ考えた人は天才だね。


α値込みの減色はメモリが許すならメディアンカットでやってみたいw
というかα値入れた場合ってどうやるのがいいんだろう。