Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Vignette effect (https://www.delphipraxis.net/154568-vignette-effect.html)

WojTec 18. Sep 2010 18:36

Re: Vignette effect
 
You are great! This is much faster than my method: I draw white shape on black or grey (or in other grey scale color) background, apply blur and finally blend with image - effect is powerful, but blur part is very slow if greater radius is used.

Can I ask yet one more question? Your nice brightness function generates circle - is possible to use ellipse in image orientation?

xZise 18. Sep 2010 20:58

AW: Vignette effect
 
You could also apply this on an ellipse. The main idea is, to reduce the brightness depending on the distance to the edge.
So you have the width/height and the location (x, y). Now you must change the inner/outer radius from a absolute to a relative value.

Argh :P at the moment I'm too tired to explain this complete.

Fabian

sx2008 18. Sep 2010 23:28

AW: Vignette effect
 
Delphi-Quellcode:
function CalcVignetteBrightness(X, Y: Single): Single;
var
  distance : Single;
  inner_radius, outer_radius, : Single;
begin
  inner_radius := 50;
  outer_radius := 150;
  x := x * 0.75; // <= try this

  // calculate the distance from the origin (center of the image)
  distance := SQRT(SQR(x) + SQR(Y));

turboPASCAL 19. Sep 2010 06:43

AW: Vignette effect
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mal eine Frage, sollte das Ergebnis nicht so aussehen ? (Image 1)
Bei eurer Methode kommt das dabei heraus. (Image 2)

xZise 19. Sep 2010 10:48

AW: Vignette effect
 
Moin,
hast du sein Bugfix eingebaut:
Zitat:

Zitat von sx2008 (Beitrag 1050439)
Zitat:

Zitat von WojTec (Beitrag 1050434)
Ok, working, but not exactly as should - darker should be near edges, not center as is now ;)

Hmm ,there is a little bug:
Delphi-Quellcode:
  else if distance <= outer_radius then
    // decreasing Brightness from 100% downto 0%
//    result := (distance - inner_radius) / (outer_radius - inner_radius) // wrong
    result := (outer_radius - distance) / (outer_radius - inner_radius)

MfG
Fabian

turboPASCAL 19. Sep 2010 11:45

AW: Vignette effect
 
Wie meinst du denn das ? I don't speak English.

WojTec 19. Sep 2010 12:03

Re: Vignette effect
 
X multiply something is nice, I added support for ellipse based on image oriantation. Thanks guys :)

My current slow methed I told yesterday (based on blured shape) - do you know method fast like the one by @sx2008, but with any shape (rectangle, rounded rectangle, ellipse and any other)?

PS: @sx2008, your algorithm is named?

xZise 20. Sep 2010 13:18

AW: Vignette effect
 
Zitat:

Zitat von turboPASCAL (Beitrag 1050541)
Wie meinst du denn das ? I don't speak English.

Er hat bei der Subtraktion die zwei Werte vertauscht. Die musst du auch vertauchen, damit es passt. Es ist nämlich der Faktor wie hell das Pixel ist. 1 = 100 % = ursprüngliche Helligkeit und 0 = 0 % = komplett dunkel ist der Rückgabewert.
Jetzt gibt es ein Radius der bestimmt, ab wann es nicht mehr dunkler wird. Und es gibt auch einen Radius der bestimmt ab wann es nicht mehr heller wird.

Jetzt nimmt er den Abstand dazwischen, d.h. den Radius (das steht unter den Bruch). Und zusätzlich berechnet er über den Bruch, wie weit der Punkt vom Mittelpunkt entfernt ist (distance) und setzt das in Relation zum äußeren Radius (outer_radius). Umso größer die Distanz zum Mittelpunkt umso kleiner wird der unterschied zum äußeren Radius, somit sinkt der Wert über den Bruch und damit der komplette Bruch.

Meine Theorie ist, dass du die falsche Version genommen hast, zumindest sieht das invertierte so aus.

MfG
Fabian


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz