Het opschonen van afbeeldingen is een waardevolle techniek, of het nu voor verdere analyse is of gewoon om uw foto's er op hun best uit te laten zien.

Beeldverbetering is een cruciaal hulpmiddel voor computervisie en beeldbewerkingstoepassingen. Het doel is om de kwaliteit van afbeeldingen te verbeteren.

Door de beeldkwaliteit te verbeteren, kunnen de nauwkeurigheid en betrouwbaarheid van beeldanalyse- en verwerkingstechnieken aanzienlijk worden verbeterd. Dit is met name belangrijk bij toepassingen voor objectdetectie, herkenning, segmentatie en tracking.

Beeldverbetering kan helpen wanneer factoren zoals weinig licht, sensorruis, bewegingsonscherpte of transmissiefouten de beeldkwaliteit hebben aangetast.

Uw omgeving instellen

Start op het opzetten van een Python-omgeving, voer dan de volgende terminalopdracht uit om de OpenCV-bibliotheek te installeren. U gebruikt OpenCV om de eerste afbeelding te laden en te verwerken en om de uiteindelijke verbeterde afbeelding op te slaan.

pip installeer opencv-python
instagram viewer

U gebruikt Matplotlib om de twee afbeeldingen weer te geven. Installeer het met behulp van deze opdracht:

pip installeer matplotlib

Installeer ten slotte NumPy, wat u ook zult doen gebruiken voor numerieke bewerkingen inclusief het maken van opzoektabellen voor gammacorrectie en het definiëren van de kernel voor beeldverscherping:

pip installeer numpy

Zodra u deze bibliotheken in uw omgeving hebt geïnstalleerd, bent u klaar om te beginnen met coderen.

De volledige broncode voor deze demo is beschikbaar in een GitHub-opslagplaats.

De benodigde bibliotheken importeren

Importeer de bibliotheken die u eerder in uw omgeving hebt geïnstalleerd:

importeren cv2
importeren matplotlib.pyplot als plt
importeren onnozel als np

Merk op dat u OpenCV moet importeren als cv2. Dit is een standaardpraktijk die tot doel heeft codecompatibiliteit en begrijpelijkheid voor andere ontwikkelaars te waarborgen.

De originele afbeelding laden en weergeven

Begin met het laden van de originele afbeelding met behulp van de cv2.imread functie. Dit is het invoerbeeld waarop uw programma verbeteringstechnieken zal uitvoeren. Geef het vervolgens weer met de juiste Matplotlib-functies:

afbeelding = cv2.imread('voorbeeld.jpg')
plt.imshow (cv2.cvtColor (afbeelding, cv2.COLOR_BGR2RGB))
plt.titel('Originele afbeelding')
plt.show()

Door de originele afbeelding weer te geven, kunt u later de resultaten van het programma vergelijken:

De bovenstaande afbeelding is de invoer van het programma.

Ruis in het beeld verminderen

Denoising is een techniek die tot doel heeft ruis - willekeurige vervormingen - in het beeld te verminderen. Dit resulteert in een vlottere uitvoer. OpenCV biedt de fastNlMeansDenoisingGekleurd functie hiervoor. Het gebruikt een algoritme met niet-lokale middelen om ruis te verwijderen met behoud van beelddetails.

# Beeldverbeteringen toepassen
# De afbeelding denoise
denoised_image = cv2.fastNlMeansDenoisingColored (afbeelding, Geen, 10, 10, 7, 21)

De fastNlMeansDenoisingGekleurd functie heeft verschillende parameters nodig, waaronder de afbeelding, filtersterkte, sjabloonvenstergrootte en zoekvenstergrootte. U kunt met verschillende waarden experimenteren om de gewenste resultaten te krijgen.

Rek het contrast uit om de zichtbaarheid van details te verbeteren

Contraststretching wordt ook wel normalisatie genoemd. Het strekt de intensiteitswaarden uit om een ​​bepaald bereik te bestrijken. Dit verbetert op zijn beurt de zichtbaarheid van de details in de afbeelding.

U kunt contraststretching toepassen op de afbeelding zonder ruis met behulp van OpenCV's normaliseren functie:

# Voer contrastrekking uit
contrast_stretched_image = cv2.normalize (denoised_image, Geen, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Hoe de afbeelding te verscherpen

Beeldverscherping verbetert de randen en details van het beeld, waardoor de beeldscherpte wordt verbeterd.

# Beeldverscherping
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
geslepen_afbeelding = cv2.filter2D(contrast_uitgerekte_afbeelding, -1, kernel=kernel)

De bovenstaande code maakt een kernelmatrix die de randen en details in de afbeelding benadrukt. De cv2.filter2D functie past de kernel toe op de contrast-uitgerekte afbeelding, waardoor deze wordt verscherpt.

Pas de helderheid aan om de belichting te verbeteren

Helderheidsaanpassing regelt de algehele helderheid van een afbeelding. Het helpt de afbeelding visueel aantrekkelijk en goed belicht te maken.

# Helderheidsaanpassing
helderheid_afbeelding = cv2.convertScaleAbs (verscherpte_afbeelding, alpha=1, bèta=5)

De cv2.convertScaleAbs functie past de helderheid van het beeld aan. De alfa parameter regelt het contrast, terwijl de bèta parameter regelt de helderheid. Het verhogen van de bèta waarde verbetert de helderheid van het beeld.

Gammacorrectie toepassen om de afbeelding helderder te maken

Een afbeelding kan te helder lijken na de techniek voor het aanpassen van de helderheid. Gammacorrectie past de algehele helderheid en het contrast van een afbeelding aan. Het corrigeert afbeeldingen die te donker of te licht lijken.

# Gamma correctie
gamma= 1.5
lookup_table = np.array([((i / 255.0) ** gamma) * 255voor i in np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)

Het bovenstaande codefragment maakt een opzoektabel die gammacorrectietransformatie toepast op de afbeelding met aangepaste helderheid. De gamma waarde regelt de aanpassing. Gebruik waarden groter dan 1 om het beeld donkerder te maken en waarden kleiner dan 1 om het helderder te maken.

De uiteindelijke verbeterde afbeelding opslaan en weergeven

Nadat u de bovenstaande verbeteringstechnieken hebt toegepast, slaat u de uiteindelijk verwerkte afbeelding op in een bestand.

# Sla de uiteindelijke afbeelding op
cv2.imwrite('final_image.jpg', gamma_gecorrigeerde_afbeelding)

Geef vervolgens de uitvoer van het programma weer met Matplotlib.

# Geef de uiteindelijke verbeterde afbeelding weer
plt.imshow (cv2.cvtColor (gamma_gecorrigeerde_afbeelding, cv2.COLOR_BGR2RGB))
plt.titel('Uiteindelijke verbeterde afbeelding')
plt.show()

De uiteindelijke verbeterde afbeelding is als volgt:

De toekomst van beeldverbetering

De toekomst van beeldverbetering ligt op het gebied van kunstmatige intelligentie. Machine learning-algoritmen worden getraind om automatisch beeldverbeteringstechnieken op afbeeldingen uit te voeren.

Deze programma's behandelen elk beeld onafhankelijk, dus passen ze verschillende waarden van de technieken toe op verschillende beelden.