Пример #1
0
def contrasteExtension(pix,largeur,hauteur):
  """etend l'histogramme de facon a ce que les couleurs aillent de
     0 a 255
  """
  milieu=127

  histoOldRGB=createHistogrammeRGB(pix,largeur,hauteur)
  imHistoOldRGB=createImageHistogrammeRGB(histoOldRGB)
  imHistoOldRGB.show()

  imin=minIntensite(histoOldRGB[0])
  imax=maxIntensite(histoOldRGB[0])
  for y in range(hauteur):
    for x in range(largeur):
      old=pix[x,y][0]
      rapport=(old-imin)/(imax-imin)
      new=rapport*255
      new=max(0,min(round(new),255))
      pix[x,y]=(new,pix[x,y][1],pix[x,y][2])

  imin=minIntensite(histoOldRGB[1])
  imax=maxIntensite(histoOldRGB[1])
  for y in range(hauteur):
    for x in range(largeur):
      old=pix[x,y][1]
      rapport=(old-imin)/(imax-imin)
      new=rapport*255
      new=max(0,min(round(new),255))
      pix[x,y]=(pix[x,y][0],new,pix[x,y][2])

  imin=minIntensite(histoOldRGB[2])
  imax=maxIntensite(histoOldRGB[2])
  for y in range(hauteur):
    for x in range(largeur):
      old=pix[x,y][2]
      rapport=(old-imin)/(imax-imin)
      new=rapport*255
      new=max(0,min(round(new),255))
      pix[x,y]=(pix[x,y][0],pix[x,y][1],new)


  histoNewRGB=createHistogrammeRGB(pix,largeur,hauteur)
  imHistoNewRGB=createImageHistogrammeRGB(histoNewRGB)
  imHistoNewRGB.show()
Пример #2
0
def quantification(pix,largeur,hauteur,nb):

  histo=createHistogrammeRGB(pix,width,heigth)
  b=255//nb
 
  l=[i for i in range(256)]
  i=0
  while i<len(l):
    couleur=l[i]
    for j in range(i,i+b):
      if j>=len(l):break
      l[j]=couleur
    i+=b
    
  for y in range(hauteur):
    for x in range(largeur):
      pix[x,y]=(l[pix[x,y][0]],l[pix[x,y][1]],l[pix[x,y][2]])
Пример #3
0
def contrasteEtirement(pix,largeur,hauteur):
  """etire et applati l'histogramme"""
  
  histoOld=createHistogrammeRGB(pix,largeur,hauteur)
  #-----------------------------------------------------------
  #RED
  #histogramme cumule
  histoCumu=[0 for i in range(256)]
  histoCumu[0]=histoOld[0][1]
  for i in range(1,len(histoOld[0])):
    histoCumu[i]=histoCumu[i-1]+histoOld[0][i]
##  imHistoCumu=createImageHistogramme(histoCumu)
##  imHistoCumu.show()

  for y in range(hauteur):
    for x in range(largeur):
      p=round((histoCumu[pix[x,y][0]]*255)/(largeur*hauteur))
      pix[x,y]=(p,pix[x,y][1],pix[x,y][2])
  #-----------------------------------------------------------
  #GREEN
  #histogramme cumule
  histoCumu=[0 for i in range(256)]
  histoCumu[0]=histoOld[1][1]
  for i in range(1,len(histoOld[1])):
    histoCumu[i]=histoCumu[i-1]+histoOld[1][i]
##  imHistoCumu=createImageHistogramme(histoCumu)
##  imHistoCumu.show()

  for y in range(hauteur):
    for x in range(largeur):
      p=round((histoCumu[pix[x,y][1]]*255)/(largeur*hauteur))
      pix[x,y]=(pix[x,y][0],p,pix[x,y][2])
  #-----------------------------------------------------------
  #BLUE
  #histogramme cumule
  histoCumu=[0 for i in range(256)]
  histoCumu[0]=histoOld[2][1]
  for i in range(1,len(histoOld[2])):
    histoCumu[i]=histoCumu[i-1]+histoOld[2][i]
##  imHistoCumu=createImageHistogramme(histoCumu)
##  imHistoCumu.show()

  for y in range(hauteur):
    for x in range(largeur):
      p=round((histoCumu[pix[x,y][2]]*255)/(largeur*hauteur))
      pix[x,y]=(pix[x,y][0],pix[x,y][1],p)
Пример #4
0
      if j>=len(l):break
      l[j]=couleur
    i+=b
    
  for y in range(hauteur):
    for x in range(largeur):
      pix[x,y]=(l[pix[x,y][0]],l[pix[x,y][1]],l[pix[x,y][2]])
#=============================================================== 
if __name__=="__main__":

  im=Image.open("dandelion.jpg")
  print(im.format, im.size, im.mode)
  #im=im.convert("L")
  pix=im.load()
  width=im.size[0]
  heigth=im.size[1]

  histo=createHistogrammeRGB(pix,width,heigth)
  im_histo=createImageHistogrammeRGB(histo)
  im.show()
  im_histo.show()

  for nb in (64,32,16,8,4,2):
    quantification(pix,width,heigth,nb)

    histo=createHistogrammeRGB(pix,width,heigth)
    im_histo=createImageHistogrammeRGB(histo)

    im.save("dandelion-NB=%d.jpg"%nb)
    im_histo.save("histoDandelion-NB=%d.jpg"%nb)
Пример #5
0
##  imHistoCumu.show()

  for y in range(hauteur):
    for x in range(largeur):
      p=round((histoCumu[pix[x,y][2]]*255)/(largeur*hauteur))
      pix[x,y]=(pix[x,y][0],pix[x,y][1],p)


#========================================================================
if __name__=="__main__":

  im=Image.open("oiseau.jpg")
  pix=im.load()
  width=im.size[0]
  heigth=im.size[1]

  histoOld=createHistogrammeRGB(pix,width,heigth)
  imHistoOld=createImageHistogrammeRGB(histoOld)
  imHistoOld.save("histoOiseau.jpg")
##  imHistoOld.show()
##  im.show()
  
  contrasteEtirement(pix,width,heigth)

  histoNew=createHistogrammeRGB(pix,width,heigth)
  imHistoNew=createImageHistogrammeRGB(histoNew)
  imHistoNew.save("histoOiseau-contrasteEtirement.jpg")
  im.save("oiseau-contrasteEtirement.jpg")
##  imHistoNew.show()
##  im.show()