Я изучаю, как изменяется интенсивность кольца в зависимости от угла. Вот пример изображения:Возьмите данные из круга в python
То, что я хотел бы сделать, это круг ценностей внутри центра этого бублика и построить их против угла. То, что я сейчас делаю, это использовать scipy.ndimage.interpolation.rotate и принимать срезы радиально через кольцо и извлекать максимум из двух пиков и наносить их на угол.
crop = np.ones((width,width)) #this is my image
slices = np.arange(0,width,1)
stack = np.zeros((2*width,len(slices)))
angles = np.linspace(0,2*np.pi,len(crop2))
for j in range(len(slices2)): # take slices
stack[:,j] = rotate(crop,slices[j],reshape=False)[:,width]
Однако я не думаю, что это делает то, что я на самом деле ищу. Я в основном пытаюсь извлечь нужные данные. Я также попытался применить маску, которая выглядит так:
к изображению, но тогда я не знаю, как получить значение в пределах этой маски в правильном порядке (т.е. в порядке увеличения угла 0 -. 2pi)
Любого другого идеи были бы очень полезны!
Привет, Большое спасибо за ответы. Код выглядит великолепно, однако я получаю то, что у вас есть, когда я вынимаю линию. image = image/np.amax (изображение) тогда он работает как обычно! Если нет, я получаю оригинальное изображение полностью черного цвета, кроме одного маленького белого квадрата в нижнем правом порядке. Я немного запутался в том, как работает scipy interp2d - я импортирую изображение с помощью функции imread scipy.misc, поэтому я не уверен, как разбить это на требуемые входы x y и z для interp2d? – arbitraryknowledge
А, я написал код Python3, и у вас есть Python 2.7, правильно? Попробуйте 'image = image * 1.0/np.max (image)'. Также измените на 'xcenter = 0.5 * len (x) ' и т. Д. Это связано с [целым делением] (http://stackoverflow.com/q/21316968/1292641). – Norman
Ваше изображение из 'imread()' является ndarray. Попробуйте 'h, w = image.shape; sp.interpolate.interp2d (np.arange (w), np.arange (h), image) '. – Norman