#はじめに
最尤推定(maximum likelihood estimation)や最尤法(method of maximum likelihood)とは,統計学において,与えられたデータからそれが従う確率分布の母数を点推定する方法のことをさします.
尤とは非常に優れているという意味で,直訳すれば最も非常に優れている推定方法,となりますね(笑)
#今回やること
画像の特定の5箇所を5クラスに設定して,該当するクラスごとに10点のr,g,b値を教師データとして格納し, 入力画像の各画素がどのクラスに該当するかを最尤法を用いて算出する.
#アルゴリズム
今回のプログラムでは,入力した画像の特徴的な部分を任意に5クラス選出し,
画像の各画素がどのクラスに属するかを最尤法を用いて推定していきます.
使用する言語はPython3です.
以下の画像のように,入力画像の一部を1~5のクラス番号を振り,各クラスから教師データ用に10点を選出し,座標ごとのr,g,bの格納します.
その後,
・各クラスの平均画素値
$$m=[Rmean,Gmean,Bmean]$$
・各クラスの共分散行列
$$cV$$
・共分散行列の逆行列
$$cV^{-1}$$
・共分散行列の行列式
$$|cV|$$
を計算します.
そして上記を用いて尤度の計算をおこないます.
尤度の計算式は、以下の式を用います。
$$ J(x,c) = log|cV|+d^2(x,c)$$
$$ d^2(x,c) = (x-m)cV^{-1}(x-m)^t$$
ここで,入力画像の各座標の画素値(r,g,b)がxとなります.
5種類のクラス分の計算を行い,J(x,c)が最小のクラスに分類していきます.
#ソースコード
雑ですが,サンプルコードはこちらにあげてあります.
https://github.com/legion98/Maximum-Likelihood-Method-example
コード中に記載されている教師データの座標は,適当に仮置きしたものなので,
画像編集ソフト等を用いて,自分で選出して使ってください.