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)