前提
Pythonでヒストグラムの値を扱いたいと思っています。
実現したいこと
ある画像に対し、
Data=[1,54,300,231,7,...] のような1次元配列にします。
それが下のようなヒストグラムになったとき、
下の画像のように、
例えばこのヒストグラムにおいて最も割合の高かった部分を見つけ、
その部分および、その前後80%の部分を除外して、残った部分のデータだけの平均値を取得したいのですが、どうすればいいでしょうか。
ガウス分布を当てはめて上位2σ分を除外するやり方でいけそうな気がしますが、
それをPythonでやる方法を調べてもなかなかヒットしなかったので質問させていただきました。
該当のソースコード
import numpy as np import cv2 import pandas as pd import os import csv import matplotlib import matplotlib.pyplot as plt import scipy.stats as st image = cv2.imread(~) image = np.array(image_nose).flatten() section = np.linspace(0,255,10) hist = cv2.calcHist(images=[image], channels=[0], mask=None, histSize=[256], ranges=[0,256]) plt.plot(hist) #ガウス分布 sig = image_nose.std(ddof=1) # 不偏標準偏差:ddof(自由度)=1 nx = np.linspace(x_min, x_max+d, 150) # 150分割 ny = st.norm.pdf(nx,ave,sig) * k * len(image) plt.plot( nx , ny, color='tab:blue', linewidth=1.5, linestyle='--') plt.savefig(~) plt.clf() #ヒストグラムの山のふもとの部分に属するデータだけ取って平均値を出す ~~~
###ガウス分布
ガウス分布はこちらのサイトを参考にしました。
https://qiita.com/code0327/items/a0113b74ecc037e8070c
ただなんか思ったのと違う..?
0 コメント