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
instagram viewer

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.