POGclusterPalette.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. # import
  2. # ------------------------------------------------------------------------------------------
  3. import os, sys
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. import scipy.stats
  7. import multiprocessing as mp
  8. import easygui
  9. import imageio
  10. # miam import
  11. import miam.image.Image as MIMG
  12. import miam.image.imageType as MTYPE
  13. import miam.image.channel as MCHN
  14. import miam.processing.ColorSpaceTransform as MCST
  15. import miam.processing.TMO_Lightness as TMO_L
  16. import miam.processing.ContrastControl as PCC
  17. import miam.histogram.Histogram as MHIST
  18. import miam.aesthetics.LightnessAesthetics as MLAC
  19. import miam.aesthetics.Palette as MPAL
  20. import miam.imageDB.ImageDB
  21. import miam.imageDB.POGChecker
  22. import miam.imageDB.HwHDRBuilder
  23. import miam.html.generator
  24. import miam.utils
  25. import miam.pointcloud.PointCloud2D
  26. # ------------------------------------------------------------------------------------------
  27. # MIAM project 2020
  28. # ------------------------------------------------------------------------------------------
  29. # author: remi.cozot@univ-littoral.fr
  30. # ------------------------------------------------------------------------------------------
  31. def pCompPalette3(filename):
  32. # cut filename
  33. path, name, ext = miam.utils.splitFileName(filename)
  34. # read image
  35. img = MIMG.Image.read(filename,exif=False)
  36. # compute palette
  37. nbColors = 3
  38. palette = MPAL.Palette.build(img, nbColors, fast=True, method='kmean-Lab',removeBlack=True)
  39. # get colors
  40. colors = palette.colors
  41. #print("█",end='')
  42. print("3.",end='')
  43. sys.stdout.flush()
  44. return colors
  45. def pCompPalette2(filename):
  46. # cut filename
  47. path, name, ext = miam.utils.splitFileName(filename)
  48. # read image
  49. img = MIMG.Image.read(filename,exif=False)
  50. # compute palette
  51. nbColors = 2
  52. palette = MPAL.Palette.build(img, nbColors, fast=True, method='kmean-Lab',removeBlack=True)
  53. # get colors
  54. colors = palette.colors
  55. #print("█",end='')
  56. print("2.",end='')
  57. sys.stdout.flush()
  58. return colors
  59. if __name__ == '__main__':
  60. print("MIAM[POG Cluster Palette]")
  61. # ------------------------------------------------------------------------------------------
  62. # what to do !
  63. # ------------------------------------------------------------------------------------------
  64. # config: configfile
  65. jsonfile = "../DB/config_POG_DB.json"
  66. # all palettes file
  67. allPalettes_2colorsNoBlack = "../DB/POG_DB_Lab_kmeans_Palette_2colorsNoBlack.npy"
  68. allPalettes_3colorsNoBlack = "../DB/POG_DB_Lab_kmeans_Palette_3colorsNoBlack.npy"
  69. allPalettes_4colorsNoBlack = "../DB/POG_DB_Lab_kmeans_Palette_4colorsNoBlack.npy"
  70. allPalettes_5colorsNoBlack = "../DB/POG_DB_Lab_kmeans_Palette_5colorsNoBlack.npy"
  71. # ------------------------------------------------------------------------------------------
  72. # pog
  73. pogDB = miam.imageDB.ImageDB.ImageDB(jsonConfigFile ="../DB/config_POG_DB.json")
  74. pogDB.check(miam.imageDB.POGChecker.POGChecker(local=True))
  75. print("MIAM[",pogDB.name,":(csvFileName:: ",pogDB.csvFileName,", imagePATH::",pogDB.imagePATH,")]")
  76. # POG: compute Lightness Histograms
  77. # ------------------------------------------------------------------------------------------
  78. if not os.path.isfile(allPalettes_3colorsNoBlack):
  79. print("MIAM[",pogDB.name," palette 3 colors not found !]")
  80. nbCpu = mp.cpu_count()
  81. print("MIAM[", nbCpu, "cpu cores]")
  82. print("MIAM[",pogDB.name," number of images:",len(pogDB.db),"]")
  83. print("MIAM[",pogDB.name," launch parallel computation of palettes (3) !]")
  84. _pool = mp.Pool()
  85. result = _pool.map(pCompPalette3, pogDB.db)
  86. allColors = np.asarray(result)
  87. print("")
  88. print("[ ---------------------------------------------------------- ]")
  89. print("MIAM[",pogDB.name," parallel computation of palettes (3) done !]")
  90. print("MIAM[",pogDB.name," all palettes (3):",allColors.shape," ]")
  91. np.save(allPalettes_3colorsNoBlack,allColors)
  92. print("MIAM[",pogDB.name," all palettes saved !]")
  93. else:
  94. print("")
  95. print("[ --------------------------------------------------------]")
  96. print("MIAM[",pogDB.name," color palettes (3) found !]")
  97. if not os.path.isfile(allPalettes_2colorsNoBlack):
  98. print("MIAM[",pogDB.name," palette 2 colors not found !]")
  99. nbCpu = mp.cpu_count()
  100. print("MIAM[", nbCpu, "cpu cores]")
  101. print("MIAM[",pogDB.name," number of images:",len(pogDB.db),"]")
  102. print("MIAM[",pogDB.name," launch parallel computation of palettes (2) !]")
  103. _pool = mp.Pool()
  104. result = _pool.map(pCompPalette2, pogDB.db)
  105. allColors = np.asarray(result)
  106. print("")
  107. print("[ ---------------------------------------------------------- ]")
  108. print("MIAM[",pogDB.name," parallel computation of palettes (2) done !]")
  109. print("MIAM[",pogDB.name," all palettes (2):",allColors.shape," ]")
  110. np.save(allPalettes_2colorsNoBlack,allColors)
  111. print("MIAM[",pogDB.name," all palettes saved !]")
  112. else:
  113. print("")
  114. print("[ --------------------------------------------------------]")
  115. print("MIAM[",pogDB.name," color palettes (2) found !]")