Ich untersuche, wie sich die Intensität eines Rings in Abhängigkeit vom Winkel ändert. Hier ist ein Beispiel eines Bildes:Nimm Daten von einem Kreis in Python
Was Ich mag würde tun nehmen ist, einen Kreis von Werten aus der Mitte des Donut und zeichnen sie gegen Winkel. Was ich gerade mache, ist scipy.ndimage.interpolation.rotate und nehme Scheiben radial durch den Ring und extrahiere das Maximum der zwei Peaks und zeichne diese gegen den Winkel.
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]
Allerdings glaube ich nicht, dass dies tut, was ich eigentlich suche. Ich kämpfe hauptsächlich damit, wie ich die Daten extrahieren kann, die ich möchte. Ich habe auch versucht, eine Maske anzubringen, die so aussieht;
auf das Bild, aber dann weiß ich nicht, wie die Werte in der richtigen Reihenfolge innerhalb dieser Maske zu erhalten (dh in der Reihenfolge des Winkelerhöhungs 0 -. 2 pi)
All andere Ideen wären eine große Hilfe!
Hallo, Vielen Dank für die Beantwortung. Der Code sieht gut aus, aber ich bekomme, was Sie hier haben, wenn ich die Linie herausnehme. image = image/np.amax (image) dann scheint es wie gewohnt zu funktionieren! Wenn nicht, dann habe ich das ursprüngliche Bild komplett schwarz, abgesehen von einem kleinen weißen Quadrat in der Reihenfolge unten rechts. Ich bin ein wenig verwirrt, wie das scipy interp2d funktioniert - ich importiere ein Bild mit scipy.misc's imread-Funktion, also bin ich nicht sicher, wie man das in die erforderlichen x y und z Eingänge für interp2d aufteilen? – arbitraryknowledge
Ah, ich habe Python3-Code geschrieben, und Sie haben Python 2.7, oder? Versuchen Sie 'image = image * 1.0/np.max (image)'. Ändern Sie auch zu 'xcenter = 0.5 * len (x) ', usw. Es ist wegen [Ganzzahldivision] (http://stackoverflow.com/q/21316968/1292641). – Norman
Ihr Bild von 'imread()' ist ein ndarray. Probieren Sie 'h, w = image.shape; sp.interpolate.interp2d (np.arange (w), np.arange (h), Bild) '. – Norman