La pulizia delle immagini è una tecnica preziosa, sia per ulteriori analisi o semplicemente per far apparire al meglio le tue foto.
Il miglioramento delle immagini è uno strumento cruciale per le applicazioni di visione artificiale e modifica delle immagini. Ha lo scopo di migliorare la qualità delle immagini.
Migliorando la qualità dell'immagine, l'accuratezza e l'affidabilità delle tecniche di analisi ed elaborazione delle immagini possono essere notevolmente migliorate. Ciò è particolarmente importante nelle applicazioni di rilevamento, riconoscimento, segmentazione e tracciamento di oggetti.
Il miglioramento dell'immagine può aiutare quando fattori come condizioni di scarsa illuminazione, rumore del sensore, sfocatura del movimento o errori di trasmissione hanno compromesso la qualità dell'immagine.
Configurazione dell'ambiente
A partire da impostare un ambiente Python, quindi esegui il seguente comando di terminale per installare la libreria OpenCV. Utilizzerai OpenCV per caricare ed elaborare l'immagine iniziale e per salvare l'immagine migliorata finale.
pip installa opencv-python
Utilizzerai Matplotlib per visualizzare le due immagini. Installalo usando questo comando:
pip installa matplotlib
Infine, installa NumPy, cosa che farai utilizzare per operazioni numeriche inclusa la creazione di tabelle di ricerca per la correzione della gamma e la definizione del kernel per la nitidezza dell'immagine:
pip installa numpy
Dopo aver installato queste librerie nel tuo ambiente, sei pronto per iniziare a programmare.
Il codice sorgente completo per questa demo è disponibile in a Deposito GitHub.
Importazione delle librerie necessarie
Importa le librerie che hai precedentemente installato nel tuo ambiente:
importare cv2
importare matplotlib.pyplot COME plt
importare intorpidito COME np
Nota che dovresti importare OpenCV come cv2. Questa è una pratica standard che mira a garantire la compatibilità del codice e la facilità di comprensione per altri sviluppatori.
Caricamento e visualizzazione dell'immagine originale
Inizia caricando l'immagine originale usando il file cv2.imread funzione. Questa è l'immagine di input su cui il tuo programma eseguirà le tecniche di miglioramento. Quindi visualizzalo utilizzando le funzioni Matplotlib appropriate:
immagine = cv2.imread('esempio.jpg')
plt.imshow (cv2.cvtColor (immagine, cv2.COLOR_BGR2RGB))
plt.titolo('Immagine originale')
plt.mostra()
La visualizzazione dell'immagine originale ti aiuterà a confrontare i risultati del programma in un secondo momento:
L'immagine sopra sarà l'input del programma.
Riduzione del rumore nell'immagine
Denoising è una tecnica che mira a ridurre il rumore (distorsioni casuali) nell'immagine. Ciò si traduce in un output più uniforme. OpenCV fornisce il fastNlMeansDenoisingColored funzione per questo scopo. Utilizza un algoritmo di mezzi non locali per rimuovere il rumore preservando i dettagli dell'immagine.
# Applica miglioramenti all'immagine
# Denoise l'immagine
denoised_image = cv2.fastNlMeansDenoisingColored (immagine, Nessuno, 10, 10, 7, 21)
IL fastNlMeansDenoisingColored La funzione accetta diversi parametri, tra cui l'immagine, l'intensità del filtro, la dimensione della finestra del modello e la dimensione della finestra di ricerca. Puoi sperimentare valori diversi per ottenere i risultati desiderati.
Aumenta il contrasto per migliorare la visibilità dei dettagli
Lo stiramento del contrasto è anche noto come normalizzazione. Allunga i valori di intensità per coprire un certo intervallo. Questo a sua volta migliora la visibilità dei dettagli nell'immagine.
Puoi applicare l'allungamento del contrasto all'immagine denoised usando OpenCV normalizzare funzione:
# Eseguire lo stretching del contrasto
contrast_stretched_image = cv2.normalize (denoised_image, Nessuno, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
Come rendere più nitida l'immagine
La nitidezza dell'immagine migliora i bordi ei dettagli dell'immagine, contribuendo a migliorare la nitidezza dell'immagine.
# Nitidezza dell'immagine
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, nocciolo=nocciolo)
Il codice precedente crea una matrice del kernel che enfatizza i bordi e i dettagli nell'immagine. IL cv2.filter2D La funzione applica il kernel all'immagine con contrasto allungato, rendendola più nitida come risultato.
Regola la luminosità per migliorare l'esposizione
La regolazione della luminosità controlla la luminosità complessiva di un'immagine. Aiuta a rendere l'immagine visivamente accattivante e ben esposta.
# Regolazione della luminosità
luminosità_immagine = cv2.convertScaleAbs (sharpened_image, alpha=1, Beta=5)
IL cv2.convertScaleAbs Questa funzione regola la luminosità dell'immagine. IL alfa parametro controlla il contrasto, mentre il beta parametro controlla la luminosità. Aumentando il beta valore aumenta la luminosità dell'immagine.
Applicare la correzione gamma per schiarire l'immagine
Un'immagine può apparire troppo luminosa dopo la tecnica di regolazione della luminosità. La correzione gamma regola la luminosità e il contrasto complessivi di un'immagine. Corregge le immagini che appaiono troppo scure o troppo chiare.
# Correzione gamma
gamma = 1.5
tabella_ricerca = np.array([((i / 255.0) ** gamma) * 255per io In np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(luminosità_immagine, lookup_table)
Il frammento di codice precedente crea una tabella di ricerca che applica la trasformazione della correzione gamma all'immagine regolata in base alla luminosità. IL gamma valore controlla la regolazione. Utilizzare valori superiori a 1 per rendere l'immagine più scura e valori inferiori a 1 per renderla più luminosa.
Salvataggio e visualizzazione dell'immagine migliorata finale
Dopo aver applicato le tecniche di miglioramento di cui sopra, salva l'immagine elaborata finale in un file.
# Salva l'immagine finale
cv2.imwrite('immagine_finale.jpg', immagine_corretta_gamma)
Quindi visualizzare l'output del programma utilizzando Matplotlib.
# Visualizza l'immagine migliorata finale
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.titolo('Immagine migliorata finale')
plt.mostra()
L'immagine migliorata finale è la seguente:
Il futuro del miglioramento delle immagini
Il futuro del miglioramento delle immagini è nel campo dell'intelligenza artificiale. Gli algoritmi di apprendimento automatico vengono addestrati per eseguire automaticamente tecniche di miglioramento delle immagini sulle immagini.
Questi programmi trattano ciascuna immagine in modo indipendente, quindi applicano diversi valori delle tecniche per immagini diverse.