Čišćenje slika je vrijedna tehnika, bilo da se radi o daljnjoj analizi ili jednostavno da bi vaše fotografije izgledale najbolje.
Poboljšanje slike ključan je alat za računalni vid i aplikacije za uređivanje slika. Cilj mu je poboljšati kvalitetu slika.
Poboljšanjem kvalitete slike, točnost i pouzdanost analize slike i tehnika obrade mogu se značajno poboljšati. Ovo je osobito važno u aplikacijama za otkrivanje, prepoznavanje, segmentaciju i praćenje.
Poboljšanje slike može pomoći kada faktori kao što su uvjeti slabog osvjetljenja, šum senzora, zamućenje pokreta ili pogreške u prijenosu ugroze kvalitetu slike.
Postavljanje vašeg okruženja
Počni od postavljanje Python okruženja, a zatim pokrenite sljedeću terminalsku naredbu za instalaciju OpenCV biblioteke. Koristit ćete OpenCV za učitavanje i obradu početne slike te za spremanje konačne poboljšane slike.
pip instaliraj opencv-python
Koristit ćete Matplotlib za prikaz dvije slike. Instalirajte ga pomoću ove naredbe:
pip instaliraj matplotlib
Na kraju, instalirajte NumPy, što ćete
koristiti za numeričke operacije uključujući stvaranje tablica pretraživanja za gama korekciju i definiranje kernela za izoštravanje slike:pip instaliraj numpy
Nakon što instalirate ove biblioteke u svoje okruženje, spremni ste za početak kodiranja.
Puni izvorni kod za ovaj demo dostupan je u a GitHub spremište.
Uvoz potrebnih biblioteka
Uvezite biblioteke koje ste prethodno instalirali u svoje okruženje:
uvoz cv2
uvoz matplotlib.pyplot kao plt
uvoz numpy kao np
Imajte na umu da biste trebali uvesti OpenCV kao cv2. Ovo je standardna praksa koja ima za cilj osigurati kompatibilnost koda i lakoću razumijevanja za druge programere.
Učitavanje i prikazivanje izvorne slike
Započnite učitavanjem izvorne slike pomoću cv2.imread funkcija. Ovo je ulazna slika na kojoj će vaš program izvoditi tehnike poboljšanja. Zatim ga prikažite koristeći odgovarajuće Matplotlib funkcije:
slika = cv2.imread('example.jpg')
plt.imshow (cv2.cvtColor (slika, cv2.COLOR_BGR2RGB))
plt.title('Izvorna slika')
plt.show()
Prikaz izvorne slike pomoći će vam da kasnije usporedite rezultate programa:
Gornja slika bit će ulaz programa.
Smanjenje šuma na slici
Uklanjanje šuma je tehnika koja ima za cilj smanjiti šum - nasumična izobličenja - na slici. To rezultira glatkijim ispisom. OpenCV pruža fastNlMeansDenoisingColored funkciju za ovu svrhu. Koristi algoritam nelokalnih sredstava za uklanjanje šuma uz očuvanje detalja slike.
# Primijenite poboljšanja slike
# Ukloni šum na slici
denoised_image = cv2.fastNlMeansDenoisingColored (slika, Nijedan, 10, 10, 7, 21)
The fastNlMeansDenoisingColored funkcija uzima nekoliko parametara, uključujući sliku, snagu filtra, veličinu prozora predloška i veličinu prozora za pretraživanje. Možete eksperimentirati s različitim vrijednostima kako biste dobili željene rezultate.
Rastegnite kontrast za bolju vidljivost detalja
Rastezanje kontrasta poznato je i kao normalizacija. Proteže vrijednosti intenziteta da obuhvati određeni raspon. To pak poboljšava vidljivost detalja na slici.
Možete primijeniti rastezanje kontrasta na sliku bez šuma pomoću OpenCV-a normalizirati funkcija:
# Izvedite kontrastno istezanje
kontrastna_razvučena_slika = cv2.normalize (denoised_image, Nijedan, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
Kako izoštriti sliku
Izoštravanje slike poboljšava rubove i detalje slike, pomažući poboljšanju oštrine slike.
# Izoštravanje slike
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
izoštrena_slika = cv2.filter2D(kontrastna_razvučena_slika, -1, kernel=kernel)
Gornji kod stvara matricu jezgre koja naglašava rubove i detalje na slici. The cv2.filter2D primjenjuje jezgru na kontrastno rastegnutu sliku, izoštravajući je kao rezultat.
Podesite svjetlinu za poboljšanje ekspozicije
Podešavanje svjetline kontrolira ukupnu svjetlinu slike. Pomaže da slika bude vizualno privlačna i dobro eksponirana.
# Podešavanje svjetline
svjetlina_slika = cv2.convertScaleAbs (izoštrena_slika, alfa=1, beta=5)
The cv2.convertScaleAbs funkcija prilagođava svjetlinu slike. The alfa parametar kontrolira kontrast, dok beta parametar kontrolira svjetlinu. Povećanje beta vrijednost povećava svjetlinu slike.
Primijenite gama korekciju da posvijetlite sliku
Slika može izgledati presvijetla nakon tehnike podešavanja svjetline. Gama korekcija prilagođava ukupnu svjetlinu i kontrast slike. Ispravlja slike koje izgledaju pretamne ili presvijetle.
# Gama korekcija
gama = 1.5
lookup_table = np.array([((i / 255.0) ** gama) * 255za ja u np.arange(0, 256)]).astype("uint8")
gama_ispravljena_slika = cv2.LUT(svjetlina_slika, pregledna_tablica)
Gornji isječak koda stvara tablicu pretraživanja koja primjenjuje transformaciju gama korekcije na sliku prilagođenu svjetlinom. The gama vrijednost kontrolira prilagodbu. Koristite vrijednosti veće od 1 da bi slika bila tamnija, a vrijednosti manje od 1 da bi bila svjetlija.
Spremanje i prikazivanje konačne poboljšane slike
Nakon što primijenite gore navedene tehnike poboljšanja, spremite konačnu obrađenu sliku u datoteku.
# Spremite konačnu sliku
cv2.imwrite('konačna_slika.jpg', gama_ispravljena_slika)
Zatim prikažite izlaz programa koristeći Matplotlib.
# Prikažite konačnu poboljšanu sliku
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title('Konačna poboljšana slika')
plt.show()
Konačna poboljšana slika je sljedeća:
Budućnost poboljšanja slike
Budućnost poboljšanja slike je u području umjetne inteligencije. Algoritmi strojnog učenja obučavaju se za automatsko izvođenje tehnika poboljšanja slike na slikama.
Ovi programi tretiraju svaku sliku neovisno, tako da primjenjuju različite vrijednosti tehnika za različite slike.