Weitere Anpassungen für Tritanopie

Anders als bei den anderen Fehlsichtigkeiten ist ein Überlauf des Wertebereichs möglich. Somit werden Werte, die 255 überschreiten standardmäßig auf diesen Maximalwert gesetzt.
This commit is contained in:
Max Sponsel 2020-09-13 12:52:49 +02:00
parent 9b76b10e32
commit ff420dc77c
3 changed files with 12 additions and 6 deletions

View File

@ -77,7 +77,7 @@ S_t = np.array([[1, 0, 0], #Simulationsmatrix fuer Tritanopi
#Multiplikation der einzelnen Pixel
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])
cb_image[i,j] = T_reversed.dot(S_t).dot(T).dot(cb_image[i,j])
sim_image = np.copy(cb_image)
sim_image = sim_image.astype('uint8')

View File

@ -1,6 +1,7 @@
import numpy as np
import cv2
def gammaCorrection(v):
if v <= 0.04045 * 255:
return (v / 255) / 12.92
@ -12,6 +13,9 @@ def reverseGammaCorrection(v_reverse):
if abs(v_reverse) <= 0.0031308:
return round(255 * (12.92 * abs(v_reverse)))
elif abs(v_reverse) > 0.0031308:
if (round(255 * (1.055 * abs(v_reverse) ** 0.41666 - 0.055))) > 255:
return 255
else:
return round(255 * (1.055 * abs(v_reverse) ** 0.41666 - 0.055))
@ -19,7 +23,7 @@ class Dyschromasie:
cb_image = np.array([]).astype('float64')
sim_image = np.array([]).astype('uint8')
def __init__(self, img_mat=np.array([]), rows=0, cols=0, kanaele=0,sim_faktor=0, sim_kind='d'):
def __init__(self, img_mat=np.array([]), rows=0, cols=0, kanaele=0, sim_faktor=0, sim_kind='d'):
self.rows = rows
self.cols = cols
self.kanaele = kanaele
@ -57,10 +61,12 @@ class Dyschromasie:
for x in range(3):
self.cb_image[i, j, x] = gammaCorrection(self.img_mat[i, j, x])
rechen_Mat = np.copy(self.T_reversed.dot(sim_mat).dot(self.T))
print(rechen_Mat)
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = self.T_reversed.dot(sim_mat).dot(self.T).dot(self.cb_image[i, j])
self.cb_image[i, j] = rechen_Mat.dot(self.cb_image[i, j])
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -70,6 +76,6 @@ class Dyschromasie:
for x in range(3):
self.sim_image[i, j, x] = reverseGammaCorrection(self.cb_image[i, j, x])
print(self.img_mat[78, 86])
print(self.sim_image[78, 86])
return self.sim_image