Advertisement
Guest User

Untitled

a guest
Dec 16th, 2013
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.10 KB | None | 0 0
  1. import Image
  2. import ImageDraw
  3. from scipy import misc
  4. import matplotlib.pyplot as plt
  5. import scipy
  6. import numpy
  7. import random
  8. f = misc.imread("firefox_512.png")
  9. h = misc.imread("firefox_512.png")
  10. p = misc.imread("paw_512.png")
  11. N = 1000000
  12.  
  13. for i in range(1,4):
  14.     for j in range(1,4):
  15.         for k in range(1,4):
  16.             for l in range(1,4):
  17.            
  18.                 a = 0.25*i
  19.                 b = 0.25*j
  20.                 c = 0.25*k
  21.                 d = 0.25*l
  22.                
  23.                 if a == c and b == d:
  24.                     break
  25.            
  26.                 def F(x,y,r):
  27.                     if r <= 10000*a*b:
  28.                         return a*x, b*y
  29.                     elif r <= 10000*b:
  30.                         return (1-a)*x + a*512.0 - 1.0, b*y
  31.                     elif r <= 10000*(1 - a + a*b):
  32.                         return (1-a)*x + a*512.0 - 1.0, (1-b)*y + b*512.0 - 1.0
  33.                     else:
  34.                         return a*x, (1-b)*y + b*512 - 1
  35.  
  36.                 def Hf(x,y,r):
  37.                     if r <= 10000*a*b:
  38.                         return 0.5*x, 0.5*y
  39.                     elif r <= 10000*b:
  40.                         return 0.5*x + 255.0
  41.                     elif r <= 10000*(1 - a + a*b):
  42.                         return 0.5*x + 255.0, 0.5*y + 255.0
  43.                     else:
  44.                         return 0.5*x, 0.5*y + 255.0
  45.  
  46.                 def P(x,y,r):
  47.                     if r <= 10000*c*d:
  48.                         return c*x, d*y
  49.                     elif r <= 10000*d:
  50.                         return (1-c)*x + c*512.0 - 1.0, d*y
  51.                     elif r <= 10000*(1 - c + c*d):
  52.                         return (1-c)*x + c*512.0 - 1.0, (1-d)*y + d*512.0 - 1.0
  53.                     else:
  54.                         return c*x, (1-d)*y + d*512.0 - 1.0
  55.  
  56.                 def Hp(x,y,r):
  57.                     if r <= 10000*c*d:
  58.                         return 0.5*x, 0.5*y
  59.                     elif r <= 10000*d:
  60.                         return 0.5*x + 255.0, 0.5*y
  61.                     elif r <= 10000*(1 - c + c*d):
  62.                         return 0.5*x + 255.0, 0.5*y + 255.0
  63.                     else:
  64.                         return 0.5*x + 255.0, 0.5*y + 255.0
  65.  
  66.                 (xf,yf) = (0,0)
  67.                 (xh,yh) = (0,0)
  68.  
  69.                 for n in xrange(N):
  70.                     r = random.randint(1,10000)
  71.                     (xf,yf) = F(xf,yf,r)
  72.                     (xh,yh) = Hf(xh,yh,r)
  73.                     h[int(round(xh)),int(round(yh))] = f[int(round(xf)),
  74.                         int(round(yf))]
  75.  
  76.                 (xp,yp) = (0,0)
  77.                 (xh,yh) = (0,0)
  78.  
  79.                 for n in xrange(N/4):
  80.                     r = random.randint(1,10000)
  81.                     (xp,yp) = P(xp,yp,r)
  82.                     (xh,yh) = Hp(xh,yh,r)
  83.                     h[int(round(xh)),int(round(yh))] = p[int(round(xp)),
  84.                         int(round(yp))]
  85.                    
  86.                 misc.imsave('%d_%d_%d_%d_merged.png' % (i,j,k,l), h)
  87.                
  88.                 f = misc.imread("paw_512.png")
  89.                 h = misc.imread("%d_%d_%d_%d_merged.png" % (i,j,k,l))
  90.                
  91.                 (xf,yf) = (0,0)
  92.                 (xh,yh) = (0,0)
  93.  
  94.                 for n in xrange(N):
  95.                     r = random.randint(1,10000)
  96.                     (xf,yf) = F(xf,yf,k)
  97.                     (xh,yh) = Hf(xh,yh,k)
  98.                     f[int(round(xf)),int(round(yf))] = h[int(round(xh)),
  99.                         int(round(yh))]
  100.                
  101.                 misc.imsave('%d_%d_%d_%d_f.png' % (i,j,k,l), f)
  102.                
  103.                 p = misc.imread("firefox_512.png")
  104.                
  105.                 (xf,yf) = (0,0)
  106.                 (xp,yp) = (0,0)
  107.                
  108.                 for n in xrange(N):
  109.                     r = random.randint(1,10000)
  110.                     (xp,yp) = P(xp,yp,r)
  111.                     (xh,yh) = Hp(xh,yh,r)
  112.                     p[int(round(xp)),int(round(yp))] = h[int(round(xh)),
  113.                         int(round(yh))]
  114.                
  115.                 misc.imsave('%d_%d_%d_%d_p.png' % (i,j,k,l), p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement