Billedbehandling Processering af digitale billeder
Billedbehandling Lighten Blur Darken Invert
Billedrepræsentation 0 0 x width Pixel (x, y) [0..255] 0 ~ sort, 255 ~hvid x [0..width[, y [0..heigth[ y height
Image, et interface til digitale billeder public class Image { // returnerer billedets højde public int getheight() // returnerer billedets bredde public int getwidth() // returnerer billedelementet på position (x, y) public Pixel getpixel(int x, int y) // returnerer en liste med samtlige pixels i billedet public List<Pixel> getpixels() // returnerer de op til ni naboer til (x, y) public List<Pixel> getneighbours(int x, int y) // gentegner billedet public void pixelsupdated()
getheight public class Image { // returnerer billedets højde public int getheight()... height
getwidth public class Image {... // returnerer billedets bredde public int getwidth()... width
getpixel public class Image {... // returnerer billedelementet på position (x, y) public Pixel getpixel(int x, int y)... x y
getpixels public class Image {... // returnerer en liste med samtlige pixels i billedet public List<Pixel> getpixels()...
getneighbours public class Image {... // returnerer de op til ni naboer til (x, y) public List<Pixel> getneighbours(int x, int y)... x y
Pixel public class Pixel{ // returnerer gråtonen for denne pixel public int getvalue() // opdaterer gråtonen for denne pixel public void setvalue(int value)
Simpel billedbehandling image for ( Pixel p : image.getpixels() ) { int oldvalue = p.getvalue(); int newvalue; // calculate newvalue // from oldvalue p.setvalue(newvalue); p
Brighten newvalue = oldvalue + 30
Brighten, Javakode image for ( Pixel p : image.getpixels() ) { int oldvalue = p.getvalue(); int newvalue; newvalue = oldvalue + 30; p.setpixel(newvalue); p
Invert newvalue = 255 - oldvalue
Invert, Javakode image for ( Pixel p : image.getpixels() ) { int oldvalue = p.getvalue(); int newvalue; newvalue = 255 oldvalue; p.setpixel(newvalue); p
Koordinatbaseret gennemløb 0 0 x width for (int y=0; y<image.height(); y++) { // behandl række y y for(int y=0; y<image.height(); y++) { // behandl række y for (int x=0; x<image.width(); x++) { // behandl pixel(x, y) height
Invert, koordinatbaseret public void invert() { // go through all pixels and // invert the colour value for(int y = 0; y < image.height(); y++) { for(int x = 0; x < image.width(); x++) { Pixel p = image.getpixel(x, y); int oldvalue = p.getvalue(); int newvalue; newvalue = 255 oldvalue; p.setvalue(newvalue); // redisplay the image on screen image.pixelsupdated();
Invert, koordinatbaseret og kompakt public void invert() { // go through all pixels and // invert the colour value for(int y = 0; y < image.height(); y++) { for(int x = 0; x < image.width(); x++) { image.getpixel(x, y).setvalue(invert(x, y)); // redisplay the image on screen image.pixelsupdated(); public int invert(int x, int y) { return 255-image.getValue(x, y);
Blur newvalue = gennemsnit af naboer
Blur, koordinatbaseret public Image blur() { Image result= new Image(image.getWidth(), image.getheight(), "blurredimage ); for (int y = 0; y<image.getheight(); y++) { for (int x = 0; x<image.getwidth(); x++) { result.getpixel(x, y).setvalue(average(x,y)); result.pixelsupdated(); return result; public int average(int x, int y) { int sum = 0; for (Pixel p : image.getneighbours(x,y)) { sum= sum + p.getvalue(); return sum/image.getneighbours(x,y).size();
Billedoperationer (1) brighten Gør billedet lidt lysere darken flip mirror invert rotatel Gør billedet lidt mørkere Spejlvend billedet omkring den horisontale midterakse Spejlvend billedet omkring den vertikale midterakse Inverter hver gråtone, dvs. 0 bliver til 255, 1 bliver til 254, 2 bliver til 253, etc. Rotér billedet 90 grader (90 grader mod uret, venstre om)
Billedoperationer (2) rotater Rotér billedet -90 grader (90 grader med uret, højre om) thresholding Sæt alle pixels der højst har tærskelværdien til 0 og alle pixels større end tærskelværdien til 255 Parameter: tærskelværdien thresholding Sæt hver pixel til sort (0), grå (127) eller hvid (255) border Sæt en sort ramme omkring billedet Parameter: rammens bredde smoothing Erstat hvert pixel med gennemsnitsværdien i det 3x3 kvadrat det er centrum i
Billedoperationer (3) oilpainting Erstat hvert pixel med den hyppigst forekommende værdi i det nxn kvadrat det er centrum i Parameter: størrelsen på kvadratet (n) fillimage Fyld billedet med en given farve Parameter: farveværdien drawrect Tegn et rektangel ind på billedet Parametre: øverste venstre og nederste højre hjørne samt en farve
Billedoperationer (4) fillrect Udfyld et givent rektangel i billedet med en farve Parametre: øverste venstre og nederste højre hjørne af rektanglet samt fyldfarven add Læg et billede til et andet. Billeder adderes ved at addere værdierne for korresponderende pixels Parameter: et billede subtract Træk et billede fra et andet Parameter: et billede crop Skær et rektangel ud af et billede og lav dette til et nyt billede Parametre: øverste venstre og nederste højre hjørne på crop-rektanglet