AI-For-Beginners/translations/sv/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 till Datorseende

Datorseende Àr en disciplin vars mÄl Àr att lÄta datorer fÄ 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 (objektdetektering), förstÄ vad som hÀnder (hÀndelsedetektering), beskriva en bild i text eller rekonstruera en scen i 3D. Det finns ocksÄ speciella uppgifter relaterade till mÀnskliga bilder: Älders- och kÀnsloestimering, ansiktsdetektering 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. Numera 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 bilden till ett neuralt nÀtverk kan det i mÄnga fall vara vettigt att anvÀnda nÄgra 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 kraftfullare och stöder Ă€ven viss bildmanipulation som morfning, justering av paletter 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 algoritmerna för datorseende. Det har ocksĂ„ ett Python-grĂ€nssnitt och kan anvĂ€ndas för utmanande uppgifter som ansikts- och ansiktslandmĂ€rkesdetektering.

OpenCV

OpenCV anses vara standarden 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 kurs om OpenCV. I vÄr kursplan Àr vÄrt mÄl inte att lÀra oss 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 behöver du konvertera den till RGB-fÀrgrymden, antingen genom att byta dimensioner i NumPy-arrayen eller genom att anropa en OpenCV-funktion:

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

Samma cvtColor-funktion kan anvÀndas för att utföra andra fÀrgrymdstransformationer, som att konvertera en bild till grÄskala eller till HSV (Nyans-MÀttnad-VÀrde) 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 anropa 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 skevning av bilden och du kĂ€nner till 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 kĂ€nner till kĂ€ll- och destinationspositionerna 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 punktskriftsbok. Vi fokuserar pĂ„ hur vi kan anvĂ€nda tröskling, funktionsdetektering, perspektivtransformation och NumPy-manipulationer för att separera individuella punktskriftssymboler för vidare klassificering av ett neuralt nĂ€tverk.
Punktskriftsbild Förbehandlad punktskriftsbild Punktskriftssymboler

Bild frÄn OpenCV.ipynb

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

Bild av videobildrutor och bildruteskillnader

Bild frÄn OpenCV.ipynb

  • Detektera rörelse med hjĂ€lp av optiskt flöde. Optiskt flöde lĂ„ter oss 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.
    • Glest 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.

Bild av optiskt flöde

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örelsedetektering eller fingertoppsdetektering lösas enbart med datorseende. DÀrför Àr det mycket anvÀndbart att kÀnna till de grundlÀggande teknikerna för datorseende och vad bibliotek som OpenCV kan göra.

🚀 Utmaning

Titta pÄ denna video frÄn AI Show 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

Ansvarsfriskrivning:
Detta dokument har översatts med hjĂ€lp av AI-översĂ€ttningstjĂ€nsten Co-op Translator. Även om vi strĂ€var efter noggrannhet, bör det noteras att automatiska översĂ€ttningar kan innehĂ„lla fel eller felaktigheter. Det ursprungliga dokumentet pĂ„ dess ursprungliga sprĂ„k bör betraktas som den auktoritativa kĂ€llan. För kritisk information rekommenderas professionell mĂ€nsklig översĂ€ttning. Vi ansvarar inte för eventuella missförstĂ„nd eller feltolkningar som uppstĂ„r vid anvĂ€ndning av denna översĂ€ttning.