Piltide puhastamine on väärtuslik tehnika, olgu selleks siis edasine analüüs või lihtsalt fotode parima väljanägemise jaoks.

Pildi täiustamine on arvutinägemise ja pilditöötlusrakenduste jaoks ülioluline tööriist. Selle eesmärk on parandada piltide kvaliteeti.

Pildikvaliteedi parandamisega saab oluliselt suurendada pildi analüüsi ja töötlemise tehnikate täpsust ja usaldusväärsust. See on eriti oluline objektide tuvastamise, tuvastamise, segmenteerimise ja jälgimise rakendustes.

Kujutise täiustamine võib aidata, kui sellised tegurid nagu vähesed valgustingimused, sensori müra, liikumise hägustumine või edastusvead on pildikvaliteeti kahjustanud.

Oma keskkonna seadistamine

Alusta sellest Pythoni keskkonna seadistamine, seejärel käivitage OpenCV teegi installimiseks järgmine terminalikäsk. Algkujutise laadimiseks ja töötlemiseks ning lõpliku täiustatud pildi salvestamiseks kasutate OpenCV-d.

pip install opencv-python

Kahe pildi kuvamiseks kasutate Matplotlibi. Installige see selle käsu abil:

pip installi matplotlib

Lõpuks installige NumPy, mille saate kasutada numbriliste operatsioonide jaoks sealhulgas gammakorrektsiooni otsingutabelite loomine ja pildi teravustamise tuuma määratlemine:

pip install numpy

Kui olete need teegid oma keskkonda installinud, olete valmis kodeerimist alustama.

Selle demo täielik lähtekood on saadaval a GitHubi hoidla.

Vajalike teekide importimine

Importige varem oma keskkonda installitud teegid:

importida cv2
importida matplotlib.pyplot nagu plt
importida tuim nagu np

Pange tähele, et peaksite importima OpenCV kui cv2. See on tavapraktika, mille eesmärk on tagada koodide ühilduvus ja teistele arendajatele arusaadavus.

Algse pildi laadimine ja kuvamine

Alustage originaalpildi laadimisega, kasutades cv2.imread funktsiooni. See on sisendpilt, millel teie programm teostab täiustamistehnikaid. Seejärel kuvage see sobivate Matplotlib funktsioonide abil:

pilt = cv2.imread("example.jpg")
plt.imshow (cv2.cvtColor (pilt, cv2.COLOR_BGR2RGB))
plt.title('Originaalne pilt')
plt.show()

Algse pildi kuvamine aitab hiljem programmi tulemusi võrrelda:

Ülaltoodud pilt on programmi sisend.

Pildi müra vähendamine

Müra vähendamine on tehnika, mille eesmärk on vähendada pildi müra – juhuslikke moonutusi. Selle tulemuseks on sujuvam väljund. OpenCV pakub fastNlMeansDenoising Colored funktsioon selleks otstarbeks. See kasutab müra eemaldamiseks mittekohalikku algoritmi, säilitades samal ajal pildi üksikasjad.

# Rakendage pildiparandusi
# Vähenda pildi müra
denoised_image = cv2.fastNlMeansDenoisingColored (pilt, Mitte ühtegi, 10, 10, 7, 21)

The fastNlMeansDenoising Colored funktsioon võtab mitu parameetrit, sealhulgas pilt, filtri tugevus, malli akna suurus ja otsinguakna suurus. Soovitud tulemuste saamiseks võite katsetada erinevate väärtustega.

Venitage kontrasti, et parandada detailide nähtavust

Kontrastsuse venitamist nimetatakse ka normaliseerimiseks. See venitab intensiivsuse väärtusi teatud vahemikus. See omakorda parandab detailide nähtavust pildil.

OpenCV-de abil saate müravabale pildile kontrasti venitada normaliseerida funktsioon:

# Tehke kontrastset venitust
kontrast_stretched_image = cv2.normalize (denoised_image, Mitte ühtegi, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Kuidas pilti teravamaks muuta

Pildi teravustamine suurendab pildi servi ja detaile, aidates parandada pildi teravust.

# Pildi teravustamine
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
teravdatud_pilt = cv2.filter2D(contrast_stretched_image, -1, kernel=kernel)

Ülaltoodud kood loob kerneli maatriksi, mis rõhutab pildi servi ja detaile. The cv2.filter2D funktsioon rakendab tuuma kontrastiga venitatud kujutisele, teravdades seda selle tulemusena.

Särituse parandamiseks reguleerige heledust

Heleduse reguleerimine reguleerib pildi üldist heledust. See aitab muuta pildi visuaalselt atraktiivseks ja hästi säritatud.

# Heleduse reguleerimine
brightness_image = cv2.convertScaleAbs (teritatud_pilt, alfa=1, beeta=5)

The cv2.convertScaleAbs funktsioon reguleerib pildi heledust. The alfa parameeter reguleerib kontrasti, samas kui beeta parameeter reguleerib heledust. Suurendades beeta väärtus suurendab pildi heledust.

Rakendage pildi heledamaks muutmiseks gammakorrektsiooni

Pilt võib pärast heleduse reguleerimise tehnikat tunduda liiga hele. Gammakorrektsioon reguleerib pildi üldist heledust ja kontrasti. See parandab liiga tumedad või heledad kujutised.

# Gamma korrektsioon
gamma = 1.5
lookup_table = np.massiiv([((i / 255.0) ** gamma) * 255jaoks i sisse np.arange(0, 256)]).astype("uint8")
gamma_korrigeeritud_pilt = cv2.LUT(heleduse_pilt, otsingu_tabel)

Ülaltoodud koodilõik loob otsingutabeli, mis rakendab heleduse reguleeritud kujutisele gammaparandusteisendust. The gamma väärtus juhib reguleerimist. Kasutage kujutise tumedamaks muutmiseks väärtusi, mis on suuremad kui 1, ja heledamaks muutmiseks väärtusi, mis on väiksemad kui 1.

Lõpliku täiustatud pildi salvestamine ja kuvamine

Kui olete ülaltoodud täiustamistehnikad rakendanud, salvestage lõplik töödeldud pilt faili.

# Salvestage lõplik pilt
cv2.imwrite('final_image.jpg', gamma_korrigeeritud_pilt)

Seejärel kuvage programmi väljund Matplotlibi abil.

# Kuvage lõplik täiustatud pilt
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title(Lõplik täiustatud pilt)
plt.show()

Lõplik täiustatud pilt on järgmine:

Pildi täiustamise tulevik

Pildi täiustamise tulevik on tehisintellekti valdkonnas. Masinõppe algoritme õpetatakse piltidel automaatselt pildiparandustehnikaid tegema.

Need programmid käsitlevad iga pilti iseseisvalt, seega rakendavad nad erinevate piltide jaoks erinevaid tehnikate väärtusi.