diff --git a/function.py b/function.py index 38c8ad5..b271102 100644 --- a/function.py +++ b/function.py @@ -25,14 +25,10 @@ def doTheInpainting(img,mask,radius): targetToSource.input = newTarget target = newTarget newTarget = None - for y in range(source.height): for x in range(source.width): if not source.containsMask(x,y,radius): sourceToTarget.field[y,x] = (x,y,0) - for y in range(target.height): - for x in range(target.width): - if not source.containsMask(x,y,radius): targetToSource.field[y,x] = (x,y,0) sourceToTarget.minimize(iterNnf) targetToSource.minimize(iterNnf) @@ -122,7 +118,7 @@ def ExpectationStep(nnf,sourceToTarget, vote, source, upscale): weightedCopy(source,2*xs+1,2*ys+1,vote,2*xt+1,2*yt+1,w) else: weightedCopy(source,xs,ys,vote,xt,yt,w) - + def weightedCopy(src,xs,ys,vote,xd,yd,w): if src.mask[ys,xs]: return @@ -139,4 +135,4 @@ def MaximizationStep(target,vote): g = int(vote[x,y,1]/vote[x,y,3]) b = int(vote[x,y,2]/vote[x,y,3]) target.image[y,x] = (r,g,b) - target.mask[y,x] = False \ No newline at end of file + target.mask[y,x] = False diff --git a/maskedImage.py b/maskedImage.py index becc1cc..c65863a 100644 --- a/maskedImage.py +++ b/maskedImage.py @@ -66,7 +66,7 @@ class MaskedImage: newmask[y // 2, x // 2] = True return MaskedImage(image=newimage, mask=newmask) - + def upscale(self, newH, newW): newImage = MaskedImage(width=newW,height=newH) for y in range(newH): @@ -75,10 +75,8 @@ class MaskedImage: ys = int(y*self.height/newH) if not self.mask[ys,xs]: - newImage.image[y,x,0] = self.image[ys,xs,0] - newImage.image[y,x,1] = self.image[ys,xs,1] - newImage.image[y,x,2] = self.image[ys,xs,2] + newImage.image[y,x] = self.image[ys,xs] newImage.mask[y,x] = False else: newImage.mask[y,x] = True - return newImage \ No newline at end of file + return newImage diff --git a/multiTout.py b/multiTout.py index 03d286b..4066536 100644 --- a/multiTout.py +++ b/multiTout.py @@ -30,5 +30,3 @@ img = doTheInpainting(img,mask,2) plt.imshow(img) plt.title("image final") plt.pause(20) - - diff --git a/nnf.py b/nnf.py index a404692..dad59a6 100644 --- a/nnf.py +++ b/nnf.py @@ -9,10 +9,11 @@ class Nnf: self.patchSize = patchSize def randomize(self): + self.field = np.zeros((self.input.height, self.input.width, 3), dtype=int) - for x in range(self.input.width): - for y in range(self.input.height): - self.field[y,x] = (random.randint(0,self.output.width),random.randint(0,self.output.height),MaskedImage.DSCALE) + self.field[:,:,2] += MaskedImage.DSCALE + self.field[:,:,0] = np.random.randint(0,self.output.width,self.input.width) + self.field[:,:,1] = np.random.randint(0,self.output.height,self.input.height) self.initialize() def initializeFromNnf(self,nnf): @@ -30,8 +31,8 @@ class Nnf: for y in range(self.input.height): for x in range(self.input.width): self.field[y,x,2] = self.distance(x,y,self.field[y,x,0],self.field[y,x,1]) - iter=0 - maxIter =10 + iter= 0 + maxIter = 10 while (self.field[y,x,2] == MaskedImage.DSCALE and iter