AI-For-Beginners/translations/da/lessons/4-ComputerVision/06-IntroCV
leestott 68b3c9c9e7 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-28 18:09:00 +00:00

README.md

Introduktion til Computer Vision

Computer Vision er en disciplin, der har til formål at give computere en højere forståelse af digitale billeder. Dette er en ret bred definition, fordi forståelse kan betyde mange forskellige ting, herunder at finde et objekt på et billede (objektdetektion), forstå hvad der sker (begivenhedsdetektion), beskrive et billede med tekst eller rekonstruere en scene i 3D. Der er også særlige opgaver relateret til billeder af mennesker: alders- og følelsesvurdering, ansigtsdetektion og -identifikation samt 3D-positurvurdering, for blot at nævne nogle få.

Quiz før forelæsning

En af de simpleste opgaver inden for computer vision er billedklassifikation.

Computer vision betragtes ofte som en gren af AI. I dag løses de fleste computer vision-opgaver ved hjælp af neurale netværk. Vi vil lære mere om den særlige type neurale netværk, der bruges til computer vision, convolutional neural networks, i løbet af dette afsnit.

Men før du sender et billede til et neuralt netværk, giver det i mange tilfælde mening at bruge nogle algoritmiske teknikker til at forbedre billedet.

Der findes flere Python-biblioteker til billedbehandling:

  • imageio kan bruges til at læse/skrive forskellige billedformater. Det understøtter også ffmpeg, et nyttigt værktøj til at konvertere videorammer til billeder.
  • Pillow (også kendt som PIL) er lidt mere kraftfuldt og understøtter også nogle billedmanipulationer som morfning, paletjusteringer og mere.
  • OpenCV er et kraftfuldt billedbehandlingsbibliotek skrevet i C++, som er blevet den de facto standard for billedbehandling. Det har en praktisk Python-grænseflade.
  • dlib er et C++-bibliotek, der implementerer mange maskinlæringsalgoritmer, herunder nogle af computer vision-algoritmerne. Det har også en Python-grænseflade og kan bruges til udfordrende opgaver som ansigts- og ansigtstrækdetektion.

OpenCV

OpenCV betragtes som den de facto standard for billedbehandling. Det indeholder mange nyttige algoritmer, implementeret i C++. Du kan også bruge OpenCV fra Python.

Et godt sted at lære OpenCV er denne Learn OpenCV-kursus. I vores pensum er målet ikke at lære OpenCV, men at vise nogle eksempler på, hvornår det kan bruges, og hvordan.

Indlæsning af billeder

Billeder i Python kan bekvemt repræsenteres som NumPy-arrays. For eksempel vil gråtonede billeder med størrelsen 320x200 pixels blive gemt i et 200x320-array, og farvebilleder med samme dimension vil have formen 200x320x3 (for 3 farvekanaler). For at indlæse et billede kan du bruge følgende kode:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpeg')
plt.imshow(im)

Traditionelt bruger OpenCV BGR (Blå-Grøn-Rød) kodning til farvebilleder, mens resten af Python-værktøjerne bruger den mere traditionelle RGB (Rød-Grøn-Blå). For at billedet skal se korrekt ud, skal du konvertere det til RGB-farverummet, enten ved at bytte dimensionerne i NumPy-arrayet eller ved at kalde en OpenCV-funktion:

im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)

Den samme cvtColor-funktion kan bruges til at udføre andre farverumstransformationer, såsom at konvertere et billede til gråtoner eller til HSV (Hue-Saturation-Value) farverummet.

Du kan også bruge OpenCV til at indlæse video frame-for-frame - et eksempel er givet i øvelsen OpenCV Notebook.

Billedbehandling

