Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Mon Mar 30 14:40:40 2020
  4.  
  5. @author: koray
  6. """
  7. import matplotlib.pyplot as plt
  8. from tkinter import *
  9. from PIL import Image
  10. from PIL import ImageTk
  11. from tkinter import filedialog
  12. import cv2
  13. import numpy as np
  14. from skimage.util import random_noise
  15. import random
  16. import pandas as pd
  17. from skimage.restoration import estimate_sigma
  18. from skimage.measure import compare_ssim, compare_mse, compare_psnr
  19. from scipy.stats import pearsonr
  20.  
  21. filename = "pies.jpg"
  22. org_obraz = cv2.imread(filename,cv2.IMREAD_GRAYSCALE)
  23. org_obraz_im_arr = np.asarray(org_obraz)
  24. counter = 3
  25. data_frame = pd.DataFrame(columns=["mwynik","sim","mse","psnr","szum"])
  26.  
  27. def generate_img():
  28. szum_img = random_noise(org_obraz_im_arr, mode="gaussian", var=random.uniform(0.02, 0.08)**2)
  29. szum_img = (255*szum_img).astype(np.uint8)
  30. return szum_img
  31.  
  32. def clicked(panel, mwynik):
  33. global counter
  34. global data_frame
  35. print(counter)
  36. if counter == 0:
  37. counter -= 1
  38. data_frame["mwynik"] = data_frame["mwynik"].shift(-1)
  39. data_frame = data_frame.iloc[:-1]
  40. data_frame.to_csv("dane.csv", mode="a", header=False)
  41. toplevel = Toplevel()
  42. label1 = Label(toplevel, text="Dziekuje", height=0, width=100)
  43. label1.pack()
  44. butt = Button(toplevel, text="zamknij", command=root.destroy)
  45. butt.pack()
  46. else:
  47. counter -= 1
  48. img2 = generate_img()
  49.  
  50. # #szum lvl
  51. szum= estimate_sigma(img2, multichannel=True, average_sigmas=True)
  52. # #sim
  53. (sim, diff) = compare_ssim(org_obraz_im_arr, img2, full=True)
  54. # #mse
  55. mse = compare_mse(org_obraz_im_arr, img2)
  56. psnr = compare_psnr(org_obraz_im_arr, img2)
  57.  
  58. data_frame = data_frame.append(pd.DataFrame([[mwynik, sim, mse, psnr, szum]],
  59. columns=["mwynik","sim","mse","psnr","szum"]), ignore_index=True)
  60. img2 = Image.fromarray(img2)
  61. img2 = ImageTk.PhotoImage(img2)
  62. panel.configure(image=img2)
  63. panel.image = img2
  64.  
  65. root = Tk()
  66. image = Image.fromarray(org_obraz_im_arr)
  67. image = ImageTk.PhotoImage(image)
  68. panel = Label(root, image = image)
  69.  
  70. label1 = Label(root, text="Ocen obrazek: 1-5 zle, bardzo dobrze", height=0, width=100)
  71. v = DoubleVar()
  72. scale = Scale(root, variable = v, from_ = 1, to = 5, orient = HORIZONTAL)
  73. next_button = Button(root, text="Dalej", command=lambda: clicked(panel, scale.get()))
  74. next_button.pack(side = "bottom", fill = "both", expand = "yes")
  75. scale.pack(side = "bottom", fill = "both", expand = "yes")
  76. label1.pack(side = "bottom", fill = "both", expand = "yes")
  77. panel.pack(side = "bottom", fill = "both", expand = "yes")
  78. root.mainloop()
  79.  
  80. data = pd.read_csv("dane.csv", header=None)
  81. data.columns = ["index", "mwynik","sim","mse","psnr","szum"]
  82.  
  83.  
  84. m, b = np.polyfit(data["mwynik"], data["sim"], 1)
  85. plt.plot(data["mwynik"], data["sim"], "o", data["mwynik"], m*data["mwynik"] + b)
  86.  
  87. m, b = np.polyfit(data["mwynik"], data["mse"], 1)
  88. plt.plot(data["mwynik"], data["mse"], "o", data["mwynik"], m*data["mwynik"] + b)
  89.  
  90. m, b = np.polyfit(data["mwynik"], data["psnr"], 1)
  91. plt.plot(data["mwynik"], data["psnr"], "o", data["mwynik"], m*data["mwynik"] + b)
  92.  
  93.  
  94. m, b = np.polyfit(data["mwynik"], data["szum"], 1)
  95. plt.plot(data["mwynik"], data["szum"], "o", data["mwynik"], m*data["mwynik"] + b)
  96.  
  97. data.plot(x="mwynik")
  98.  
  99. plt.matshow(data.corr())
  100. plt.xticks(range(len(data.columns)), data.columns)
  101. plt.yticks(range(len(data.columns)), data.columns)
  102. plt.colorbar()
  103. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement