BlancaCC / Mezclado-de-regiones-en-imagenes-usando-la-ecuacion-de-Poisson

Implementación de técnicas de mezclar color en imágenes usando la ecuación de Poisson
Apache License 2.0
1 stars 1 forks source link

La función `OneChannelDiscretePoissonSolver` no puede hacer referencia a funciones que se declaran después #33

Closed BlancaCC closed 2 years ago

BlancaCC commented 2 years ago

El problema está en cómo se están gestionando la introducción del campo de vectores guía en esta función. Lo ideal es que estuviera como argumento el propio V. No que se escriba un String y este esté en una especie de switch...

No ha dado problema hasta ahora porque siempre se declaraba antes, pero si se ejecutase lineal sin nada precargado...

Al siguiente fragmento de código me refiero, donde pone #calculamos campos escalares:

def OneChannelDiscretePoissonSolver( source, targetImg, selectedSet, V = "", edges = None):
    ''' Devuelve f, la función interpolación para los canales dados
    source: Imagen de la que se extrae la región que se quiere clonar
    targetImg:  Imagen donde se va a posicionar la nueva región 
    selectedSet: Conjunto de puntos con las región selecciónada, a de calcularse previamente
    V: Campo de vectores guía, debe de ser una función que reciba dos píxeles y devuelva dos números reales. Si none se toma la divergencia de targetImg. 
    '''
    # Calculamos borde del arcoiris 
    sourceBoundary = SourceBoundary(targetImg, selectedSet)

    # Calculamos el campo de escalares 
    if(V == "" or V == "originalGuidance"):
        V = GuidanceFieldGenerator(source,targetImg) # imagen original de la que se extrae la región seleccionada
                                                 # Nótese que aquí se trabaja con las coordenadas de esos píxeles
    elif (V == "mixingGradients"):
        V = GuidanceFieldMixingGradients(source, targetImg)
    elif (V == "textureFlattening"):
        V = TextureFlattening(source, edges)
BlancaCC commented 2 years ago

La solución que he tomado consiste en escribir las funciones (repetidas) al principio del código e indicar que ya se redefinirán y comentarán más adelante.

Es muy cutre pero es para no liar más el código