Før du sender et billede til et neuralt netværk, kan det være en god idé at anvende flere forbehandlingsskridt. OpenCV kan gøre mange ting, herunder:

  • Ændre størrelsen på billedet ved hjælp af im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Sløre billedet ved hjælp af im = cv2.medianBlur(im,3) eller im = cv2.GaussianBlur(im, (3,3), 0)
  • Ændring af lysstyrke og kontrast på billedet kan gøres ved hjælp af NumPy-arraymanipulationer, som beskrevet i denne Stackoverflow-note.
  • Brug af thresholding ved at kalde cv2.threshold/cv2.adaptiveThreshold-funktioner, hvilket ofte foretrækkes frem for at justere lysstyrke eller kontrast.
  • Anvendelse af forskellige transformationer på billedet:
    • Affine transformationer kan være nyttige, hvis du skal kombinere rotation, ændring af størrelse og skævhed på billedet, og du kender kilde- og destinationsplaceringen af tre punkter i billedet. Affine transformationer bevarer parallelle linjer.
    • Perspektivtransformationer kan være nyttige, når du kender kilde- og destinationspositionerne for 4 punkter i billedet. For eksempel, hvis du tager et billede af et rektangulært dokument med et smartphonekamera fra en vinkel og ønsker at lave et rektangulært billede af selve dokumentet.
  • Forståelse af bevægelse i billedet ved hjælp af optisk flow.

Eksempler på brug af Computer Vision

I vores OpenCV Notebook giver vi nogle eksempler på, hvornår computer vision kan bruges til at udføre specifikke opgaver:

  • Forbehandling af et fotografi af en Braille-bog. Vi fokuserer på, hvordan vi kan bruge thresholding, feature detection, perspektivtransformation og NumPy-manipulationer til at adskille individuelle Braille-symboler til yderligere klassifikation af et neuralt netværk.
Braille Image Braille Image Pre-processed Braille Symbols

Billede fra OpenCV.ipynb

  • Detektion af bevægelse i video ved hjælp af rammeforskel. Hvis kameraet er fast, bør rammerne fra kameraets feed være ret ens. Da rammer repræsenteres som arrays, vil vi blot ved at trække disse arrays for to på hinanden følgende rammer få pixelforskellen, som bør være lav for statiske rammer og blive højere, når der er betydelig bevægelse i billedet.

Image of video frames and frame differences

Billede fra OpenCV.ipynb

  • Detektion af bevægelse ved hjælp af optisk flow. Optisk flow giver os mulighed for at forstå, hvordan individuelle pixels på videorammer bevæger sig. Der er to typer optisk flow:

    • Tæt optisk flow beregner vektorfeltet, der viser, hvor hver pixel bevæger sig hen.
    • Sparsomt optisk flow er baseret på at tage nogle karakteristiske træk i billedet (f.eks. kanter) og bygge deres bane fra ramme til ramme.

Image of Optical Flow

Billede fra OpenCV.ipynb

✍️ Eksempel Notebooks: OpenCV prøv OpenCV i aktion

Lad os lave nogle eksperimenter med OpenCV ved at udforske OpenCV Notebook

Konklusion

Nogle gange kan relativt komplekse opgaver som bevægelsesdetektion eller fingerspidsdetektion løses udelukkende ved hjælp af computer vision. Derfor er det meget nyttigt at kende de grundlæggende teknikker inden for computer vision og hvad biblioteker som OpenCV kan gøre.

🚀 Udfordring

Se denne video fra AI-showet for at lære om Cortic Tigers-projektet, og hvordan de byggede en blokbaseret løsning til at demokratisere computer vision-opgaver via en robot. Undersøg andre projekter som dette, der hjælper nye lærere med at komme i gang inden for feltet.

Quiz efter forelæsning

Gennemgang & Selvstudie

Læs mere om optisk flow i denne fantastiske tutorial.

Opgave

I dette laboratorium skal du tage en video med simple bevægelser, og dit mål er at udtrække op/ned/venstre/højre bevægelser ved hjælp af optisk flow.

Palm Movement Frame

Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på at sikre nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os ikke ansvar for eventuelle misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.