4

を使用してガウス 2D 分布のピークの位置を計算しようとしてndimage.measurements.center_of_massいますが、質量の中心がピークの中心からずれていることがわかります。

import numpy as np
from scipy import ndimage
from scipy import stats
import matplotlib.pyplot as plt

x = np.linspace(-1,1,100)
xv, yv = np.meshgrid(x, x)
r = np.sqrt((xv-0.2)**2 + (yv)**2)
norm2d = stats.norm.pdf(r)
com = ndimage.measurements.center_of_mass(norm2d)
plt.imshow(norm2d, origin="lower")
plt.scatter(*com[::-1])
plt.show()

ここに画像の説明を入力

最小二乗最適化ルーチンを使用せずに、ノイズの多い 2D ガウス分布のピーク位置を大まかに計算するにはどうすればよいですか?

4

1 に答える 1

3

上位の xx% ピクセルを使用すると、正しい結果が得られます。

hist, bins = np.histogram(norm2d.ravel(), normed=True, bins=100)
threshold = bins[np.cumsum(hist) * (bins[1] - bins[0]) > 0.8][0]
mnorm2d = np.ma.masked_less(norm2d,threshold)
com = ndimage.measurements.center_of_mass(mnorm2d)
plt.imshow(norm2d, origin="lower")
plt.scatter(*com[::-1])
plt.show()

結果:

ここに画像の説明を入力

于 2013-08-26T02:27:04.663 に答える