6 Python-biblioteker for effektiv bildebehandling

Den måten vi oppfatter verden på, er i stor grad gjennom synet. Mennesker har en utrolig evne til å identifisere gjenstander, bedømme avstander og til og med fornemme teksturer ved å se på bilder.

Selv om dette virker som en naturlig og enkel oppgave for oss, er det fortsatt en stor utfordring å programmere datamaskiner til å gjøre det samme. Likevel har forskere utviklet avanserte algoritmer som hjelper datamaskiner med å utføre denne kompliserte bildebehandlingen. Disse algoritmene er implementert i kode og tilgjengelige som programvarebiblioteker, som vi skal utforske nærmere i denne artikkelen.

Hva betyr bildebehandling?

Bildebehandling er en viktig del av det større feltet datasyn. Det handler om de spesifikke operasjonene som utføres på bilder for å forberede dem til bruk i maskinlæring og kunstig intelligens. Bildebehandling er spesielt nyttig for å oppdage og identifisere objekter i bilder, noe som har mange anvendelsesområder, fra utvikling av selvkjørende biler og roboter til å klassifisere bilder for å identifisere for eksempel skadelig innhold.

Bruksområder for bildebehandling

Bildebehandling er et allsidig verktøy som finner anvendelse i mange forskjellige bransjer. Her er noen av de vanligste og mest nyttige bruksområdene:

  • Medisinsk bildediagnostikk, hvor kunstig intelligens kan analysere skanninger for å diagnostisere pasienter.
  • Sikkerhet, gjennom implementering av biometriske sikkerhetssystemer og overvåkingssystemer.
  • Robotikk, spesielt i utviklingen av roboter som kan tolke omgivelsene sine, for eksempel selvkjørende kjøretøy.
  • Utvidet virkelighet (AR), der bildebehandling brukes til å identifisere objekter og legge filtre over dem, for eksempel i sosiale medier.
  • Trafikkanalyse, som for eksempel automatisk lesing av bilskilt. Dette kan bidra til å håndheve trafikkregler, som å identifisere sjåfører som kjører på rødt lys eller bryter fartsgrensen.

Det finnes en rekke algoritmer som brukes innen bildebehandling, blant annet morfologisk utvidelse og erosjon, Gaussisk filtrering, Fourier-transformasjon, kantdeteksjon og wavelet-basert bildebehandling. Uten programvarebiblioteker ville utviklere måtte implementere disse algoritmene fra grunnen av. Heldigvis finnes det mange ferdiglagde biblioteker som tilbyr den nødvendige funksjonaliteten. Her følger en oversikt over noen av de mest brukte bibliotekene:

OpenCV

OpenCV er et meget populært bibliotek for bildebehandling. Det brukes til å implementere algoritmer for datasyn, maskinlæring og bildebehandling. I tillegg er det gratis tilgjengelig og er et åpen kildekode-prosjekt. OpenCV er allsidig og kan brukes med en rekke programmeringsspråk som Python, C++ og Java. Biblioteket tilbyr et bredt spekter av funksjoner og algoritmer for bildebehandling, som for eksempel kantdeteksjon, funksjonsuttrekk, transformasjoner, rotasjoner, endring av størrelse og bildeforbedring.

Scikit-image

Scikit-image er et brukervennlig og effektivt bibliotek for bildebehandling. Det tilbyr funksjoner for bildeinnlesning og -utskrift, transformasjoner, filtrering, segmentering, funksjonsuttrekk, bildegjenoppretting og geometriske transformasjoner. Biblioteket er også godt integrert med andre vitenskapelige databiblioteker, slik at brukere enkelt kan manipulere og forbedre bilder for mange forskjellige formål, fra grunnleggende operasjoner som å endre størrelse, til mer avanserte oppgaver som objektgjenkjenning og bildegjenoppretting.

SimpleITK

SimpleITK er en forenklet versjon av ITK (Insight Toolkit), et plattformuavhengig åpen kildekode-bibliotek for bildeanalyse. SimpleITK støtter lesing og skriving av bilder i over 20 ulike bildefilformater. I tillegg til Python fungerer det også med programmeringsspråk som R, Java, Ruy, Lua, C++ og C#. Det har et bredt spekter av funksjoner for arbeid med bilder, og støtter 2D, 3D, 4D og 5D-bilder. SimpleITK støtter også parallell prosessering, noe som kan bidra til å fremskynde bildebehandlingen.

SciPy

SciPy er beslektet med det kjente numeriske analysebiblioteket NumPy. SciPy er primært utviklet for vitenskapelig databehandling, mens NumPy brukes til numeriske beregninger. SciPy bygger på NumPy, og er derfor raskt og effektivt. SciPy støtter også arbeid med flerdimensjonale bilder og implementerer funksjoner for filtrering, morfologi, objektmålinger og B-spline-interpolering.

Pillow

Pillow er en videreutvikling av Python Imaging Library (PIL), et bibliotek for bildebehandling i Python. PIL fungerte imidlertid kun med Python 2 og ble ikke videreutviklet etter 2011. Pillow er en «fork» av PIL-prosjektet og støtter innlesning av bilder fra mange forskjellige filformater til en intern representasjon. Pillow kan manipulere bilder effektivt og tilbyr kraftige funksjoner for bildebehandling, i tillegg til rask tilgang til bildedata og operasjoner som rotasjon og endring av størrelse.

pgmagick

pgmagick er et åpen kildekode-bibliotek for Python, utviklet av Hideo Huttori. Det fungerer som en innpakning for GraphicsMagick, en samling verktøy og biblioteker for å lese, skrive og manipulere bilder. Biblioteket støtter mer enn 88 forskjellige bildeformater og kan utføre en rekke funksjoner som å finne bildestørrelse, skarphet eller uskarphet, kantdeteksjon, rotasjon, solarisering, sammenligning av bilder og skriving til disk. pgmagick kan også brukes til å lage GIF-animasjoner, tegne tekst og konvertere mellom forskjellige bildefilformater.

Avsluttende ord

Selv om denne listen ikke er fullstendig, er bibliotekene vi har presentert her noen av de mest populære og mest brukte innen bildebehandling. De har blitt brukt av enkeltpersoner og organisasjoner for å implementere systemer for objektdeteksjon, segmentering og bildeanalyse. Disse fremskrittene har vært svært nyttige innen kunstig intelligens og robotikk. I tillegg til biblioteker er det også mulig å bruke API-er for bildeanalyse.