Qualità dell'immagine diversa dall'acquisizione di fotocamere all'array e al percorso intorpiditi


8

La qualità di acquisizione da Pi Camera varia quando viene catturata nell'array numpy e quando viene catturata direttamente in un percorso. Il primo ha una tonalità più rosata rispetto al successivo.

Perché.?
Il codice che ho usato per catturare le immagini:

from picamera import PiCamera
import cv2
import time

camera = PiCamera()
camera.resolution = (1280, 720)
img = np.empty((720, 1280, 3), dtype=np.uint8)

start = time.time()
camera.capture(img, "bgr")
print("Trigger time: " + str(time.time() - start))
cv2.imwrite("array_capture.png", img)

start = time.time()
camera.capture("normal_capture.png")
print("Trigger time: " + str(time.time() - start))

Il tempo impiegato per catturare l'immagine nell'array intorpidito è la metà di quello della cattura diretta del percorso. Quindi, è legato al de-noise dell'immagine?

Immagine catturata nell'array numpy: 0,71 sec Immagine catturata in un percorso: 1,52 secImmagine catturata nell'array intorpidito

Immagine catturata in un percorso


Inserisci il tempo di attivazione per numpy dopo la scrittura. Quindi puoi davvero confrontare. Sono curioso
jaromrax,

@jaromrax In questo modo aumenta il tempo di attivazione a circa 0,925 secondi. Ma è ancora meno di quello per l'acquisizione del percorso.
harshatech2012,

Potrebbe essere un problema di compressione? Ad esempio, forse cv2 non usa il filtro ma Picamera lo fa. Quali sono le dimensioni dei file di output? Puoi controllare con du normal_capture.pngedu array_capture.png
Hunter Akins il

Risposte:


1

Secondo la documentazione di Picamera nella parte 3.5 della sezione ricette di base:

Potresti voler catturare una sequenza di immagini che sembrano tutte uguali in termini di luminosità, colore e contrasto (questo può essere utile nella fotografia timelapse, ad esempio). È necessario utilizzare vari attributi per garantire la coerenza tra più scatti. In particolare, è necessario assicurarsi che il tempo di esposizione, il bilanciamento del bianco e i guadagni della fotocamera siano tutti fissi:

Per fissare il tempo di esposizione, impostare l' shutter_speedattributo su un valore ragionevole. Facoltativamente, impostare isosu un valore fisso. Per correggere i guadagni di esposizione, lascia analog_gaine digital_gainstabilisci valori ragionevoli, quindi imposta Expos_mode su 'off'. Per correggere il bilanciamento del bianco, impostare awb_modesu 'off', quindi impostare awb_gainssu una tupla di guadagni (rossa, blu).

Può essere difficile sapere quali potrebbero essere i valori appropriati per questi attributi. Infatti iso, una semplice regola empirica è che 100 e 200 sono valori ragionevoli per il giorno, mentre 400 e 800 sono migliori per la scarsa luminosità. Per determinare un valore ragionevole per shutter_speedte puoi interrogare l' exposure_speedattributo. Per i guadagni di esposizione, di solito è sufficiente attendere che analog_gainsia maggiore di 1 prima che exposure_modesia impostato su 'off'. Infine, per determinare valori ragionevoli per eseguire awb_gains semplicemente una query sulla proprietà mentre awb_modeè impostato su qualcosa di diverso da 'off'. Ancora una volta, questo ti dirà i guadagni del bilanciamento del bianco della fotocamera determinati dall'algoritmo di bilanciamento del bianco automatico.

Il seguente script fornisce un breve esempio di configurazione di queste impostazioni:

from time import sleep
from picamera import PiCamera

camera = PiCamera(resolution=(1280, 720), framerate=30)
# Set ISO to the desired value
camera.iso = 100
# Wait for the automatic gain control to settle
sleep(2)
# Now fix the values
camera.shutter_speed = camera.exposure_speed
camera.exposure_mode = 'off'
g = camera.awb_gains
camera.awb_mode = 'off'
camera.awb_gains = g
# Finally, take several photos with the fixed settings
camera.capture_sequence(['image%02d.jpg' % i for i in range(10)])
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.