diff --git a/code/Noise.py b/code/Noise.py index 0296ee7..755d5b3 100644 --- a/code/Noise.py +++ b/code/Noise.py @@ -2,34 +2,50 @@ class Noise: - def getShape( x, y, map, pixelList ): # return PixelList - width = len( map[0] ) - height = len( map ) + def getShape(self, coords, pixelMap, pixelList ): # return PixelList + # coords = [lastx, lasty, x, y] + width = len( pixelMap[0] ) + height = len( pixelMap ) + + lastx = coords[0] + lasty = coords[1] + x = coords[2] + y = coords[3] + + newCoords = [x, y] - # si le pixel existe (pas de dépassement de la map) - if x < width and y < height: + # si le pixel existe (pas de dépassement de la pixelMap) + if x=0 and y=0: already = False; for i in range(0, len(pixelList)): - if pixelList[i] == map[y][x]: + if pixelList[i] == pixelMap[y][x]: already = True; break # si le pixel n'est pas déjà dans le tableau if not already: - - pixelList.append( map[y][x] ) # ajout au tableau - getShape(x-1, y+1, map, pixelList) # 1 - getShape(x, y+1, map, pixelList) # 2 - getShape(x+1, y+1, map, pixelList) # 3 + # si trop de différence + lastP = pixelMap[lasty][lastx] + pix = pixelMap[y][x] - getShape(x-1, y, map, pixelList) # 4 - # current pixel - getShape(x+1, y, map, pixelList) # 6 - getShape(x-1, y-1, map, pixelList) # 7 - getShape(x, y-1, map, pixelList) # 8 - getShape(x+1, y-1, map, pixelList) # 9 + + if abs(lastP.r-pix.r) <= 50 and abs(lastP.g-pix.g) <= 50 and abs(lastP.b-pix.b) <= 50: + + pixelList.append( pixelMap[y][x] ) # ajout au tableau + + self.getShape( [x, y, x-1, y+1], pixelMap, pixelList) # 1 + self.getShape( [x, y, x, y+1], pixelMap, pixelList) # 2 + self.getShape( [x, y, x+1, y+1], pixelMap, pixelList) # 3 + + self.getShape( [x, y, x-1, y ], pixelMap, pixelList) # 4 + # current pixel + self.getShape( [x, y, x+1, y ], pixelMap, pixelList) # 6 + + self.getShape( [x, y, x-1, y-1], pixelMap, pixelList) # 7 + self.getShape( [x, y, x, y-1], pixelMap, pixelList) # 8 + self.getShape( [x, y, x+1, y-1], pixelMap, pixelList) # 9 \ No newline at end of file diff --git a/code/Noise.readme b/code/Noise.readme index 1f8b893..dcd47f2 100644 --- a/code/Noise.readme +++ b/code/Noise.readme @@ -27,34 +27,43 @@ Ajouter les 8 bits périphériques du pixel courant s'il existe et s'il a des co /************ ALGO **************/ /************ CODE **************/ -def getShape( x, y, map, pixelList): # return PixelList - width = len( map[0] ) - height = len( map ) +def getShape(self, coords, pixelMap, pixelList ): # return PixelList + # coords = [lastx, lasty, x, y] + width = len( pixelMap[0] ) + height = len( pixelMap ) + + lastx = coords[0] + lasty = coords[1] + x = coords[2] + y = coords[3] + + newCoords = [x, y] - # si le pixel existe (pas de dépassement de la map) - if x < width and y < height: + # si le pixel existe (pas de dépassement de la pixelMap) + if x=0 and y=0: already = False; for i in range(0, len(pixelList)): - if pixelList[i] == map[y][x]: + if pixelList[i] == pixelMap[y][x]: already = True; break # si le pixel n'est pas déjà dans le tableau if not already: - pixelList.append( map[y][x] ) # ajout au tableau + pixelMap[y][x].setRGB(255,0,0); # debug, tout rouge - getShape(x-1, y+1, map, pixelList) # 1 - getShape(x, y+1, map, pixelList) # 2 - getShape(x+1, y+1, map, pixelList) # 3 + pixelList.append( pixelMap[y][x] ) # ajout au tableau - getShape(x-1, y, map, pixelList) # 4 + self.getShape(newCoords+[x-1, y+1], pixelMap, pixelList) # 1 + self.getShape(newCoords+[x, y+1], pixelMap, pixelList) # 2 + self.getShape(newCoords+[x+1, y+1], pixelMap, pixelList) # 3 + + self.getShape(newCoords+[x-1, y], pixelMap, pixelList) # 4 # current pixel - getShape(x+1, y, map, pixelList) # 6 + self.getShape(newCoords+[x+1, y], pixelMap, pixelList) # 6 - getShape(x-1, y-1, map, pixelList) # 7 - getShape(x, y-1, map, pixelList) # 8 - getShape(x+1, y-1, map, pixelList) # 9 - \ No newline at end of file + self.getShape(newCoords+[x-1, y-1], pixelMap, pixelList) # 7 + self.getShape(newCoords+[x, y-1], pixelMap, pixelList) # 8 + self.getShape(newCoords+[x+1, y-1], pixelMap, pixelList) # 9 \ No newline at end of file diff --git a/code/bmp.py b/code/bmp.py index 16f128d..7c3b4a3 100644 --- a/code/bmp.py +++ b/code/bmp.py @@ -30,17 +30,45 @@ def testFileIntegrity(): # Parsing img.parse( binFile ); - inct = 50; # incertitude + # détection des formes + noise = Noise(); + + pixelsDone = [] + for y in range(0,len(img.content.map)): + for x in range(0, len(img.content.map[0])): + # on traite si on a pas déjà + already = False + for i in pixelsDone: + if i == img.content.map[y][x]: + already = True + break + + + if not already: + pixelList = [] + + randomRGB = [random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] + + noise.getShape([x, y, x, y], img.content.map, pixelList) + + for pixel in pixelList: + pixel.setRGB(randomRGB[0], randomRGB[1], randomRGB[2]); + + pixelsDone = pixelsDone + pixelList; + + + + #inct = 50; # incertitude # MODIFICATIONS des pixels - for line in img.content.map: - for pixel in line: - pixel.setRGB( - (230-25) + (2*25*pixel.r/256), # 230 ± 25 - (170-inct) + (2*inct*pixel.g/256), # 170 ± 50 - (100-inct) + (2*inct*pixel.b/256), # 100 ± 50 - bpp=24 - ) + #for line in img.content.map: + # for pixel in line: + # pixel.setRGB( + # (230-25) + (2*25*pixel.r/256), # 230 ± 25 + # (170-inct) + (2*inct*pixel.g/256), # 170 ± 50 + # (100-inct) + (2*inct*pixel.b/256), # 100 ± 50 + # bpp=24 + # ) # Unparsing diff --git a/code/images/minishapes_24.bmp b/code/images/minishapes_24.bmp new file mode 100644 index 0000000..606005d Binary files /dev/null and b/code/images/minishapes_24.bmp differ diff --git a/code/new.bmp b/code/new.bmp index 9176656..2891664 100644 Binary files a/code/new.bmp and b/code/new.bmp differ