lab9_original.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from PIL import Image
  2. import numpy as np
  3. from PIL import ImageChops, ImageOps, ImageShow
  4. from PIL import ImageStat as stat
  5. import matplotlib.pyplot as plt
  6. def statystyki(im):
  7. s = stat.Stat(im)
  8. print("extrema ", s.extrema) # max i min
  9. print("count ", s.count) # zlicza
  10. print("mean ", s.mean) # srednia
  11. print("median ", s.median) # mediana
  12. print("stddev ", s.stddev) # odchylenie standardowe
  13. # input()
  14. #************************************************************************************************************
  15. im = Image.open('brain.png')
  16. print(im.mode)
  17. statystyki(im)
  18. plt.title("brain oryginalny ")
  19. plt.axis('off')
  20. plt.imshow(im, 'gray')
  21. plt.show()
  22. szary = im.convert("L")
  23. statystyki(szary)
  24. #print(szary.histogram())
  25. im_equalized1 = ImageOps.equalize(szary, mask=None) # https://pillow.readthedocs.io/en/stable/reference/ImageOps.html
  26. plt.title("brain wyrównany ")
  27. plt.axis('off')
  28. plt.imshow(im_equalized1, 'gray')
  29. plt.show()
  30. statystyki(im_equalized1)
  31. #________________________________________________________________
  32. im = Image.open('mgla.jpg') # obraz kolorowy
  33. im.show()
  34. statystyki(im)
  35. hist = im.histogram()
  36. plt.title("histogram - mgła ")
  37. plt.bar(range(256), hist[:256], color='r', alpha=0.5)
  38. plt.bar(range(256), hist[256:2 * 256], color='g', alpha=0.4)
  39. plt.bar(range(256), hist[2 * 256:], color='b', alpha=0.3)
  40. plt.show()
  41. r, g, b = im.split()
  42. # wyrównanie każdego kanału oddzielnie
  43. r_eq = ImageOps.equalize(r)
  44. g_eq = ImageOps.equalize(g)
  45. b_eq = ImageOps.equalize(b)
  46. im1 = Image.merge('RGB', (r_eq, g_eq, b_eq))
  47. im1.show()
  48. # wyrównaie obrazu RGB
  49. im_equalized1 = ImageOps.equalize(im, mask=None)
  50. im_equalized1.show()
  51. # konwersja na szary i wyrównanie
  52. im3 = im.convert("L")
  53. im3_eq = ImageOps.equalize(im3)
  54. im3_eq.show()