Compare commits

...

3 Commits

Author SHA1 Message Date
Max Sponsel
f1348cfef2 Einfügen eines Sliders
Um den Grad der Faarbblindheit korrekt zu Simulieren, muss ein Widget eingebaut werden, welches den prozentualen Anteil der Differenz zwischen Simulation und echtem Wert vergleicht und mit dem ausgewählten Wert (z. B. 80%) neu gewichtet.
2020-08-25 09:40:16 +02:00
Max Sponsel
d1cd073fde Merge remote-tracking branch 'origin/master' 2020-08-21 11:23:26 +02:00
Max Sponsel
8c4760c75d Kommentar entfernt 2020-08-15 09:18:51 +02:00
2 changed files with 21 additions and 15 deletions

View File

@ -53,7 +53,8 @@ class Protanopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -83,7 +84,8 @@ class Deuteranopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -112,7 +114,8 @@ class Tritanopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -124,6 +127,7 @@ class Tritanopie(Dyschromasie):
self.sim_image[i, j, x] = self.reverseGammaCorrection(self.cb_image[i, j, x])
return self.sim_image
root = tk.Tk()
root.title("Projekt Dyschromasie")
@ -132,9 +136,13 @@ rows = 0
cols = 0
kanaele = 0
sim_pro = tk.IntVar(root)
sim_deut = tk.IntVar(root)
sim_tri = tk.IntVar(root)
sim_pro = tk.IntVar(root)
sim_deut = tk.IntVar(root)
sim_tri = tk.IntVar(root)
simGrad = tk.IntVar(root)
simulationsGradient = tk.Scale(root, from_=0, to_=100, variable=simGrad, orient='horizontal')
simulationsGradient.grid(column= 0, row = 1, columnspan=10)
def browse():
# Auswahl des FilePaths
@ -166,9 +174,9 @@ def simulate():
d = Deuteranopie(img, rows, cols, kanaele)
display_array_deut = cv2.cvtColor(np.copy(d.Simulate()), cv2.COLOR_BGR2RGB)
T = tk.Text(root,height=1,width=15)
T = tk.Text(root, height=1, width=15)
T.grid(columnspan=5)
T.insert('current',"Deutranopie:")
T.insert('current', "Deutranopie:")
conv_SimulationPic_deut = ImageTk.PhotoImage(image=PIL.Image.fromarray(display_array_deut))
sim_pic_deut = tk.Label(root, image=conv_SimulationPic_deut)
@ -200,20 +208,19 @@ def simulate():
sim_pic_pro.grid(columnspan=5)
btn = tk.Button(root, text="Browse", width=25, command=browse, bg='light blue')
btn.grid(column = 0, row = 0,columnspan=2)
btn.grid(column=0, row=0, columnspan=2)
simulateButton = tk.Button(root, text="Simulate", width=25, command=simulate, bg='light blue')
simulateButton.grid(column = 1, row = 0,columnspan=2)
simulateButton.grid(column=1, row=0, columnspan=2)
simulateButton.config(state='disabled')
checkButton_p = tk.Checkbutton(root, text="Protanop", variable=sim_pro, onvalue=1, offvalue=0, height=5, width=20)
checkButton_d = tk.Checkbutton(root, text="Deutanop", variable=sim_deut, onvalue=1, offvalue=0, height=5, width=20)
checkButton_t = tk.Checkbutton(root, text="Tritanop", variable=sim_tri, onvalue=1, offvalue=0, height=5, width=20)
checkButton_p.grid(column = 0, row = 1)
checkButton_d.grid(column = 1, row = 1)
checkButton_t.grid(column = 2, row = 1)
checkButton_p.grid(column=0, row=2)
checkButton_d.grid(column=1, row=2)
checkButton_t.grid(column=2, row=2)
root.mainloop()

View File

@ -78,7 +78,6 @@ S_t = np.array([[1, 0, 0], #Simulationsmatrix fuer Tritanopi
for i in range(rows):
for j in range(cols):
cb_image[i,j] = T_reversed.dot(S_p).dot(T).dot(cb_image[i,j])
# Da OpenCV Pixelwerte in RGB speichert, aber BGR für den Algorithmus nötig ist, muss die Matrix mit flipud gedreht werden
sim_image = np.copy(cb_image)
sim_image = sim_image.astype('uint8')