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.1473946912.txt.gz · Zuletzt geändert: 2016/09/15 15:41 von henrikfrenzel