AI-For-Beginners/translations/sv/lessons/4-ComputerVision/06-IntroCV
localizeflow[bot] c55d809b23 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-09-07 15:24:18 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00

README.md

Introduktion till datorseende

Computer Vision Àr ett omrÄde som syftar till att ge datorer en hög nivÄ av förstÄelse för digitala bilder. Detta Àr en ganska bred definition, eftersom förstÄelse kan innebÀra mÄnga olika saker, inklusive att hitta ett objekt pÄ en bild (objektdetektion), förstÄ vad som hÀnder (hÀndelsedetektion), beskriva en bild i text eller rekonstruera en scen i 3D. Det finns ocksÄ specifika uppgifter relaterade till bilder av mÀnniskor: Älders- och kÀnsloestimering, ansiktsdetektion och identifiering, samt 3D-positionsestimering, för att nÀmna nÄgra.

Quiz före förelÀsningen

En av de enklaste uppgifterna inom datorseende Àr bildklassificering.

Datorseende anses ofta vara en gren av AI. Idag löses de flesta uppgifter inom datorseende med hjÀlp av neurala nÀtverk. Vi kommer att lÀra oss mer om den speciella typen av neurala nÀtverk som anvÀnds för datorseende, konvolutionella neurala nÀtverk, under denna sektion.

Men innan du skickar en bild till ett neuralt nÀtverk kan det i mÄnga fall vara vettigt att anvÀnda vissa algoritmiska tekniker för att förbÀttra bilden.

Det finns flera Python-bibliotek tillgÀngliga för bildbehandling:

  • imageio kan anvĂ€ndas för att lĂ€sa/skriva olika bildformat. Det stöder ocksĂ„ ffmpeg, ett anvĂ€ndbart verktyg för att konvertera videoramar till bilder.
  • Pillow (Ă€ven kĂ€nt som PIL) Ă€r lite mer kraftfullt och stöder Ă€ven viss bildmanipulation som morfning, palettjusteringar och mer.
  • OpenCV Ă€r ett kraftfullt bildbehandlingsbibliotek skrivet i C++, som har blivit standard för bildbehandling. Det har ett bekvĂ€mt Python-grĂ€nssnitt.
  • dlib Ă€r ett C++-bibliotek som implementerar mĂ„nga maskininlĂ€rningsalgoritmer, inklusive nĂ„gra av datorseendealgoritmerna. Det har ocksĂ„ ett Python-grĂ€nssnitt och kan anvĂ€ndas för utmanande uppgifter som ansikts- och ansiktslandmĂ€rkesdetektion.

OpenCV

OpenCV anses vara standard för bildbehandling. Det innehÄller mÄnga anvÀndbara algoritmer, implementerade i C++. Du kan ocksÄ anvÀnda OpenCV frÄn Python.

En bra plats att lÀra sig OpenCV Àr denna Learn OpenCV-kurs. I vÄr kursplan Àr mÄlet inte att lÀra sig OpenCV, utan att visa nÄgra exempel pÄ nÀr det kan anvÀndas och hur.

Ladda bilder

Bilder i Python kan bekvÀmt representeras av NumPy-arrayer. Till exempel skulle grÄskalebilder med storleken 320x200 pixlar lagras i en 200x320-array, och fÀrgbilder med samma dimension skulle ha formen 200x320x3 (för 3 fÀrgkanaler). För att ladda en bild kan du anvÀnda följande kod:

import cv2
import matplotlib.pyplot as plt

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

Traditionellt anvÀnder OpenCV BGR (BlÄ-Grön-Röd) kodning för fÀrgbilder, medan resten av Python-verktygen anvÀnder den mer traditionella RGB (Röd-Grön-BlÄ). För att bilden ska se rÀtt ut mÄste du konvertera den till RGB-fÀrgrymden, antingen genom att byta dimensioner i NumPy-arrayen eller genom att kalla en OpenCV-funktion:

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

Samma cvtColor-funktion kan anvÀndas för att utföra andra fÀrgrymdstransformationer, sÄsom att konvertera en bild till grÄskala eller till HSV (Hue-Saturation-Value) fÀrgrymden.

Du kan ocksÄ anvÀnda OpenCV för att ladda videor bildruta för bildruta - ett exempel ges i övningen OpenCV Notebook.

Bildbehandling

