Vaizdų išvalymas yra vertingas metodas, nesvarbu, ar tai reikalinga tolesnei analizei, ar tiesiog norint, kad nuotraukos atrodytų geriausiai.

Vaizdo tobulinimas yra labai svarbus kompiuterinio matymo ir vaizdo redagavimo programų įrankis. Juo siekiama pagerinti vaizdų kokybę.

Pagerinus vaizdo kokybę, vaizdų analizės ir apdorojimo metodų tikslumas ir patikimumas gali būti žymiai padidintas. Tai ypač svarbu objektų aptikimo, atpažinimo, segmentavimo ir sekimo programose.

Vaizdo pagerinimas gali padėti, kai tokie veiksniai kaip prastas apšvietimas, jutiklio triukšmas, judesio susiliejimas ar perdavimo klaidos pablogina vaizdo kokybę.

Aplinkos nustatymas

Pradėkite nuo nustatyti Python aplinką, tada paleiskite šią terminalo komandą, kad įdiegtumėte OpenCV biblioteką. Naudosite OpenCV, kad įkeltumėte ir apdorotumėte pradinį vaizdą bei išsaugotumėte galutinį patobulintą vaizdą.

pip įdiegti opencv-python

Norėdami parodyti du vaizdus, ​​naudosite Matplotlib. Įdiekite jį naudodami šią komandą:

pip įdiegti matplotlib
instagram viewer

Galiausiai įdiekite „NumPy“, kurią turėsite naudoti skaitinėms operacijoms įskaitant gama korekcijos paieškos lentelių kūrimą ir vaizdo ryškinimo branduolio apibrėžimą:

pip install numpy

Įdiegę šias bibliotekas savo aplinkoje, būsite pasirengę pradėti kodavimą.

Visą šios demonstracinės versijos šaltinio kodą rasite a GitHub saugykla.

Būtinų bibliotekų importavimas

Importuokite bibliotekas, kurias anksčiau įdiegėte savo aplinkoje:

importuoti cv2
importuoti matplotlib.pyplot kaip plt
importuoti nelygus kaip np

Atminkite, kad turėtumėte importuoti OpenCV kaip cv2. Tai yra standartinė praktika, kuria siekiama užtikrinti kodų suderinamumą ir lengvą supratimą kitiems kūrėjams.

Originalaus vaizdo įkėlimas ir rodymas

Pradėkite įkeldami originalų vaizdą naudodami cv2.imread funkcija. Tai įvesties vaizdas, kuriame jūsų programa atliks tobulinimo būdus. Tada parodykite jį naudodami atitinkamas Matplotlib funkcijas:

vaizdas = cv2.imread(„pavyzdys.jpg“)
plt.imshow (cv2.cvtColor (vaizdas, cv2.COLOR_BGR2RGB))
plt.title(„Originalus vaizdas“)
plt.show()

Originalaus vaizdo rodymas padės vėliau palyginti programos rezultatus:

Aukščiau pateiktas vaizdas bus programos įvestis.

Triukšmo mažinimas vaizde

Triukšmo mažinimas yra metodas, kuriuo siekiama sumažinti vaizdo triukšmą – atsitiktinius iškraipymus. Dėl to gaunama sklandesnė produkcija. OpenCV suteikia fastNlMeansDenoisingColored funkcija šiam tikslui. Triukšmui pašalinti, išsaugant vaizdo detales, naudojamas ne vietinių priemonių algoritmas.

# Taikykite vaizdo patobulinimus
# Sumažinkite vaizdo triukšmą
denoised_image = cv2.fastNlMeansDenoisingColored (vaizdas, Nė vienas, 10, 10, 7, 21)

The fastNlMeansDenoisingColored funkcijai reikia kelių parametrų, įskaitant vaizdą, filtro stiprumą, šablono lango dydį ir paieškos lango dydį. Norėdami gauti norimų rezultatų, galite eksperimentuoti su skirtingomis vertėmis.

Ištempkite kontrastą, kad pagerintumėte detalių matomumą

Kontrastinis tempimas taip pat žinomas kaip normalizavimas. Jis ištempia intensyvumo vertes, kad apimtų tam tikrą diapazoną. Tai savo ruožtu pagerina vaizdo detalių matomumą.

Naudodami „OpenCV“ galite pritaikyti kontrasto tempimą nutrintam vaizdui normalizuoti funkcija:

# Atlikite kontrastinį tempimą
Contrast_stretched_image = cv2.normalize (denoised_image, Nė vienas, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Kaip paryškinti vaizdą

Vaizdo ryškinimas pagerina vaizdo kraštus ir detales, todėl vaizdas tampa ryškesnis.

# Vaizdo paryškinimas
branduolys = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
paryškintas_vaizdas = cv2.filter2D(kontrasto_ištemptas_vaizdas, -1, branduolys = branduolys)

Aukščiau pateiktas kodas sukuria branduolio matricą, kuri pabrėžia vaizdo kraštus ir detales. The cv2.filter2D funkcija pritaiko branduolį kontrasto ištemptam vaizdui, todėl jį paryškina.

Sureguliuokite ryškumą, kad pagerintumėte ekspoziciją

Ryškumo reguliavimas reguliuoja bendrą vaizdo ryškumą. Tai padeda padaryti vaizdą vizualiai patrauklų ir gerai eksponuotą.

# Ryškumo reguliavimas
brightness_image = cv2.convertScaleAbs (sharpened_image, alfa=1, beta =5)

The cv2.convertScaleAbs funkcija reguliuoja vaizdo ryškumą. The alfa parametras valdo kontrastą, o beta versija parametras reguliuoja ryškumą. Didinant beta versija reikšmė padidina vaizdo ryškumą.

Norėdami pašviesinti vaizdą, taikykite gama korekciją

Vaizdas gali pasirodyti per šviesus po ryškumo reguliavimo technikos. Gama korekcija reguliuoja bendrą vaizdo ryškumą ir kontrastą. Tai pataiso vaizdus, ​​kurie atrodo per tamsūs arba per šviesūs.

# Gama korekcija
gama = 1.5
lookup_table = np.masyvas([((i / 255.0) ** gama) * 255dėl i in np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(ryškumo_vaizdas, paieškos_lentelė)

Aukščiau pateiktas kodo fragmentas sukuria peržvalgos lentelę, kuri pritaiko gama korekcijos transformaciją ryškumui pakoreguotam vaizdui. The gama vertė valdo koregavimą. Naudokite didesnes nei 1 reikšmes, kad vaizdas būtų tamsesnis, ir mažesnes nei 1, kad būtų šviesesnis.

Galutinio patobulinto vaizdo įrašymas ir rodymas

Pritaikę aukščiau nurodytus tobulinimo būdus, išsaugokite galutinį apdorotą vaizdą faile.

# Išsaugokite galutinį vaizdą
cv2.imwrite(„final_image.jpg“, gama_pataisytas_vaizdas)

Tada parodykite programos išvestį naudodami Matplotlib.

# Rodyti galutinį patobulintą vaizdą
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title(„Galutinis patobulintas vaizdas“)
plt.show()

Galutinis patobulintas vaizdas yra toks:

Vaizdo tobulinimo ateitis

Vaizdo tobulinimo ateitis yra dirbtinio intelekto srityje. Mašininio mokymosi algoritmai mokomi automatiškai atlikti vaizdų tobulinimo būdus.

Šios programos kiekvieną vaizdą apdoroja atskirai, todėl skirtingiems vaizdams taiko skirtingas metodų vertes.