Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1415:projekte_im_wintersemester_2014_15:bildzutoncode

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1415:projekte_im_wintersemester_2014_15:bildzutoncode [2015/03/29 15:54]
mr.lazy
ws1415:projekte_im_wintersemester_2014_15:bildzutoncode [2016/05/10 14:46] (aktuell)
Zeile 438: Zeile 438:
 ==== Farbräume ==== ==== Farbräume ====
 <code python> <code python>
-def farbraume (selfi, z=4): #z Anzahl der Teilbereiche pro Farbkomponente 
-    farbaume = [] 
-    for i in range (z): 
-        for j in range (z): 
-            for k in range (z): 
-                farbraume.append((i,​j,​k)) 
  
-    ​for pixel in selfi.pixels:+    ​def farbraume (self, z=2): #z Anzahl der Teilbereiche pro Farbkomponente 
 +        '''​Wenn man sich den RGB-Farbraum als Würfel vorstellt, so kann man diesen ​in kleinere Würfel zerlegenDiese Methode zerlegt den Würfel in z*z*z kleine Würfel und ordnet jedem Pixel den Würfel zu, in dem er liegt.'''​ 
 +        farbraume = []
         for i in range (z):         for i in range (z):
 +            for j in range (z):
 +                for k in range (z):
 +                    farbraume.append((i,​j,​k))
 +
 +        konvpixel = []
 +        for pixel in self.pixels:​
             r = pixel[0]             r = pixel[0]
             g = pixel[1]             g = pixel[1]
-            b = pixel[2] ​            +            b = pixel[2] 
-             +            ​for i in range(z): ​         ​ 
-            if (225/z) <= r and r < (225(i+1))/z: +                if (256/z)*i <= r and r < (256*(i+1))/z: 
-                ​r ​= i #rot +                    ​rl ​= i #rot 
-            if (225/z) <= g and g < (225(i+1))/z: +                if (256/z)*i <= g and g < (256*(i+1))/z: 
-                ​g ​= i #grün +                    ​gl ​= i #grün 
-            if (225/z) <= b and b < (225(i+1))/z: +                if (256/z)*i <= b and b < (256*(i+1))/z: 
-                ​b ​= i #blau+                    ​bl ​= i #blau 
 +            konvpixel.append((rl,​gl,​bl)) 
 +        return [farbraume.index(tupel) for tupel in konvpixel] 
 +</​code>​ 
 +==== Synthesizer ==== 
 +<code python>​ 
 +def tune(f, d, r=44100, mode='​sinus'​):​ 
 + vol = 1 
 + waves = [] 
 + waves.append(sinewave(f,​ r, d)) 
 + if mode == '​organ':​ 
 + while vol >= 0.1: 
 + vol *= 0.7 
 + waves.append(sinewave(f*freq.getRatio('​quinte'​),​ r, d, vol=vol/​2))  
 + f *= freq.getRatio('​oktave'​) 
 + waves.append(sinewave(f,​ r, d, vol = vol))  
 + if '#'​ in mode: #bei #​a-z1,​b-z2,​c-z3,​d-z4,​g-z5,​t-z6,​e-z7 wird der a-te, b-te, ..., e-te oberton hinzugefügt mit z1, z2,..., z7 % lautstärke 
 + toene = mode[1:​].split(','​) 
 + for ton in toene: 
 + waves.append(sinewave(f*2**int(ton[:​ton.index('​-'​)]),​ r, d, vol=int(ton[ton.index('​-'​):​])/​100)) 
 + 
 + return wave
 </​code>​ </​code>​
 ==== MARKOV ==== ==== MARKOV ====
Zeile 544: Zeile 567:
 Zufallszahlen für Markov-ketten Zufallszahlen für Markov-ketten
 <code python> <code python>
 +# -*- coding: cp1252 -*-
 +#​Zufallszahl für Markov-Kette
 +
 +#-*- coding: utf-8 -*-
 +from __future__ import division
 +from PIL import Image
 +import random
 +from bild import Bild
 +import numpy as np
 +
 +def spaltenBreite(bild,​ spalten = 240):
 +    '''​Spaltenbreite der Pixel die zusammengefasst wird!'''​
 +    n = bild.bBreite()
 +    b = int((n-(n%spalten))/​spalten)
 +    if b == 0:
 +        return 1
 +    return b 
 +
 +def spalten(bild,​ spaltenum = 240):
 +    spalten = []
 +    pic = bild.rasterList(bild.farbraume(4))
 +    sBreite = spaltenBreite(bild,​ spaltenum)
 +    ende = bild.bBreite()-bild.bBreite()%sBreite
 +    if ende == 0:
 +        ende = bild.bBreite()
 +    for i in range(0, ende, sBreite):
 +        spalte = []
 +        for x in range(sBreite):​
 +            if (i+x < len(pic)):
 +                spalte += pic[i+x]
 +        spalten.append(spalte)  ​
 +    return spalten
 +
 +def zufallsZahl(bild,​ spaltenum = 240):
 +    n = bild.bBreite()
 +    b = spaltenBreite(bild,​ spaltenum)
 +    l = int(bild.bHohe())
 +    r = b * l
 +
 +    spalter = []
 +    spaltenliste = spalten(bild,​ spaltenum)
 +    ​
 +    for spalte in spaltenliste:​
 +        spalter.append(sum(spalte)/​len(spalte)) ​       ​
  
-  ​+    zZahl = [] 
 +    for spalte in range(len(spalter)):​ 
 +        varianz = 0 
 +        for y in range(r): 
 +            x1 = spalter[spalte] 
 +            x2 = spaltenliste[spalte][y] 
 +            varianz += 1/r*(x1 - x2)**2 
 +        zZahl.append(varianz) 
 +    maximum = max(zZahl) 
 +    return [num/​maximum for num in zZahl]
 </​code>  ​ </​code>  ​
ws1415/projekte_im_wintersemester_2014_15/bildzutoncode.1427637276.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)