Å rydde opp i bilder er en verdifull teknikk, enten det er for videre analyse eller bare for å få bildene dine til å se best mulig ut.
Bildeforbedring er et viktig verktøy for datasyn og bilderedigeringsapplikasjoner. Målet er å forbedre kvaliteten på bildene.
Ved å forbedre bildekvaliteten kan nøyaktigheten og påliteligheten til bildeanalyse- og prosesseringsteknikker forbedres betydelig. Dette er spesielt viktig i applikasjoner for gjenkjenning, gjenkjenning, segmentering og sporing av objekter.
Bildeforbedring kan hjelpe når faktorer som dårlige lysforhold, sensorstøy, bevegelsesuskarphet eller overføringsfeil har kompromittert bildekvaliteten.
Sette opp miljøet ditt
Start med sette opp et Python-miljø, kjør deretter følgende terminalkommando for å installere OpenCV-biblioteket. Du bruker OpenCV til å laste og behandle det første bildet, og for å lagre det endelige forbedrede bildet.
pip installer opencv-python
Du bruker Matplotlib for å vise de to bildene. Installer den ved å bruke denne kommandoen:
pip installer matplotlib
Til slutt, installer NumPy, som du vil brukes til numeriske operasjoner inkludert å lage oppslagstabeller for gammakorreksjon og definere kjernen for bildeskarphet:
pip install numpy
Når du har installert disse bibliotekene i miljøet ditt, er du klar til å begynne å kode.
Den fullstendige kildekoden for denne demoen er tilgjengelig i en GitHub-depot.
Importere de nødvendige bibliotekene
Importer bibliotekene du tidligere installerte i miljøet ditt:
import cv2
import matplotlib.pyplot som plt
import nusset som np
Merk at du bør importere OpenCV som cv2. Dette er en standard praksis som tar sikte på å sikre kodekompatibilitet og enkel forståelse for andre utviklere.
Laste inn og vise originalbildet
Start med å laste inn originalbildet ved å bruke cv2.imread funksjon. Dette er inngangsbildet som programmet vil utføre forbedringsteknikker på. Vis den deretter ved å bruke de riktige Matplotlib-funksjonene:
bilde = cv2.imread(«eksempel.jpg»)
plt.imshow (cv2.cvtColor (bilde, cv2.COLOR_BGR2RGB))
plt.title("Original bilde")
plt.show()
Å vise originalbildet vil hjelpe deg å sammenligne resultatene av programmet senere:
Bildet ovenfor vil være inngangen til programmet.
Redusere støy i bildet
Denoising er en teknikk som tar sikte på å redusere støy – tilfeldige forvrengninger – i bildet. Dette resulterer i en jevnere utgang. OpenCV gir raskNlBetyrSnusendeFarget funksjon for dette formålet. Den bruker en ikke-lokal algoritme for å fjerne støy og samtidig bevare bildedetaljer.
# Bruk bildeforbedringer
# Denoise bildet
denoised_image = cv2.fastNlMeansDenoisingColored (bilde, Ingen, 10, 10, 7, 21)
De raskNlBetyrSnusendeFarget funksjonen tar flere parametere, inkludert bilde, filterstyrke, malvindustørrelse og søkevindustørrelse. Du kan eksperimentere med forskjellige verdier for å få ønsket resultat.
Strekk kontrast for å forbedre detaljsynlighet
Kontraststrekking er også kjent som normalisering. Den strekker intensitetsverdiene for å spenne over et visst område. Dette forbedrer igjen synligheten av detaljene i bildet.
Du kan bruke kontraststrekking på det forurensede bildet ved å bruke OpenCV-er normalisere funksjon:
# Utfør kontraststrekking
contrast_stretched_image = cv2.normalize (denoised_image, Ingen, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
Hvordan gjøre bildet skarpere
Bildeskarphet forbedrer kantene og detaljene i bildet, og bidrar til å forbedre bildets skarphet.
# Bilde skarphet
kjerne = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, kjerne=kjerne)
Koden ovenfor lager en kjernematrise som understreker kantene og detaljene i bildet. De cv2.filter2D funksjonen bruker kjernen på det kontraststrakte bildet, og gjør det skarpere som et resultat.
Juster lysstyrken for å forbedre eksponeringen
Lysstyrkejustering kontrollerer den generelle lysstyrken til et bilde. Det bidrar til å gjøre bildet visuelt tiltalende og godt eksponert.
# Justering av lysstyrke
brightness_image = cv2.convertScaleAbs (sharpened_image, alpha=1, beta=5)
De cv2.convertScaleAbs funksjonen justerer lysstyrken til bildet. De alfa parameter styrer kontrasten, mens beta parameter kontrollerer lysstyrken. Å øke beta verdi forbedrer lysstyrken til bildet.
Bruk gammakorreksjon for å gjøre bildet lysere
Et bilde kan virke for lyst etter teknikken for lysstyrkejustering. Gammakorreksjon justerer den generelle lysstyrken og kontrasten til et bilde. Den korrigerer bilder som virker for mørke eller for lyse.
# Gamma-korreksjon
gamma = 1.5
lookup_table = np.array([((i / 255.0) ** gamma) * 255til Jeg i np.arrange(0, 256)]).astype("uint8")
gamma_korrigert_bilde = cv2.LUT(lysstyrkebilde, oppslagstabell)
Kodebiten ovenfor oppretter en oppslagstabell som bruker gammakorreksjonstransformasjon på det lysstyrkejusterte bildet. De gamma verdi styrer justeringen. Bruk verdier større enn 1 for å gjøre bildet mørkere, og verdier mindre enn 1 for å gjøre det lysere.
Lagre og vise det endelige forbedrede bildet
Når du har brukt de ovennevnte forbedringsteknikkene, lagrer du det endelige behandlede bildet i en fil.
# Lagre det endelige bildet
cv2.imwrite('final_image.jpg', gamma_korrigert_bilde)
Vis deretter utdataene til programmet ved å bruke Matplotlib.
# Vis det endelige forbedrede bildet
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title('Endelig forbedret bilde')
plt.show()
Det endelige forbedrede bildet er som følger:
Fremtiden for bildeforbedring
Fremtiden for bildeforbedring er innen kunstig intelligens. Maskinlæringsalgoritmer blir opplært til å automatisk utføre bildeforbedringsteknikker på bilder.
Disse programmene behandler hvert bilde uavhengig, så de bruker forskjellige verdier av teknikkene for forskjellige bilder.