Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss16:einteilen

Dies ist eine alte Version des Dokuments!


import numpy as np
from scipy import misc
import matplotlib.pyplot as plt
 
def filtern(bild, zeile, spalte, eps):
	spalten=[spalte]
	zeilen= [zeile]
	while(True):
		summeZeilenmax=0
		summeZeilenmin=0
		summeSpaltenmax=0
		summeSpaltenmin=0
		for l in zeilen:
			if (bild[l, max(spalten)]-eps <= 0):
				summeZeilenmax +=1
			if (bild[l, min(spalten)]-eps <= 0):
				summeZeilenmin +=1
		for k in spalten:
			if (bild[max(zeilen),k]-eps <= 0):
				summeSpaltenmax +=1
			if (bild[min(zeilen),k]-eps <= 0):
				summeSpaltenmin +=1
		if summeZeilenmax != len(zeilen):
			spalten.append(max(spalten)+1)
		if summeZeilenmin != len(zeilen):
			spalten.append(min(spalten)-1)
		if summeSpaltenmax != len(spalten):
			zeilen.append(max(zeilen)+1)
		if summeSpaltenmin != len(spalten):
			zeilen.append(min(zeilen)-1)
		if (summeSpaltenmax+summeSpaltenmin) == 2* len(spalten) and (summeZeilenmax+summeZeilenmin)== 2* len(zeilen):
			zeilen.sort()
			spalten.sort()
			return zeilen, spalten
 
def partitionierung(bild, eps=8):
	bilder=[]
	#plt.imshow(bild, cmap="gray")
	#plt.show()
	#print bild.shape
	for i in range(bild.shape[1]):
		for j in range(bild.shape[0]):
			if bild[j,i]- eps > 0:
				zeilen,spalten = filtern(bild, j, i, eps)
				teilbild = np.zeros(((len(zeilen)),(len(spalten))))
				for p in range(len(zeilen)):
					for u in range(len(spalten)):
						teilbild[p,u] = bild[zeilen[p],spalten[u]]
						bild[zeilen[p],spalten[u]]=0
				bilder.append(teilbild)
				#plt.imshow(teilbild,cmap="gray")
				#plt.show()
	return bilder
 
if __name__=="__main__":
	bild=misc.imread("1+2.png")
	partitionierung(bild)
ss16/einteilen.1473946929.txt.gz · Zuletzt geändert: 2016/09/15 15:42 von henrikfrenzel