Autor Beitrag
Anika
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30
Erhaltene Danke: 2

Windows 7
Delphi 7
BeitragVerfasst: Fr 16.11.12 15:08 
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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:
ausblenden 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).

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Anika
Anika Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30
Erhaltene Danke: 2

Windows 7
Delphi 7
BeitragVerfasst: Fr 16.11.12 17:06 
Vielen Dank für Antwort.
Ich glaube es verstanden zu haben und werde es ausprobieren.
Nochmals Danke Anika.