Entwickler-Ecke

Multimedia / Grafik - Laplace-Filter?


Anika - Fr 16.11.12 15:08
Titel: Laplace-Filter?
Hallo,
in der Schule haben wir heute die Aufgabe bekommen, ein Bild "Apfelmännchen" zu verändern.
Wir sollen eines graues und ein rotes daraus machen. Das habe ich verstanden und habe

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TfrmNegative.GraustufenClick(Sender: TObject);
var color,farbe,blue,green,red,i,j : integer;
begin
  for i:=0 to imgApple.Width-1 do
    for j:=0 to imgApple.Height-1 do begin
      color := imgApple.Canvas.Pixels[i,j];
      red := color and 255;                        // letzte 8 Bit
      green := (color and 65535shr 8;            // mittl. 8 Bit
      blue := color shr 16;                        // ersten 8 Bit
      farbe := (red+blue+green) div 3;
      imgApple.Canvas.Pixels[i,j] := 65536*farbe + 256*farbe + farbe;
    end;
end;
procedure TfrmNegative.RotbildClick(Sender: TObject);
var color,red,i,j : integer;
begin
  for i:=0 to imgApple.Width-1 do
    for j:=0 to imgApple.Height-1 do begin
      color := imgApple.Canvas.Pixels[i,j];
      red := color and 255;                        // letzte 8 Bit
      imgApple.Canvas.Pixels[i,j] := red;
    end;
end;

Nun können wir als freiwillige Aufgabe auch einen Laplace-Filter anwenden. In der Suche habe ich nichts gefunden und Wikipedia verstehe ich nicht.
Kann mir jemand erklären was so ein Filter ist und wie man das macht.
Vielen Dank Anika.

Moderiert von user profile iconMartok: Code- durch Delphi-Tags ersetzt


Gausi - Fr 16.11.12 15:21

So ein "Filter" wird benutzt, um das Bild zu verändern. Diese Matrizen sind dabei so zu verstehen,

Beispiel:

Quelltext
1:
2:
3:
4:
 
0  1  0
1 -4  1
0  1  0

Der neue Farbwert des Pixels[i,j] wird berechnet, indem der aktuelle Farbwert komponentenweise mit -4 mutltipliziert wird, und die (alten) Farbwerte der Pixels darüber, darunter und links/rechts daneben addiert werden. D.h. der neue Farbwert wird nicht nur durch den Farbwert des aktuellen Pixels bestimmt, sondern auch von den umgebenden Pixeln - zur Berechnung muss man daher mit einem zweiten Bild arbeiten.

Wenn hier in diesem Beispiel um einen Pixel herum alle Pixel gleich sind, dann kommt 0 heraus, ansonsten was anderes - daher werden dadurch Kanten im Bild hervorgehoben (so ganz grob gesagt).


Anika - Fr 16.11.12 17:06

Vielen Dank für Antwort.
Ich glaube es verstanden zu haben und werde es ausprobieren.
Nochmals Danke Anika.