Curățarea imaginilor este o tehnică valoroasă, fie că este vorba pentru o analiză ulterioară sau pur și simplu pentru a vă face fotografiile să arate cât mai bine.

Îmbunătățirea imaginii este un instrument crucial pentru viziunea computerizată și aplicațiile de editare a imaginilor. Are scopul de a îmbunătăți calitatea imaginilor.

Prin îmbunătățirea calității imaginii, acuratețea și fiabilitatea tehnicilor de analiză și procesare a imaginii pot fi îmbunătățite semnificativ. Acest lucru este deosebit de important în aplicațiile de detectare, recunoaștere, segmentare și urmărire a obiectelor.

Îmbunătățirea imaginii poate ajuta atunci când factori precum condițiile de lumină scăzută, zgomotul senzorului, mișcarea neclară sau erorile de transmisie au compromis calitatea imaginii.

Configurarea mediului

Începe prin configurarea unui mediu Python, apoi rulați următoarea comandă de terminal pentru a instala biblioteca OpenCV. Veți folosi OpenCV pentru a încărca și procesa imaginea inițială și pentru a salva imaginea finală îmbunătățită.

pip install opencv-python

Veți folosi Matplotlib pentru a afișa cele două imagini. Instalați-l folosind această comandă:

pip install matplotlib

În cele din urmă, instalați NumPy, pe care îl veți face utilizați pentru operații numerice inclusiv crearea tabelelor de căutare pentru corecția gama și definirea nucleului pentru clarificarea imaginii:

pip install numpy

Odată ce ați instalat aceste biblioteci în mediul dvs., sunteți gata să începeți codarea.

Codul sursă complet pentru această demonstrație este disponibil în a Depozitul GitHub.

Importarea bibliotecilor necesare

Importați bibliotecile pe care le-ați instalat anterior în mediul dvs.:

import cv2
import matplotlib.pyplot la fel de plt
import numpy la fel de np

Rețineți că ar trebui să importați OpenCV ca cv2. Aceasta este o practică standard care urmărește să asigure compatibilitatea codului și ușurința de înțelegere pentru alți dezvoltatori.

Încărcarea și afișarea imaginii originale

Începeți prin a încărca imaginea originală folosind cv2.imread funcţie. Aceasta este imaginea de intrare pe care programul dumneavoastră va efectua tehnici de îmbunătățire. Apoi afișați-l folosind funcțiile Matplotlib corespunzătoare:

imagine = cv2.imread(„example.jpg”)
plt.imshow (cv2.cvtColor (imagine, cv2.COLOR_BGR2RGB))
plt.title(„Imagine originală”)
plt.show()

Afișarea imaginii originale vă va ajuta să comparați rezultatele programului mai târziu:

Imaginea de mai sus va fi intrarea programului.

Reducerea zgomotului din imagine

Dezgomotul este o tehnică care urmărește reducerea zgomotului - distorsiuni aleatorii - din imagine. Acest lucru are ca rezultat o ieșire mai lină. OpenCV oferă fastNlMeansDenoisingColored functioneaza in acest scop. Utilizează un algoritm de mijloace non-locale pentru a elimina zgomotul, păstrând în același timp detaliile imaginii.

# Aplicați îmbunătățiri ale imaginii
# Eliminați zgomotul imaginii
denoised_image = cv2.fastNlMeansDenoisingColored (imagine, Nici unul, 10, 10, 7, 21)

The fastNlMeansDenoisingColored funcția ia mai mulți parametri, inclusiv imaginea, puterea filtrului, dimensiunea ferestrei șablonului și dimensiunea ferestrei de căutare. Puteți experimenta cu diferite valori pentru a obține rezultatele dorite.

Întindeți contrastul pentru a îmbunătăți vizibilitatea detaliilor

Întinderea prin contrast este cunoscută și sub denumirea de normalizare. Întinde valorile intensității pentru a acoperi un anumit interval. Acest lucru, la rândul său, îmbunătățește vizibilitatea detaliilor din imagine.

Puteți aplica o întindere a contrastului imaginii dezgomotate folosind OpenCV normaliza funcţie:

# Efectuați întinderea contrastului
contrast_stretched_image = cv2.normalize (imagine_denoisată, Nici unul, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Cum să clarificați imaginea

Claritatea imaginii îmbunătățește marginile și detaliile imaginii, ajutând la îmbunătățirea clarității imaginii.

# Clarificarea imaginii
nucleu = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
imagine_ascuțită = cv2.filter2D(imagine_întinsă_contrast, -1, kernel=kernel)

Codul de mai sus creează o matrice de nucleu care accentuează marginile și detaliile din imagine. The cv2.filtru2D funcția aplică nucleul imaginii întinse cu contrast, clarificând-o ca rezultat.

Reglați luminozitatea pentru a îmbunătăți expunerea

Reglarea luminozității controlează luminozitatea generală a unei imagini. Ajută la ca imaginea să fie atrăgătoare din punct de vedere vizual și să fie bine expusă.

# Ajustarea luminozității
brightness_image = cv2.convertScaleAbs (imagine_sharpened, alpha=1, beta=5)

The cv2.convertScaleAbs funcția reglează luminozitatea imaginii. The alfa parametrul controlează contrastul, în timp ce parametrul beta parametrul controlează luminozitatea. Creșterea beta valoare sporește luminozitatea imaginii.

Aplicați corecția Gamma pentru a lumina imaginea

O imagine poate apărea prea luminoasă după tehnica de ajustare a luminozității. Corecția Gamma ajustează luminozitatea generală și contrastul unei imagini. Corectează imaginile care par prea întunecate sau prea luminoase.

# Corecție gamma
gamma = 1.5
tabel_căutare = np.array([((i / 255.0) ** gamma) * 255pentru i în np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(imagine_luminozitate, tabel_căutare)

Fragmentul de cod de mai sus creează un tabel de căutare care aplică transformarea corecției gama imaginii ajustate în funcție de luminozitate. The gamma valoarea controlează reglarea. Utilizați valori mai mari decât 1 pentru a întuneca imaginea și valori mai mici de 1 pentru a o face mai luminoasă.

Salvarea și afișarea imaginii finale îmbunătățite

După ce ați aplicat tehnicile de îmbunătățire de mai sus, salvați imaginea finală procesată într-un fișier.

# Salvați imaginea finală
cv2.imwrite(„final_image.jpg”, imagine_corectată_gama)

Apoi afișați rezultatul programului folosind Matplotlib.

# Afișează imaginea finală îmbunătățită
plt.imshow (cv2.cvtColor (imagine_corectată_gama, cv2.COLOR_BGR2RGB))
plt.title(„Imagine finală îmbunătățită”)
plt.show()

Imaginea finală îmbunătățită este următoarea:

Viitorul îmbunătățirii imaginii

Viitorul îmbunătățirii imaginii este în domeniul inteligenței artificiale. Algoritmii de învățare automată sunt instruiți pentru a efectua automat tehnici de îmbunătățire a imaginii pe imagini.

Aceste programe tratează fiecare imagine în mod independent, astfel încât aplică valori diferite ale tehnicilor pentru diferite imagini.