OO2-project: Beeldbewerking G. de Haan EH9.27
description
Transcript of OO2-project: Beeldbewerking G. de Haan EH9.27
1
technische universiteit eindhoven
1
OO2-project: Beeldbewerking
G. de Haan
EH9.27
2
technische universiteit eindhoven
2
Inhoud
• Beeldbewerking
• Waar gaat het over?• Wat is een beeld?• Hoe wordt beeld opgeslagen?
• De opdracht: Een 3x3 lineair filter
• Wat doet het?• Wat kan je ermee?• Praktische tips
3
technische universiteit eindhoven
3
Waar gaat het Waar gaat het over?over?
4
technische universiteit eindhoven
4
50 Hz 2:160 Hz 2:1
100 Hz 2:1
72 Hz 1:185 Hz 1:195 Hz 1:1
CIF QCIF 1-25Hz 1:1
24 Hz 1:125 Hz 1:130 Hz 1:1
VGA, SVGA, XVGA, etc..
50 Hz 2:160 Hz 2:1
Video processing in ES
Flat panel displaysWEB
This is our field
5
technische universiteit eindhoven
5
Voorbeeld werk in vakgroep ES: bewegingsschatting
6
technische universiteit eindhoven
6
Wat is een Wat is een beeld?beeld?
7
technische universiteit eindhoven
7
Een (z/w) beeld is een matrix van helderheidswaarden
400 pixels/lijn
300
lijn
en
40 pixels/lijn
30
lijn
en
Meer pixels betere beeldkwaliteit
8
technische universiteit eindhoven
8
Hoe sla je een Hoe sla je een beeld op?beeld op?
9
technische universiteit eindhoven
9
Beeld in een 1-dimensionaal pixel-array
0 width
Width*heightAddress: [y*width+x]
x
y
10
technische universiteit eindhoven
10
Hoeveel bits per pixel moeten we opslaan?
Experiment: We kunnen ongeveer 200 niveaux in een beeld onderscheiden
We gebruiken daarom een 8 bit representatie voor de luminantie
11
technische universiteit eindhoven
11
Het input bestand met beeld data (name.y format)
File: {byte0,byte1,……..byten, bytewidth*height}
Pixel linksboven
Pixel rechtsonder
Voorbeeld: Twee pixels boven elkaar b.v.: byten en byten+width
bicycle.y football.y
12
technische universiteit eindhoven
12
De opdracht:De opdracht:
Een 3x3 filterEen 3x3 filter
13
technische universiteit eindhoven
13
Wat doet een 3x3 filter met een beeld?
• 3x3 Filter vervangt elk pixel (byte) in de file door een gewogen som van dat pixel en zijn 8 directe buren:
• Met:
• En filter-coefficient C gerepresenteerd door e e n byte
1
1ln
1
1 ln*ln, */1_px pxwidthnpxn byteCNbyteOutput
NCpx
px ln,
ln,
3x3filter
Voorbeeld: filter coefficienten allemaal “1”
14
technische universiteit eindhoven
14
Wat kan je Wat kan je ermee?ermee?
15
technische universiteit eindhoven
15
Wat kunnen we er mee? (blur)
+1 +1 +1
+1 +1 +1
+1 +1 +1
Filter coefficienten:
16
technische universiteit eindhoven
16
C-code for blurring
for(int a=width+1;a<width*height-(width+1);a++){
buf_o[a]=(unsigned char)((
(int)buf_i[a-1 - width] +
(int)buf_i[a - width] +
(int)buf_i[a+1- width] +
(int)buf_i[a-1 ] +
(int)buf_i[a ] +
(int)buf_i[a+1 ] +
(int)buf_i[a-1 +width] +
(int)buf_i[a +width] +
(int)buf_i[a+1+width]
+4 )/ 9);
}
17
technische universiteit eindhoven
17
Wat kunnen we er mee? (sharpen)
-1 -1 -1
-1 12 -1
-1 -1 -1
Filter coefficienten:
18
technische universiteit eindhoven
18
C-code for sharpeningfor(int a=width+1;a<width*height-(width+1);a++){
result=((
-1* (int)buf_i[a-1 - width] +
-1* (int)buf_i[a - width] +
-1* (int)buf_i[a+1- width] +
-1* (int)buf_i[a-1 ] +
12* (int)buf_i[a ] +
-1* (int)buf_i[a+1 ] +
-1* (int)buf_i[a-1 +width] +
-1* (int)buf_i[a +width] +
-1* (int)buf_i[a+1+width]
+2 )/ 4);
if(result<0) buf_o[a]=0;
else if(result>255) buf_o[a]=255;
else buf_o[a]=result;
}
19
technische universiteit eindhoven
19
Wat kunnen we er mee? (find edges)
-1 -1 -1
-1 8 -1
-1 -1 -1
+128
Filter coefficienten:
20
technische universiteit eindhoven
20
C-code for edge detection
for(int a=width+1;a<width*height-(width+1);a++){
result=(
-1* (int)buf_i[a-1 - width] +
-1* (int)buf_i[a - width] +
-1* (int)buf_i[a+1- width] +
-1* (int)buf_i[a-1 ] +
8* (int)buf_i[a ] +
-1* (int)buf_i[a+1 ] +
-1* (int)buf_i[a-1 +width] +
-1* (int)buf_i[a +width] +
-1* (int)buf_i[a+1+width]
+128);
if (result<0) buf_o[a]=0;
else if (result>255) buf_o[a]=255;
else buf_o[a]=result;
}
21
technische universiteit eindhoven
21
Enkele Enkele praktische tips.praktische tips.
22
technische universiteit eindhoven
22
Tips
• Voorkom dat er overflows optreden• “Clip” gewogen som b.v. tussen 0 en 255 (range van 1 byte)
• De efficiëntie test betreft hetzelfde algoritme, maar met andere weegfactoren (filter-coëfficiënten)
• De plaatjes zijn 406kB• Vanwege tijd nodig voor uploaden FPGA slechts deel van 128x128
pixels bewerken• 16kB voor input-plaatje en 16kB voor output-plaatje
• Om resultaat te visualiseren kun je het 128x128 blok van het oorspronkelijke beeld vervangen door het processing-resultaat en met de “view-button” van Windows-applicatie tonen op scherm
23
technische universiteit eindhoven
23
Tot slot
• Deze presentatie komt beschikbaar op de OO2 web-site
• Zip-file “ImProc.zip op de web-site• Enkele plaatjes in .y-formaat
• Windows applicatie, ImProc.exe, om effect van 3x3 filtering to demonstreren
Image
Processing
Application