У меня есть шумный ненормальный 2D-гауссовский массив с неизвестным местоположением, а также неизвестное значение и дисперсия. Как я могу вычислить местоположение центра Гаусса, его ширину и высоту на определенном уровне достоверности?Получить информацию о местоположении двумерного гауссовского массива
Для образца случае, как идеальный нормальный 2D гауссовой:
def gauss2d(shape=(200,200),sigma=20):
m,n = [(ss-1.)/2. for ss in shape]
y,x = np.ogrid[-m:m+1,-n:n+1]
h = np.exp(-(x*x + y*y)/(2.*sigma*sigma))
h[ h < np.finfo(h.dtype).eps*h.max() ] = 0
h = h/h.max()
return h[:150, :150]
skimage.io.imshow(gauss2d()) # it looks like the following
я могу использовать arg.max()
каждого пикселя, чтобы получить место в центре, но и для шумного случае я, возможно, придется использовать arg.max()
каждого пикселя 3x3
, чтобы прочно вычислить центр. Как я могу достичь этого с помощью python?
Я понятия не имею, как вычислить ширину и высоту. Я также думаю использовать какой-то метод кластеризации на основе плотности, чтобы дать информацию о местоположении, такую как DBSCAN scikit-learn, но не знаю, как это сделать практически.
Большое спасибо заранее!
смотреть на [это] (http://stackoverflow.com/questions/21566379/fitting-a-2d-gaussian-function-using-scipy-optimize-curve -fit-valueerror-and-m) – Aaron
это именно то, что мне нужно! Спасибо, Аарон! – Xer