Directory Contents Search <<


DaVinci 4: Leonardo: Funktion CreateFIRFilteredDIB

Die Leonardo-Funktion CreateFIRFilteredDIB erzeugt ein gefiltertes Abbild einer DIB mit 24 Bit Farbtiefe.

HDIB WINAPI CreateSharpenedDIB(

HDIB

hdib,

LPINT

matrix,

int

width,

int

height,

int

addtoaverage

);

hdib

HDIB

Handle der Quell-DIB.

Die Quell-DIB muss eine TrueColor DIB mit 24 Bit Farbtiefe sein.

matrix

LPINT

Zeiger auf ein Array von (width * height) integer-Werten mit Multiplikationsfaktoren für die Pixel der Bitmap.

Der Wert 256 entspricht einem Multiplikationsfaktor von 1.0

width

int

Breite der Multiplikationsmatrix

Dieser Wert muss ungerade (nicht ohne Rest durch 2 teilbar) sein.

height

int

Höhe der Multiplikationsmatrix

Dieser Wert muss ungerade (nicht ohne Rest durch 2 teilbar) sein.

addtoaverage

int

Konstanter Wert, der zu jedem Pixel in der Matrix addiert werden soll.

Rückgabewert:

Der Rückgabewert gibt das Handle der neu erstellten DIB an. Er ist NULL, wenn die Erstellung der DIB mißlang. Das Handle muss von der Applikation mit der Funktion GlobalFree freigegeben werden.

Arbeitsweise:

Diese Funktion führt eine lineare zweidimensionale FIR-Filterung der Farbwerte der Eingabe-DIB in die Ausgabe-DIB durch.

Beispiel: Matrix zum Scharfzeichnen

Eine Multiplikations-Matrix hat 9 Filterkoeffizienten. Die Multiplikationsmatrix hat eine Höhe von 3 Pixeln (height=3) und eine Breite von 3 Pixeln (width=3).

static int SharpenMatrix[9] =

{ 0, -64, 0,

-64, 512, -64,

0, -64, 0 };

Da DIB-Daten im Speicher im mathematischen Koordinatensystem abgelegt werden (d.h. Y=0 ist am unteren Rand, nicht am oberen), wird die erste Zeile der Matrix auf die unterste Zeile der Bitmap angewendet.

p[x-1,y-1]

p[x-1,y]

p[x-1,y+1]

p[x,y-1]

p[x,y]

p[x,y+1]

p[x+1,y-1]

p[x+1,y]

p[x+1,y+1]

Das obige Beispiel kennzeichnet eine Filtermatrix zum Scharfzeichnen. Der Wert eines Pixels wird verdoppelt (512 entspricht 2.0) und jeweils ein Viertel der Werte der Nachbarpunkte werden subtrahiert.

Beispiel: Matrix zum Weichzeichnen

static int BlurrMatrix [9] =

  

{ 0, 32, 0,

32,128, 32,

0, 32, 0 };

Beispiel: Quellcode zum Scharfzeichnen von Photos

/* CreateSharpenedDIB

*

* Computes a new TrueColor DIB from a given TrueColor 24-Bit DIB

* with sharpened Image

*/

static int SharpenMatrix[9] =

{ 0, -64, 0,

-64, 512, -64,

0, -64, 0 };

HDIB API CreateSharpenedDIB(HDIB hDib)

{ return CreateFIRFilteredDIB(hDib, SharpenMatrix, 3, 3, 0);

}

-


Valid HTML 4.01!