C++でのガウス曲線を特定のヒストグラムのピークに当てはめる
-
20-09-2019 - |
質問
ガウス曲線をヒストグラムのピークに当てはめることに関して 2 つの質問があります。私の最初の質問は非常に基本的なものです。
- ヒストグラム全体にガウス曲線を当てはめるにはどうすればよいですか?これは、ヒストグラムの平均値(μ)と偏差(ϭ)を求めて計算し、ガウス曲線の式に代入する必要があるということだけを意味するのでしょうか?
次の例は正しいでしょうか?(ほんの一例として) 5 つのカラー値を持つ画像のヒストグラムがあると仮定します。X 軸にはこれら 5 つの色の値があり、Y 軸にはこれらの各値の頻度が表示されます。つまり:
値1:1回
値 2:4回
値 3:7回
値4:3回
値5:2回
ここで、平均値(μ)は3(μ = 3)になります。
そして、偏差(ϭ)は0.9になります(ϭ = 0.9)。公式:
ここで、これらの値を式の中で使用します。 密度関数 ガウス曲線を計算するには?
あれは正しいですか?残念ながら、数学の知識については少し自信がありません。
- 2 番目の質問はもう少し難しいものです。今回は、いくつかのピークを持つヒストグラムがありますが、ガウス カーブを最も高いピークにのみフィットさせたいと考えています。したがって、ヒストグラムのすべてのビンをループ用に簡単に通過し、最も周波数(Y軸に表示)を持つX軸(画像の強度を含む)に1つの強度値を見つけます。これが最高峰でしょう。しかし、偏差はどうやって調べればいいのでしょうか?特に、計算にどの強度値を含めるべきかわからないので。私の知る限り、ガウス曲線の転換点は µ+ϭ と µ-ϭ にあります。それが問題の解決に役立つでしょうか。
この質問は少し数学的で申し訳ありませんが、質問するのに適した場所が見つかりませんでした。私も同様のトピックをいくつか読みましたが、残念ながら最終的に私の質問には答えられませんでした。
ご協力いただきありがとうございます!
よろしくマーク
解決
単一のガウスのパラメータを推定するアプローチは正しいと思います。
複数のガウシアンについては、調べてみるとよいでしょう。 混合モデル より具体的にはガウス分布の混合です。それについて少しメモしておきます。
- (おそらくすでにご存知でしょう) 混合内で最も強いガウスは、最も高いピークを持つガウスである必要はありません
- 平均値が異なる 2 つのガウス分布の合計がある場合、ヒストグラムのピークは平均値と一致しません。
- 離散ヒストグラム内の単一ピークの高さを使用することは、おそらく良い考えではありません。実際のピークは 2 つのヒストグラム ビンの間にある可能性があります。[説明:その場合、両方のビンのカウントは、ビンの中心にあるピークよりも大幅に低くなる可能性があります。] また、ほとんどの種類のデータでは、ヒストグラムには多くのノイズが含まれます。少なくともヒストグラムに対して何らかの平均化フィルターを使用してください。
他のヒント
単一のピークのためにあなたのシンプルなアプローチがOKでなければなりません。 [ところで、私はそれが画像に関連する場合、これは適切にプログラミングの質問だと思います。
複数のピークがより困難です。 //en.wikipedia:ピークを解決するプロセスは、をデコンボリューションの( HTTPと呼ばれています。 ORG /ウィキ/デコンボリューションする)とユニークな答えは通常ありません。あなたはそこにある、またはピークの最小分散が何であるかをどのように多くのピークを決定する必要があります。(そうしないと、各ビンのピークを作成することができます: - ))