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]
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
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 ]
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
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
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]