Advertisement
Guest User

Brute force fractal complex

a guest
Oct 13th, 2015
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.75 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thurs Sept 07 2015
  4.  
  5. @author: Tom Babbitt
  6.  
  7. """
  8. import random,math,cmath,itertools
  9. from PIL import Image,ImageChops,ImageStat,ImageEnhance
  10. import glob,pickle
  11.  
  12. def mandlecomplex(a1):
  13.     j,c = a1[0],a1[1]
  14.     j = j**5 + c
  15.     return ([j,c])
  16.  
  17. class IFS(object):
  18.     def __init__(self,Fn,Io):
  19.         self.Fn = Fn
  20.         self.Io = Io
  21.         self.Inext = Io
  22.     def __iter__(self):
  23.         return self
  24.     def next(self):
  25.         if self.Fn:
  26.             self.Inext = self.Fn(self.Inext)
  27.         return self.Inext
  28.  
  29. def checkval(Valu):
  30.     vrl,vimg = Valu.real,Valu.imag
  31.     if math.isnan(vrl):
  32.         Valu = complex(1.,vimg)
  33.         vrl = 1.
  34.     if math.isnan(vimg):
  35.         Valu = complex(vrl,1.)
  36.         vimg = 1.
  37.     if vrl > 1.:
  38.         Valu = complex(1.,vimg)
  39.         vrl = 1.
  40.     elif vrl < 0.:
  41.         Valu = complex(0.,vimg)
  42.         vrl = 0.
  43.     if vimg > 1.:
  44.         Valu = complex(vrl,1.)
  45.         vimg = 1.
  46.     elif vimg < 0.:
  47.         Valu = complex(vrl,-1.)
  48.         vimg = 0.
  49.     return Valu
  50.  
  51. superimg = [[0 for i in range(1024)] for j in range(1024)]
  52.  
  53. def imgux(gray,fname):
  54.     im = Image.new('L',(len(gray[int(len(gray)/2)]),len(gray)))
  55.     [[im.putpixel((c,k),l) for k,l in enumerate(i)] for c,i in enumerate(gray)]
  56.     im.save(file(fname,'wb'))
  57.  
  58. def umxrot(uxm):
  59.     uxt = [[0. for j in range(len(uxm[0]))] for i in range(len(uxm))]
  60.     for i in range(len(uxm)):
  61.         for j in range(len(uxm[0])):
  62.             uxt[j][i] = uxm[i][j]
  63.     return uxt
  64.  
  65. def imgtouxm(fname):
  66.     tomimg = Image.open(file(fname,'rb'))
  67.     tomimg = tomimg.resize((1024,1024))
  68.     tomimg = tomimg.convert('L')
  69.     trdata = tomimg.getdata()
  70.     uxm = zip(*[iter(trdata)]*tomimg.size[0])
  71.     uxm = umxrot(uxm)
  72.     del tomimg
  73.     return uxm
  74.  
  75. def imagtouxm(tomimg):
  76.     trdata = tomimg.getdata()
  77.     uxm = zip(*[iter(trdata)]*tomimg.size[0])
  78.     uxm = umxrot(uxm)
  79.     return uxm
  80. #newlenalistIFS = IFS(mandlecomplex,[complex(0,0),(-0.31976622183775705, 0.5919377818972109)])
  81. #newlenalist = [complex(random.uniform(0.,1.),random.uniform(0.,1.)) for v in range(30000)]
  82. newlenalist = []
  83. FDlisti = pickle.load(file('c:\\python27\\tom2\\shell\\FDlist4.pkl','rb'))
  84. for I in FDlisti:
  85.     newlenalist.append(complex(I[0][0],I[0][1]))
  86.     #newlenalist.append(complex(random.uniform(0.,1.),random.uniform(0.,1.)))
  87. ##img = Image.open('C:\\Python27\\tom\\lena244\\atlantisR.jpg')
  88. ##img = img.resize((512,512))
  89. ##aa = img.resize((1024,1024))#Image.new('L',(1024,1024))
  90. ##aa.paste(img,(256,256))
  91. ###aa.save('c:\\python27\\tom2\\shell\\atlantisB.png')
  92. ##amaster = imagtouxm(aa)
  93. #superimg4 = [[0. for i2 in range(1024)] for j2 in range(1024)]
  94. FDlist = []
  95. #FDlist = pickle.load(file('c:\\python27\\tom2\\shell\\FDlist4.pkl','rb'))
  96. amaster = imgtouxm('C:\\Python27\\tom\\lena244\\atlantisB.jpg')#'C:\\Python27\\tom\\PNGdump\\lena.png')#'C:\\Python27\\tom\\lena2\\testuxmT223.png')
  97. print('newlenalist',len(newlenalist))
  98. counterhist = [0 for color in range(4097)]
  99. for FDc,FD in enumerate(newlenalist):
  100.     colorhisto2 = [0 for color in range(256)]
  101.     rnum = complex(0,0)
  102.     #rnum = complex(random.uniform(-1.,1.),random.uniform(-1.,1.))
  103.     newIFS = IFS(mandlecomplex,[rnum,FD])
  104.     superimg3 = [[0. for i2 in range(1024)] for j2 in range(1024)]
  105.     for itercount in range(4096):
  106.         nextnum = newIFS.next()
  107.         nextnum[0] = checkval(nextnum[0])
  108.         nimag = int((nextnum[0].imag - .24633431)* 3320.)
  109.         nreal = int((nextnum[0].real - .30791789) * 3320.)            
  110.         if nimag > 1023:
  111.              nimag = 1023
  112.         if nreal > 1023:
  113.              nreal = 1023                
  114.         if nimag < 0:
  115.              nimag = 0
  116.         if nreal < 0:
  117.              nreal = 0
  118.         #print(int(nextnum[0].imag * 511.),int(nextnum[0].real * 511.))#0.49496608277108433734939759036145  0.52900222734939759036144578313253
  119.         colorhisto2[amaster[nimag][nreal]] += 1
  120.         superimg3[nimag][nreal] = 1
  121.         #superimg4[nimag][nreal] += 1
  122.     print(max( colorhisto2),sum([sum(v) for v in superimg3]))
  123.     counterhist[int(sum([sum(v) for v in superimg3]))] +=1
  124.     if max( colorhisto2) >3500 and colorhisto2.index(max(colorhisto2)) > 0 and  sum([sum(v) for v in superimg3])>3:
  125.         FDlist.append(((FD.real,FD.imag),colorhisto2.index(max(colorhisto2))))
  126.     print(float(FDc)/float(len(newlenalist)))
  127. print('FDlist',len(FDlist),counterhist[:300])
  128. #print(max([max(x) for x in superimg4]))
  129. for FDc,FD in enumerate(FDlist):#masterlist):
  130.     for extraitir in range(10):
  131.         rnum = complex(0,0)
  132.         #rnum = complex(random.uniform(-1.,1.),random.uniform(-1.,1.))    
  133.         newIFS = IFS(mandlecomplex,[rnum,complex(FD[0][0],FD[0][1])])
  134.         for itercount in range(2048):
  135.             nextnum = newIFS.next()
  136.             nextnum[0] = checkval(nextnum[0])                          
  137.             #nimag = int((nextnum[0].imag - 0.39332226180722891566265060240964)* 30056.)
  138.             #nreal = int((nextnum[0].real - 0.49496608277108433734939759036145) * 30056.)
  139.             nimag = int((nextnum[0].imag - .24633431)* 3320.)
  140.             nreal = int((nextnum[0].real - .30791789) * 3320.)      
  141.             if nimag > 1023:
  142.                  nimag = 1023
  143.             if nreal > 1023:
  144.                  nreal = 1023                
  145.             if nimag < 0:
  146.                  nimag = 0
  147.             if nreal < 0:
  148.                  nreal = 0
  149.             superimg[nimag][nreal] = FD[1]
  150.                
  151.  
  152.  
  153.  
  154.     print(float(FDc)/float(len(FDlist)))
  155. imgux(superimg,'c:\\python27\\tom2\\shell\\Atlantisf_test_5d.png')#'+str((float(FDc)/float(len(newlenalist))))+'.png')
  156. #imgux(superimg4,'c:\\python27\\tom2\\shell\\LenaE_pixelcount.png')
  157. pickle.dump(FDlist,file('c:\\python27\\tom2\\shell\\Atlantisf_B.pkl','wb'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement