ich möchte eine Rasteroperation schreiben, die die Summe von Werten von direkt benachbarten Pixlel (acht an der zahl) einer Zelle zusammenzählt. Ist dieser Wert kleiner als ein bestimmtes abbruchkriterium (Holzmenge), soll die Nachbarschaft um Radius(r) 1 Grösser werden (16 involvierte Pixel).
Die Randpixelbehandlung möchte ich so gestalten, dass sobald ein Pixel ausserhalb des Rasters mit in die Berechnung des Zentralpixels kommt, dieses den einen nodatavalue oder einen 0-Wert bekommt.
Meine aktuellen Probleme dabei sind:
- die implementierung der randpixelbehandlung
- sobald ich einen anderen Startpixel angebe (xindex, yindex) stürzt IDLE ab.
-ich verstehe nicht, warum meine range von z.B. xmin bis xmax nur drei stellen besitzt.
in meinem beispiel unten müssten es ja 3 sein.
- einen eleganten weg zu finden, um das Zentralpixel nur einmal in die berechnung miteinzubeziehen.
- Radius r wird nicht grösser, auch wenn actualsum < Holzmenge
Ich habe mir dazu folgendes skript geschrieben:
Code: Alles auswählen
Holzmenge = 40
r = 1
xindex = 2
yindex = 2
xmin = xindex - r
xmax = xindex + r
ymin = (yindex - r)# + 1
ymax = (yindex + r)# - 1
minilist_zeile = []
minilist_spalte = []
minilist_total = []
actualsum = 0
#zentralpixel addieren, geht nur, wenn man annimmt das zentralpixel < Holzmenge
minilist_zeile.append(array[xindex,yindex])
while actualsum <= Holzmenge:
#zeile + randpixel jeder zeile
for xmin in range (xmin, xmax):
minilist_zeile.append(array[xindex-r, xmin])
xmin = xmin + 1
#spalte ohne randpixel jeder zeile
for ymin in range (ymin, ymax+1):
minilist_spalte.append(array[xindex, ymin])
ymin = ymin + 1
r = r + 1
minilist_total = minilist_zeile + minilist_spalte
actualsum = sum(minilist_total)
print "akutelle Summe: " + str(actualsum)
print "zeilen: "+str(minilist_zeile)
print "spalten: "+str(minilist_spalte)
#print minilist
print "Der Radius um den Holzvorrat bereitzustellen beträgt: " + str(r-1)
Gruass
Hephaistos