Volevo provare a farmi una calibrazione colore in casa senza passare dallo spendere un centinaio di euro per le tavole colore (esempio quella di XRite)
Mi sono scaricato il pdf di questa immagine da Wikipedia
Per ogni mattonella sono riportati i valori rgb di riferimento
Ho poi fotografato con un IPhone una immagine ed ho messo a confronto i valori rgb di ogni mattonella della foto scattata con i valori rgb della tavola di riferimento
E' stato usato Gimp per selezionare un quadrato all'interno della mattonella colore e ed avere il valore RGB medio della selezione
Come si vede la relazione e' di tipo lineare ma e' ben lontana da y=x
Mi sono scritto questo semplice codice che trasforma i valori dei pixel
import cv2
import numpy as np
# Read the input image
image = cv2.imread('1.jpg') # Change to your image filename
if image is None:
raise FileNotFoundError("Image not found. Make sure the path is correct.")
# Convert image to float for accurate scaling
image_float = image.astype(np.float32)
# Split channels (OpenCV uses BGR format by default)
B, G, R = cv2.split(image_float)
# Apply scaling factors
R = (R * 1.047)-21.3
G = (G * 1.206)-27.3
B = (B * 1.23)-22.2
# Merge back the channels
result = cv2.merge((B, G, R))
# Clip values to valid range [0, 255] and convert back to uint8
result = np.clip(result, 0, 255).astype(np.uint8)
# Save the output image
cv2.imwrite('output1.jpg', result)
l'immagine corretta risulta essere questa
Come si osserva dal bianco della carta l'immagine corretta ha colori piu' fedeli alla realta'. Non dico che siamo a livello delle tavole di colore da 100 euro e dei software professionali ma e' decisamente un passo avanti
Nessun commento:
Posta un commento