Kuvien puhdistaminen on arvokas tekniikka, olipa se sitten lisäanalyysiä varten tai yksinkertaisesti valokuvien saaminen näyttämään parhailta.
Kuvanparannus on tärkeä työkalu tietokonenäkö- ja kuvankäsittelysovelluksissa. Tarkoituksena on parantaa kuvien laatua.
Kuvanlaatua parantamalla voidaan parantaa merkittävästi kuvan analysointi- ja käsittelytekniikoiden tarkkuutta ja luotettavuutta. Tämä on erityisen tärkeää kohteen havaitsemis-, tunnistus-, segmentointi- ja seurantasovelluksissa.
Kuvan parantaminen voi auttaa, kun huonot valaistusolosuhteet, anturin kohina, liikeepäterävyys tai lähetysvirheet ovat heikentäneet kuvan laatua.
Ympäristösi luominen
Aloita Python-ympäristön määrittäminen, ja asenna OpenCV-kirjasto suorittamalla seuraava päätekomento. Käytät OpenCV: tä alkuperäisen kuvan lataamiseen ja käsittelyyn sekä lopullisen parannetun kuvan tallentamiseen.
pip asennus opencv-python
Käytät Matplotlibiä näiden kahden kuvan näyttämiseen. Asenna se tällä komennolla:
pip asennus matplotlib
Asenna lopuksi NumPy, jonka asennat käyttää numeerisiin operaatioihin mukaan lukien hakutaulukoiden luominen gammakorjausta varten ja ytimen määrittäminen kuvan terävöittämistä varten:
pip asennus numpy
Kun olet asentanut nämä kirjastot ympäristöösi, olet valmis aloittamaan koodauksen.
Tämän demon koko lähdekoodi on saatavilla a GitHub-arkisto.
Tarvittavien kirjastojen tuonti
Tuo aiemmin ympäristöösi asentamasi kirjastot:
tuonti cv2
tuonti matplotlib.pyplot kuten plt
tuonti nuhjuinen kuten np
Huomaa, että sinun tulee tuoda OpenCV muodossa cv2. Tämä on vakiokäytäntö, jonka tarkoituksena on varmistaa koodien yhteensopivuus ja helppous muiden kehittäjien kannalta.
Alkuperäisen kuvan lataaminen ja näyttäminen
Aloita lataamalla alkuperäinen kuva käyttämällä cv2.imread toiminto. Tämä on syöttökuva, jolla ohjelmasi suorittaa parannustekniikoita. Näytä se sitten sopivilla Matplotlib-funktioilla:
kuva = cv2.imread("esimerkki.jpg")
plt.imshow (cv2.cvtColor (kuva, cv2.COLOR_BGR2RGB))
plt.title("Alkuperäinen kuva")
plt.show()
Alkuperäisen kuvan näyttäminen auttaa sinua vertailemaan ohjelman tuloksia myöhemmin:
Yllä oleva kuva on ohjelman syöte.
Kohinan vähentäminen kuvassa
Kohinanpoisto on tekniikka, jolla pyritään vähentämään kohinaa – satunnaisia vääristymiä – kuvassa. Tämä johtaa tasaisempaan ulostuloon. OpenCV tarjoaa fastNlMeansDenoisingColored toiminto tähän tarkoitukseen. Se käyttää ei-paikallista algoritmia kohinan poistamiseen säilyttäen samalla kuvan yksityiskohdat.
# Käytä kuvan parannuksia
# Häivytä kuva
denoised_image = cv2.fastNlMeansDenoisingColored (kuva, Ei mitään, 10, 10, 7, 21)
The fastNlMeansDenoisingColored toiminto ottaa useita parametreja, mukaan lukien kuvan, suodattimen voimakkuuden, mallin ikkunan koon ja hakuikkunan koon. Voit kokeilla erilaisia arvoja saadaksesi haluamasi tulokset.
Venytä kontrastia parantaaksesi yksityiskohtien näkyvyyttä
Kontrastivenytystä kutsutaan myös normalisoinniksi. Se venyttää intensiteettiarvoja tietylle alueelle. Tämä puolestaan parantaa kuvan yksityiskohtien näkyvyyttä.
Voit soveltaa kontrastia venytettyyn kuvaan OpenCV: n avulla normalisoida toiminto:
# Suorita kontrastivenyttely
kontrasti_stretched_image = cv2.normalize (denoised_image, Ei mitään, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
Kuinka terävöittää kuvaa
Kuvan terävöittäminen parantaa kuvan reunoja ja yksityiskohtia, mikä auttaa parantamaan kuvan terävyyttä.
# Kuvan teroitus
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
teroitettu_kuva = cv2.filter2D(contrast_stretched_image, -1, kernel=ydin)
Yllä oleva koodi luo ydinmatriisin, joka korostaa kuvan reunoja ja yksityiskohtia. The cv2.filter2D -toiminto soveltaa ydintä kontrastivenytettyyn kuvaan ja terävöittää sen seurauksena.
Säädä kirkkautta parantaaksesi valotusta
Kirkkauden säätö säätelee kuvan yleistä kirkkautta. Se auttaa tekemään kuvasta visuaalisesti houkuttelevan ja hyvin valotetun.
# Kirkkauden säätö
brightness_image = cv2.convertScaleAbs (terätty_kuva, alpha=1, beta=5)
The cv2.convertScaleAbs toiminto säätää kuvan kirkkautta. The alfa parametri ohjaa kontrastia, kun taas beeta parametri säätelee kirkkautta. Lisäämällä beeta arvo lisää kuvan kirkkautta.
Käytä gammakorjausta kirkastaaksesi kuvaa
Kuva voi näyttää liian kirkkaalta kirkkauden säätötekniikan jälkeen. Gammakorjaus säätää kuvan yleistä kirkkautta ja kontrastia. Se korjaa liian tummilta tai liian kirkkailta näyttäviä kuvia.
# Gamma-korjaus
gamma = 1.5
hakutaulukko = np.array([((i / 255.0) ** gamma) * 255varten i sisään np.arange(0, 256)]).astype("uint8")
gamma_korjattu_kuva = cv2.LUT(kirkkaus_kuva, hakutaulukko)
Yllä oleva koodinpätkä luo hakutaulukon, joka käyttää gammakorjausmuunnosta kirkkaussäädetyssä kuvassa. The gamma arvo ohjaa säätöä. Käytä arvoja suurempia kuin 1 tehdäksesi kuvasta tummempi ja arvoja pienempiä kuin 1 tehdäksesi siitä kirkkaampi.
Lopullisen parannetun kuvan tallentaminen ja näyttäminen
Kun olet käyttänyt yllä olevia parannustekniikoita, tallenna lopullinen käsitelty kuva tiedostoon.
# Tallenna lopullinen kuva
cv2.imwrite('lopullinen_kuva.jpg', gamma_corrected_image)
Näytä sitten ohjelman tulos Matplotlibillä.
# Näytä lopullinen paranneltu kuva
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title("Lopullinen paranneltu kuva")
plt.show()
Lopullinen paranneltu kuva on seuraava:
Kuvanparannusten tulevaisuus
Kuvanparannusten tulevaisuus on tekoälyn alalla. Koneoppimisalgoritmeja opetetaan suorittamaan kuville automaattisesti kuvanparannustekniikoita.
Nämä ohjelmat käsittelevät jokaista kuvaa itsenäisesti, joten ne käyttävät eri tekniikoiden arvoja eri kuville.