From d5252ea2be8ea8c2352345836d577d65d33ace69 Mon Sep 17 00:00:00 2001 From: Max Sponsel Date: Sat, 12 Sep 2020 11:52:40 +0200 Subject: [PATCH] Weiter CodeCleanup --- Code/Dyschromasie-Applikation.py | 59 +---------------- Code/Farbaenderung.py | 60 +++++++++++++++++- Code/__pycache__/Farbaenderung.cpython-38.pyc | Bin 646 -> 2318 bytes 3 files changed, 60 insertions(+), 59 deletions(-) diff --git a/Code/Dyschromasie-Applikation.py b/Code/Dyschromasie-Applikation.py index baa7cb6..908d408 100644 --- a/Code/Dyschromasie-Applikation.py +++ b/Code/Dyschromasie-Applikation.py @@ -4,69 +4,12 @@ import tkinter as tk from tkinter import filedialog, messagebox import cv2 import numpy as np -from Farbaenderung import gammaCorrection, reverseGammaCorrection +from Farbaenderung import gammaCorrection, reverseGammaCorrection, Dyschromasie from Scrollbar import ScrollFrame root = tk.Tk() simGrad = tk.IntVar(root) -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'): - self.rows = rows - self.cols = cols - self.kanaele = kanaele - self.img_mat = img_mat - self.sim_faktor = sim_faktor - self.sim_kind = sim_kind - - T = np.array([[0.31399022, 0.63951294, 0.04649755], - [0.15537241, 0.75789446, 0.08670142], - [0.01775239, 0.10944209, 0.87256922]]) - - T_reversed = np.array([[5.47221206, -4.6419601, 0.16963708], - [-1.1252419, 2.29317094, -0.1678952], - [0.02980165, -0.19318073, 1.16364789]]) - - def Simulate(self): - if self.sim_kind == 'p': - sim_mat = np.array([[(1 - self.sim_faktor), 1.05118294 * self.sim_faktor, -0.05116099 * self.sim_faktor], - [0, 1, 0], - [0, 0, 1]]) - elif self.sim_kind == 'd': - sim_mat = np.array([[1, 0, 0], - [0.9513092 * self.sim_faktor, (1 - self.sim_faktor), 0.04866992 * self.sim_faktor], - [0, 0, 1]]) - else: - sim_mat = np.array([[1, 0, 0], - [0, 1, 0], - [-0.86744736 * self.sim_faktor, 1.86727089 * self.sim_faktor, (1 - self.sim_faktor)]]) - - # Gammakorrektur durchfuehren - self.cb_image = np.copy(self.img_mat).astype('float64') - - for i in range(self.rows): - for j in range(self.cols): - for x in range(3): - self.cb_image[i, j, x] = gammaCorrection(self.img_mat[i, j, x]) - - # 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.sim_image = np.copy(self.cb_image) - self.sim_image = self.sim_image.astype('uint8') - # Rücktransformation der Gammawerte - for i in range(self.rows): - for j in range(self.cols): - for x in range(3): - self.sim_image[i, j, x] = reverseGammaCorrection(self.cb_image[i, j, x]) - - return self.sim_image - root.title("Projekt Dyschromasie") SB = ScrollFrame(root) diff --git a/Code/Farbaenderung.py b/Code/Farbaenderung.py index e13f593..6115f0c 100644 --- a/Code/Farbaenderung.py +++ b/Code/Farbaenderung.py @@ -1,3 +1,6 @@ +import numpy as np +import cv2 + def gammaCorrection(v): if v <= 0.04045 * 255: return (v / 255) / 12.92 @@ -12,6 +15,61 @@ def reverseGammaCorrection(v_reverse): return round(255 * (1.055 * v_reverse ** 0.41666 - 0.055)) - +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'): + self.rows = rows + self.cols = cols + self.kanaele = kanaele + self.img_mat = img_mat + self.sim_faktor = sim_faktor + self.sim_kind = sim_kind + + T = np.array([[0.31399022, 0.63951294, 0.04649755], + [0.15537241, 0.75789446, 0.08670142], + [0.01775239, 0.10944209, 0.87256922]]) + + T_reversed = np.array([[5.47221206, -4.6419601, 0.16963708], + [-1.1252419, 2.29317094, -0.1678952], + [0.02980165, -0.19318073, 1.16364789]]) + + def Simulate(self): + if self.sim_kind == 'p': + sim_mat = np.array([[(1 - self.sim_faktor), 1.05118294 * self.sim_faktor, -0.05116099 * self.sim_faktor], + [0, 1, 0], + [0, 0, 1]]) + elif self.sim_kind == 'd': + sim_mat = np.array([[1, 0, 0], + [0.9513092 * self.sim_faktor, (1 - self.sim_faktor), 0.04866992 * self.sim_faktor], + [0, 0, 1]]) + else: + sim_mat = np.array([[1, 0, 0], + [0, 1, 0], + [-0.86744736 * self.sim_faktor, 1.86727089 * self.sim_faktor, (1 - self.sim_faktor)]]) + + # Gammakorrektur durchfuehren + self.cb_image = np.copy(self.img_mat).astype('float64') + + for i in range(self.rows): + for j in range(self.cols): + for x in range(3): + self.cb_image[i, j, x] = gammaCorrection(self.img_mat[i, j, x]) + + # 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.sim_image = np.copy(self.cb_image) + self.sim_image = self.sim_image.astype('uint8') + # Rücktransformation der Gammawerte + for i in range(self.rows): + for j in range(self.cols): + for x in range(3): + self.sim_image[i, j, x] = reverseGammaCorrection(self.cb_image[i, j, x]) + + return self.sim_image diff --git a/Code/__pycache__/Farbaenderung.cpython-38.pyc b/Code/__pycache__/Farbaenderung.cpython-38.pyc index e87c0da68c9f0cdb3baf313fe4d6ad3c858cb32b..5b3ec02fdf065311a0da634399bc3bf1b4b9ed44 100644 GIT binary patch literal 2318 zcmZuyeP|R%6yMp8+s)QdGez)_|&8 zB^Nj z+a&8nQzD;BVZ_i74S>9W`}v-Yv0a`+y;#~l5ZjS)dZ|0)#CjcXz|ZDlJNBj5^!s`2 z=F_qM0qW*_C)U;8@1z~icWCTInoT+bzD@T!u3zG;-eE7kk7m=h=Q^>TEOugBK*Dx1 z*rE9hY0nL_8e*r@c2Aa4C+@r1jLKbM07%F{A?UOM#*cYTgGu4FZWt83*5rfNuu_of z;X4987xOCJAm&xzv^rS9fu`bm$$QP;zUEyx>6((qS5$VC zF_lQ;Xbj?L97O|VybQcv;;~Zv)IVccQgJ5$|IT~ z9OpMFH9meA<*R`y$OXxg3h+`ED!{u~asdG<1r1Ow1OPShHmENgU@Fb-_m~>braYz( z*csbNIZSuc#7f&f3wmzaO4tyilo@O!b^pg4V%qw3fpn4vRU|b72#a0_Kth3s-@%6Ri?^3#Nv`llHraH=B!4A#U7Z^G(0@0#Rj%PSu^>JKKF`ReAj#+x@x z(tUmA*qc)g5psWboCx5`aUMIm&v&Ref_kMr&yC1}3kt4dMDYzA662L4s$a=9Ap(_x znoyddP5`f$_-<+N=HRu#pUbRmSzxVmgnK45R#kvp1eB81MJjA0&#a5n)__C}oV{wEE8A_`g5A2x&fW%RuPs?FJA2Kev%@~8pdW{RjPC&XTHVJ` zZiZ(iX+Qqk`jbDwKcK7j!rhDOPEUwrr8Ru5dHavED+X_w0d1ZPBXtcFo|k;ow?XL3xlDYb`1V(~o94U4>E0o(J3a}G1&do4F@ z69)>Yogq$HLh{lpK0D`9JG4WFw85kaeILLqr$Z-JTVi6#b!jQt)!Vtxf!j!@cq#09K zf*CYfCua1su>xg_SSSAN76ux^P|N`&7#KMid4RZxWAbdqEJ=`f5y-S679f#c?U}r# zZ`CdPBIe0*Oj1P<{UBL(AaP5qD77rLs5sR