Language

RGB image analysis.py

๐“›๐“พ๐“ฌ๐“ฎ๐“ฝ๐“ฎ_๐“ข๐“ฝ๐“ฎ๐“ต๐“ต๐“ช 2016. 12. 21.
728x90
๋ฐ˜์‘ํ˜•

  1. import numpy as np
  2. import mpl_toolkits.mplot3d.axes3d as p3
  3. import matplotlib.pyplot as plt
  4. import colorsys
  5. from PIL import Image
  6.  
  7. # (1) Import the file to be analyzed!
  8. img_file = Image.open("sunset.jpg")
  9. img = img_file.load()
  10.  
  11. # (2) Get image width & height in pixels
  12. [xs, ys] = img_file.size
  13. max_intensity = 100
  14. hues = {}
  15.  
  16. # (3) Examine each pixel in the image file
  17. for x in xrange(0, xs):
  18.   for y in xrange(0, ys):
  19.     # (4)  Get the RGB color of the pixel
  20.     [r, g, b] = img[x, y]
  21.  
  22.     # (5)  Normalize pixel color values
  23.     r /= 255.0
  24.     g /= 255.0
  25.     b /= 255.0
  26.  
  27.     # (6)  Convert RGB color to HSV
  28.     [h, s, v] = colorsys.rgb_to_hsv(r, g, b)
  29.  
  30.     # (7)  Marginalize s; count how many pixels have matching (h, v)
  31.     if h not in hues:
  32.       hues[h] = {}
  33.     if v not in hues[h]:
  34.       hues[h][v] = 1
  35.     else:
  36.       if hues[h][v] < max_intensity:
  37.         hues[h][v] += 1
  38.  
  39. # (8)   Decompose the hues object into a set of one dimensional arrays we can use with matplotlib
  40. h_ = []
  41. v_ = []
  42. = []
  43. colours = []
  44.  
  45. for h in hues:
  46.   for v in hues[h]:
  47.     h_.append(h)
  48.     v_.append(v)
  49.     i.append(hues[h][v])
  50.     [r, g, b] = colorsys.hsv_to_rgb(h, 1, v)
  51.     colours.append([r, g, b])
  52.  
  53. # (9)   Plot the graph!
  54. fig = plt.figure()
  55. ax = p3.Axes3D(fig)
  56. ax.scatter(h_, v_, i, s=5, c=colours, lw=0)
  57.  
  58. ax.set_xlabel('Hue')
  59. ax.set_ylabel('Value')
  60. ax.set_zlabel('Intensity')
  61. fig.add_axes(ax)
  62. plt.show()


728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€