2017年07月12日

自己組織化マップを使った256色画像への減色

またあまり用途のない減色のテストです。以前はc-means法で減色していたのですが、時間がかかるのでもう少し別の方法で試してみることにしました。SOMも特に早い手法ではありませんが、c-means法と比べるとかなり速いです。SOMについては以前の記事でテストだけしていましたが、かなり前だったので書き直しました。

今回256色のパレットをSOMで学習しますので、マップとしては16x16となります。入力次元はRGBの3次元で、入力画像として512x512のLenna画像を使いました。

工夫した点?は下記のとおりです。
・最大試行回数maxTの1/3までは5x5のガウスフィルタ、残りの2/3は3x3のガウスフィルタを使用
・減衰係数alpha=0.1*exp(-2.3*(t/maxT))で計算し、初期0.1〜最終0.01ぐらいの係数になるように設定
・更新式はf(t+1)=(1.0-alpha*gauss)*f(t)+alpha*gauss*v(t)として、アルファブレンドで更新
・1回の更新は画像の全画素を使用するのではなくランダムに指定した数だけ選ぶ

実行結果
1回の更新で100画素ランダムに選んでマップ更新というのを500回繰り返した結果です(計50,000回の更新)。最初の数回は疑似輪郭が目立ってますが、Lenna画像は使用されている色が偏っている方なので、200回ぐらいの繰り返しで十分収束していそうです。

ただ、パレットの右下とか使われていなそうな領域が残っているので、必ず最も色が近いところを更新するのではなくもう少し何かランダム性を入れてもいいのかもしれません。
posted by シンドラー at 22:41 | Comment(0) | TrackBack(0) | Neural Network | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック