Avatar billede tiger_webdesign Nybegynder
21. august 2004 - 01:39 Der er 16 kommentarer og
1 løsning

Analyse af billede

Hej,
Jeg vil gerne have afvide hvordan man kan analysere et billede,
fx finde kendte mønstre, analysere om fx lyset er tændt på billedet (fra webcam) osv.

På forhånd tak ;)
Avatar billede martin_moth Mester
22. august 2004 - 21:30 #1
Tror du skyder lidt over målet, hvis du selv vil kode det.
Avatar billede tiger_webdesign Nybegynder
22. august 2004 - 23:59 #2
ok...

Er det pga. at VB ikke er stærkt nok, eller er det mig? ;) Kan godt tåle kritik...
Avatar billede olebole Juniormester
24. august 2004 - 02:31 #3
<ole>

VB kan fortælle dig, hvilken farve, hver pixel har. Derudfra skal du så lære programmet at udføre selve analysen, så deeeeeet ......  :)

/mvh
</bole>
Avatar billede martin_moth Mester
24. august 2004 - 09:41 #4
Tiger_webdesign: Det er dig ;o)

Jeg tror de allerfærreste ville kunne overkomme den opgave - det er jo uhyre komplekst. Men hvis du går i gang, skal du nok bruge den første uge (eller meget mere) på at finde ud af hvordan du overhovedet vil gribe det an.

At sammeligne et billed pixel for pixel er nok det nærmeste overkommelige du kommer. At genkende mønstre - jeg tror du skal have fat i noget ret heftigt matematik og analyseværktøjer for at kunne gøre det. Der er programmeringen nok den simpleste del af opgaven...

Men hvad - der findes folk der krydser Atlanten alene i noget der minder om en optimistjolle, så alt kan lade sig gøre
Avatar billede olebole Juniormester
24. august 2004 - 14:56 #5
For et par år siden så jeg nogle mønster-anlyse algoritmer, der var konstrueret på IT-Højskolens programmør uddannelse. Selvom jeg er rimelig stiv i matematik, er jeg glad for, det ikke er mig, der skal lave den slags  :)

Men som Martin skriver: Alt kan lade sig gøre - og der er folk, der arbejder med det, hver dag.
/mvh
Avatar billede tiger_webdesign Nybegynder
24. august 2004 - 22:40 #6
olebole: hvordan får jeg VB til det?
Avatar billede tiger_webdesign Nybegynder
25. august 2004 - 00:38 #7
evt. VB.net
Avatar billede martin_moth Mester
25. august 2004 - 06:43 #8
Dit problem er ikke at få VB eller VB.NET til at gøre det - dit problem er at du skal finde ud af HVAD det er du vil have VB/VB.NET til at gøre!
Avatar billede hiks Nybegynder
25. august 2004 - 14:47 #9
det kommer da helt klart an på hvad du vil lave analyse af. Er det mønstre i billedet så bliver det f..... en stor opgave. Du kan læse en artikel - fra et stykke tid tilbage omkring det her og så kan du jo selv prøve at estimere hvor meget udvikling der ligger i det.

http://www.computerworld.dk/default.asp?Mode=2&ArticleID=736

/hiks
Avatar billede tiger_webdesign Nybegynder
25. august 2004 - 15:19 #10
til at starte med vil jeg bare gerne have VB til at fortælle mig farven på en given pixel
Avatar billede tiger_webdesign Nybegynder
25. august 2004 - 15:20 #11
det er ikke det svære mønster jeg skal finde... sådan som det er nu er det bare tre lysende punkter med samme størrelse og afstand hele tiden
Avatar billede martin_moth Mester
25. august 2004 - 15:58 #12
Hvis du ved hvor de er i billedet, kan du jo bare aflæse de samme pixels på samme positioner i forskellige billeder.

Det lader til at olebole ved hvordan man gør det (aflæser farven på en bestemt pixel)

Du er ikke særlig konkret i dit spørgsmål.

Men hvis vi gætter på, at billederne har samme størrelse (samme antal pixels i bredde/længde), så kan du - ret let, vil jeg tro - lave en lille rutine der aflæser farven på fx. pixel nr 5 fra toppen og nr 3 fra venstre i en masse billeder, og skriver dem ud i fx. en listbox.
Avatar billede olebole Juniormester
25. august 2004 - 17:31 #13
Du kan gøre det på flere måder, f.eks. med OpenGL eller GDI som her:

Opret en form med en picturebox (Picture1) og en knap (Command1). I koden skriver du:

'-----------------------
Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Private Sub Command1_Click()
    Dim r  As Integer
    Dim g  As Integer
    Dim b  As Integer
    Dim x  As Integer
    Dim y  As Integer
    Dim col As Long
   
    'Sæt billedets modul til 1*1 pixel
    Picture1.ScaleMode = vbPixels
   
    'Vælg et punkt på billedfladen:
    x = 22 'pixels
    y = 37 'pixels
   
    'Find farven i punktet
    col = GetPixel(Picture1.hdc, x, y)
   
    'Parse farven
    r = col Mod 256
    g = (col \ 256) Mod 256
    b = col \ 256 \ 256
   
    Me.Caption = "R:" & r & ", " & _
                "G:" & g & ", " & _
                "B:" & b
End Sub
'-----------------------

Det skulle kunne vise, hvordan du finder farven på en pixel ... så må du selv finde ud af at lave analysen, så den passer til dit formål  :)
/mvh
Avatar billede olebole Juniormester
25. august 2004 - 17:33 #14
... og du kan såmænd også bruge 'Point'. Så kan koden se sådan ud:

'-----------------------
Option Explicit

Private Sub command1_Click()
    Dim r  As Integer
    Dim g  As Integer
    Dim b  As Integer
    Dim x  As Integer
    Dim y  As Integer
    Dim col As Long
   
    'Sæt billedets modul til 1*1 pixel
    Picture1.ScaleMode = vbPixels
   
    'Vælg et punkt på billedet:
    x = 22 'pixels
    y = 37 'pixels
   
    'Find farven i punktet
    col = Picture1.Point(x, y)
   
    'Parse farven
    r = col Mod 256
    g = (col \ 256) Mod 256
    b = col \ 256 \ 256
   
    Me.Caption = "R:" & r & ", " & _
                "G:" & g & ", " & _
                "B:" & b
End Sub
'-----------------------
Avatar billede tiger_webdesign Nybegynder
26. august 2004 - 00:12 #15
olebole -->> Takker... det var lige hvad jeg ledte efter... smid et svar
Avatar billede olebole Juniormester
26. august 2004 - 02:12 #16
Selvtak ... *griiiib*  :)
Avatar billede tiger_webdesign Nybegynder
26. august 2004 - 03:04 #17
hehe... tilpas syg humor til langt ud på natten... vil gå i seng ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester