Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss16:einteilen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
ss16:einteilen [2016/09/15 15:41]
henrikfrenzel angelegt
ss16:einteilen [2016/09/23 14:43] (aktuell)
victorbremer
Zeile 1: Zeile 1:
 +<code python>
 import numpy as np import numpy as np
 from scipy import misc from scipy import misc
Zeile 4: Zeile 5:
  
 def filtern(bild,​ zeile, spalte, eps): def filtern(bild,​ zeile, spalte, eps):
- spalten=[spalte] + spalten=[spalte] ​ # speichert die Spalten in einer Liste 
- zeilen= [zeile]+ zeilen= [zeile] ​  # speichert die Zeilen in einer Liste
  while(True):​  while(True):​
  summeZeilenmax=0  summeZeilenmax=0
Zeile 11: Zeile 12:
  summeSpaltenmax=0  summeSpaltenmax=0
  summeSpaltenmin=0  summeSpaltenmin=0
- for l in zeilen:+ for l in zeilen: ​# Überprüft für alle Zeilen, ob sie beim Maximum/​Minimum der Spalten unter dem Grenzwert liegen
  if (bild[l, max(spalten)]-eps <= 0):  if (bild[l, max(spalten)]-eps <= 0):
  summeZeilenmax +=1  summeZeilenmax +=1
  if (bild[l, min(spalten)]-eps <= 0):  if (bild[l, min(spalten)]-eps <= 0):
  summeZeilenmin +=1  summeZeilenmin +=1
- for k in spalten:+ for k in spalten: ​ # Überprüft für alle Spalten, ob sie beim Maximum/​Minimum der Zeilen unter dem Grenzwert liegen
  if (bild[max(zeilen),​k]-eps <= 0):  if (bild[max(zeilen),​k]-eps <= 0):
  summeSpaltenmax +=1  summeSpaltenmax +=1
  if (bild[min(zeilen),​k]-eps <= 0):  if (bild[min(zeilen),​k]-eps <= 0):
  summeSpaltenmin +=1  summeSpaltenmin +=1
- if summeZeilenmax != len(zeilen):​+ if summeZeilenmax != len(zeilen): ​# fügt zur Liste der Spalten die nächste Spalte hinzu, falls die größte Spalte nicht komplett unter dem Grenzwert liegt
  spalten.append(max(spalten)+1)  spalten.append(max(spalten)+1)
- if summeZeilenmin != len(zeilen):​+ if summeZeilenmin != len(zeilen):​# fügt zur Liste der Spalten die voherige Spalte hinzu, falls die kleinste Spalte nicht komplett unter dem Grenzwert liegt
  spalten.append(min(spalten)-1)  spalten.append(min(spalten)-1)
- if summeSpaltenmax != len(spalten):​+ if summeSpaltenmax != len(spalten): ​# fügt zur Liste der Zeilen die nächste Zeile hinzu, falls die größte Zeile nicht komplett unter dem Grenzwert liegt
  zeilen.append(max(zeilen)+1)  zeilen.append(max(zeilen)+1)
- if summeSpaltenmin != len(spalten):​+ if summeSpaltenmin != len(spalten): ​ # fügt zur Liste der Zeilen die voherige Zeile hinzu, falls die kleinste Zeile nicht komplett unter dem Grenzwert liegt
  zeilen.append(min(zeilen)-1)  zeilen.append(min(zeilen)-1)
- if (summeSpaltenmax+summeSpaltenmin) == 2* len(spalten) and (summeZeilenmax+summeZeilenmin)== 2* len(zeilen):​+ if (summeSpaltenmax+summeSpaltenmin) == 2* len(spalten) and (summeZeilenmax+summeZeilenmin)== 2* len(zeilen): ​ # falls der komplette Rahmen unter dem Grenzwert liegt, werden die sortierten Zeilen und Spalten übergeben
  zeilen.sort()  zeilen.sort()
  spalten.sort()  spalten.sort()
Zeile 36: Zeile 37:
 def partitionierung(bild,​ eps=8): def partitionierung(bild,​ eps=8):
  bilder=[]  bilder=[]
- #​plt.imshow(bild,​ cmap="​gray"​)+ #​plt.imshow(bild,​ cmap="​gray"​) ​#Befehle zum Anzeigen des Gesamtbildes
  #​plt.show()  #​plt.show()
  #print bild.shape  #print bild.shape
- for i in range(bild.shape[1]):​+ for i in range(bild.shape[1]): ​ # sucht einen Punkt des Bildes, der über dem Grenzwert liegt
  for j in range(bild.shape[0]):​  for j in range(bild.shape[0]):​
  if bild[j,i]- eps > 0:  if bild[j,i]- eps > 0:
Zeile 45: Zeile 46:
  teilbild = np.zeros(((len(zeilen)),​(len(spalten))))  teilbild = np.zeros(((len(zeilen)),​(len(spalten))))
  for p in range(len(zeilen)):​  for p in range(len(zeilen)):​
- for u in range(len(spalten)):​+ for u in range(len(spalten)): ​ # nimmt die Werte aus dem original Bild und schreibt sie in das Teilbild
  teilbild[p,​u] = bild[zeilen[p],​spalten[u]]  teilbild[p,​u] = bild[zeilen[p],​spalten[u]]
- bild[zeilen[p],​spalten[u]]=0+ bild[zeilen[p],​spalten[u]]=0 ​ # löscht das Teilbild aus dem orignial Bild
  bilder.append(teilbild)  bilder.append(teilbild)
- #​plt.imshow(teilbild,​cmap="​gray"​)+ #​plt.imshow(teilbild,​cmap="​gray"​) ​ # Befehle zum anzeigen des Teilbildes
  #​plt.show()  #​plt.show()
  return bilder  return bilder
  
-if __name__=="​__main__":​+if __name__=="​__main__": ​ # Aufruf der Funktion zum partitionieren mit Testbild
  bild=misc.imread("​1+2.png"​)  bild=misc.imread("​1+2.png"​)
  partitionierung(bild)  partitionierung(bild)
 +</​code>​
ss16/einteilen.1473946912.txt.gz · Zuletzt geändert: 2016/09/15 15:41 von henrikfrenzel