Innan du matar en bild till ett neuralt nÀtverk kan du vilja tillÀmpa flera förbehandlingssteg. OpenCV kan göra mÄnga saker, inklusive:

  • Ändra storlek pĂ„ bilden med im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • Suddighet pĂ„ bilden med im = cv2.medianBlur(im,3) eller im = cv2.GaussianBlur(im, (3,3), 0)
  • Ändra ljusstyrka och kontrast pĂ„ bilden kan göras med NumPy-arraymanipulationer, som beskrivs i denna Stackoverflow-notis.
  • AnvĂ€nda tröskling genom att kalla cv2.threshold/cv2.adaptiveThreshold-funktioner, vilket ofta Ă€r att föredra framför att justera ljusstyrka eller kontrast.
  • TillĂ€mpa olika transformationer pĂ„ bilden:
    • Affina transformationer kan vara anvĂ€ndbara om du behöver kombinera rotation, storleksĂ€ndring och skevhet pĂ„ bilden och du vet kĂ€ll- och destinationspositionen för tre punkter i bilden. Affina transformationer hĂ„ller parallella linjer parallella.
    • Perspektivtransformationer kan vara anvĂ€ndbara nĂ€r du vet kĂ€ll- och destinationspositionen för fyra punkter i bilden. Till exempel, om du tar en bild av ett rektangulĂ€rt dokument med en smartphonekamera frĂ„n en viss vinkel och vill göra en rektangulĂ€r bild av sjĂ€lva dokumentet.
  • FörstĂ„ rörelse i bilden genom att anvĂ€nda optisk flöde.

Exempel pÄ anvÀndning av datorseende

I vÄr OpenCV Notebook ger vi nÄgra exempel pÄ nÀr datorseende kan anvÀndas för att utföra specifika uppgifter:

  • Förbehandling av ett fotografi av en Braille-bok. Vi fokuserar pĂ„ hur vi kan anvĂ€nda tröskling, funktionsdetektion, perspektivtransformation och NumPy-manipulationer för att separera individuella Braille-symboler för vidare klassificering av ett neuralt nĂ€tverk.
Braille Image Braille Image Pre-processed Braille Symbols

Bild frÄn OpenCV.ipynb

  • Detektera rörelse i video med hjĂ€lp av bildruteskillnad. Om kameran Ă€r fast, bör bildrutor frĂ„n kameraflödet vara ganska lika varandra. Eftersom bildrutor representeras som arrayer, kan vi genom att subtrahera dessa arrayer för tvĂ„ efterföljande bildrutor fĂ„ pixeldifferensen, som bör vara lĂ„g för statiska bildrutor och bli högre nĂ€r det finns betydande rörelse i bilden.

Image of video frames and frame differences

Bild frÄn OpenCV.ipynb

  • Detektera rörelse med hjĂ€lp av optiskt flöde. Optiskt flöde gör det möjligt för oss att förstĂ„ hur individuella pixlar pĂ„ videobildrutor rör sig. Det finns tvĂ„ typer av optiskt flöde:

    • TĂ€tt optiskt flöde berĂ€knar vektorfĂ€ltet som visar för varje pixel var den rör sig.
    • Gles optiskt flöde baseras pĂ„ att ta nĂ„gra distinkta funktioner i bilden (t.ex. kanter) och bygga deras bana frĂ„n bildruta till bildruta.

Image of Optical Flow

Bild frÄn OpenCV.ipynb

✍ Exempel Notebooks: OpenCV prova OpenCV i praktiken

LÄt oss göra nÄgra experiment med OpenCV genom att utforska OpenCV Notebook

Slutsats

Ibland kan relativt komplexa uppgifter som rörelsedetektion eller fingertoppsdetektion lösas enbart med datorseende. DÀrför Àr det mycket anvÀndbart att kÀnna till de grundlÀggande teknikerna inom datorseende och vad bibliotek som OpenCV kan göra.

🚀 Utmaning

Titta pÄ denna video frÄn AI-showen för att lÀra dig om Cortic Tigers-projektet och hur de byggde en blockbaserad lösning för att demokratisera datorseendeuppgifter via en robot. Gör lite forskning om andra projekt som detta som hjÀlper nya lÀrande att komma in i omrÄdet.

Quiz efter förelÀsningen

Granskning & SjÀlvstudier

LÀs mer om optiskt flöde i denna utmÀrkta handledning.

Uppgift

I detta labb kommer du att ta en video med enkla gester, och ditt mÄl Àr att extrahera upp/ner/vÀnster/höger rörelser med hjÀlp av optiskt flöde.

Palm Movement Frame