Example #1
0
  def idwt( cls, input, steps = -1, m = -1, tensor=False ):
    if m == -1:
      m = input.shape[0]
    if len( input.shape ) == 3:
      return cls.idwt3d(input,steps,m,tensor=tensor)
    elif len( input.shape ) == 2:
      return cls.idwt2d(input,steps,m,tensor=tensor)
    else:
      n = len( input )
      output = input.copy()

      if n == 1:
        return output

      if not _is_pow2( n ):
        output = np.concatenate((output, [0 for i in range( minimaxpow2(n) - n)]))

      if steps < 0:
        steps = int(log(minimaxpow2(n), 2))

      print "we gaan %i steps terug doen zwa" % steps

      for i in range( steps ):
        j = steps - i-1
        k = len(output)/(2**j)
        output[0:k] = cls.prev(output[0:k])
        #print "vorige rondeeee"

      return output[0:m]
Example #2
0
  def dwt( cls, input, steps = -1, tensor=False):
    if len( input.shape ) == 3:
      return cls.dwt3d(input,steps,tensor=tensor)
    elif len( input.shape ) == 2:
      return cls.dwt2d(input,steps,tensor=tensor)
    else:
      n = input.shape[0]
      output = np.copy( input )

      if n == 1:
        return output

      if not _is_pow2( n ):
        output = np.concatenate((output, [0 for i in range( minimaxpow2(n) - n)]))

      if steps < 0:
        steps = int(log(minimaxpow2(n), 2))

      print "we gaat %i steps doen" % steps

      for i in range( steps ):
        k = len(output)/(2**i)
        output[0:k] = cls.next(output[0:k])

      return output
Example #3
0
  def idwt3d( cls, input, steps = -1, m = -1, tensor=False ):
    assert len(input.shape) == 3

    n = input.shape[0]
    output = np.copy( input )

    if n == 1:
      return output 

    if m < 0:
      m = n
  
    if steps < 0:
      steps = int( log( minimaxpow2(n), 2) )

    if not tensor:
      for i in range( steps ):
        j = steps - i - 1
        k = len( output ) / ( 2 ** j )
        output[ 0:k, 0:k, 0:k ] = cls.prev_3d( output[ 0:k, 0:k, 0:k ] )
    else:
      for i in range( steps ):
        j = steps - i - 1
        k = len( output ) / ( 2 ** j )
        for p in range( n ):
          for q in range( n ):
            output[0:k,p,q] = cls.prev( output[0:k,p,q] )
        for p in range( n ):
          output[p,0:k,0:k] = cls.prev_2d( output[p, 0:k, 0:k] )

    return output[ 0:m, 0:m, 0:m ]
Example #4
0
  def dwt3d( cls, input, steps = -1, tensor = False ):
    assert len(input.shape) == 3
    for i in input.shape:
      assert _is_pow2(i)

    n = input.shape[0]
    output = np.copy( input )

    if n == 1:
      return output

    if steps < 0:
      steps = int( log( minimaxpow2(n), 2) )

    if not tensor:
      for i in range( steps ):
        print "nieuwe ronde %i van %i!" % (i, steps)
        k = len( output ) / ( 2 ** i )
        output[ 0:k, 0:k, 0:k ] = cls.next_3d( output[ 0:k, 0:k, 0:k ] )
    else:
      for i in range( steps ):
        k = len( output ) / (2**i)
        for p in range( n ):
          output[p,0:k,0:k] = cls.next_2d( output[p, 0:k, 0:k] )
        for p in range( n ):
          for q in range( n ):
            output[0:k,p,q] = cls.next( output[0:k,p,q] )

        
    return output
Example #5
0
  def dwt2d( cls, input, steps = -1, tensor=False ):
    assert len(input.shape) == 2
    n = input.shape[0]
    for i in input.shape:
      assert _is_pow2(i) #alleen machten van 2 so far
      
    output = np.copy( input )
  
    if n == 1:
      return output

    if steps < 0:
      steps = int( log( minimaxpow2(n), 2))
      
    print "we gaan %i steps doen" % steps

    if not tensor:
      for i in range( steps ):
        k = len( output )/(2**i)
        output[0:k,0:k] = cls.next_2d( output[0:k,0:k] )
        #print "volgende rondee:)"
    else:
      for i in range( steps ):
        k = len(output ) / (2**i)
        for p in range(n):
          output[p,0:k] = cls.next( output[p,0:k] )
        for p in range(n):
          output[0:k,p] = cls.next( output[0:k,p] )
    return output
Example #6
0
  def idwt2d( cls, input, steps = -1, m = -1, tensor=False ):
    assert len(input.shape) == 2
    n = input.shape[0]
    assert _is_pow2(n) #alleen machten van 2 so far
    for i in input.shape:
      assert i == n #square/cube/etc

    output = np.copy( input )

    if m<0:
      m = n

    if n == 1:
      return output

    if steps < 0:
      steps = int(log(minimaxpow2(n), 2))

    print "we gaan %i steps terugdoen" % steps

    if not tensor:
      for i in range( steps ):
        j = steps - i - 1
        k = len(output ) / (2**j)
        output[0:k,0:k] = cls.prev_2d( output[0:k,0:k] )
        #print "vorige ronde!"
    else:
      for i in range( steps ):
        j = steps - i - 1
        k = len(output ) / (2**j)
        for p in range(n):
          output[0:k,p] = cls.prev( output[0:k,p] )
        for p in range(n):
          output[p,0:k] = cls.prev( output[p,0:k] )
      
    return output[0:m,0:m]