AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbexperten: Farbwerte für Segmentierung finden

Ein Thema von Jazzman_Marburg · begonnen am 7. Apr 2012 · letzter Beitrag vom 8. Apr 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 22:35
Österliche Grüße, Gemeinde!

Vielleicht sind ja nicht alle beim Ostereier Suchen.
Mich plagt folgendes Problem, bei dem ich Hilfe von euch bräuchte:
Nehmen wir an, ich möchte einen Strassenabschnitt (oder irgendein anderes Segement, z.B. Karte) in Abhängigkeit der 'Begehungsanzahl' einfärben. D.h. jedemals wenn zehn Autos über dieses Segement gefahren sind, wird die Farbe geändert.
Sowiet auch kein Problem: Wenn die Straße initial schwarz ist, dann wird bei jedem zehntem Auto der RGB Wert folgender maße erhöht:
Farbe := RGB ( altR+10, altG+10, altB+10). D.h. die zunächst schwarze Strasse wird imm heller (Grauwert wird erhöht) bis sie schließlich weiss ist.
Mein Problem:
Ich suche ein Algorithmus, der für jede beliebige Farbe so funktioniert. D.h. wenn die Strasse initial rot ist (ClRed), dann soll nach jedem zehntem Auto sich der Farbwert so ändern, dass man als Betrachter eine 'Steigerung' sieht. D.h. bei ClRed könnte man nicht einfach alle drei Kanäle 'hochdrehen' -- mehr als R=255 geht ja dann nicht. Schlimmer noch, wenn initial mit 255, 255, 255 (ClWhite) gestartet wird.

Habt ihr eine Idee, wie man da verfahren würde?

Ich hoffe das Problem ist halbwegs klar: Zu jeder Farbe sollen meintegwegen mind. 10 andere 'gesteigerte' Farben gefunden werden. (Mit 'gesteigert' meine ich halt Farben, die sich von der initialen unterscheiden, aber eben 'stufenweise', so dass der Betrachter es als 'Steigerung' empfindet/sieht).

Sorry, etwas langatmig...
Lieben Dank vorab
Gruß, Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 22:43
Guck dir den Thread mal an: http://www.delphipraxis.net/88775-fa...eraendern.html
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#3

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:07
Ja, das sieht ja schon sehr interessant aus -- leider bekomme ich stahlis Projekt nicht zum Laufen:
Mit dem Farbdialog wähle ich eine Farbe, Panel1 übernimmt die Farbe, aber ein Hin-und-Her an der TrackBar verändert nix.

Hat das jamand ans Laufen bekommen?
(Ich mache bestimmt was falsch -- ich zweifle nicht an stahlis Projekt.)

Vielen Dank erstmal -- dieser Hinweis ist vielversprechend!

Gruß
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:15
Ja, ich hab es zum laufen gekriegt. Das Ganze ist leicht komplex. Da sind paar Beispiele vereint.

Aber teste mal zuerst mein Beispiel. Vielleicht reicht das schon.
  Mit Zitat antworten Zitat
Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#5

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:34
Aber teste mal zuerst mein Beispiel. Vielleicht reicht das schon.
Fast!
Das ist ein gutes Beispiel -- vielen Dank -- aber leider nur fast:
Also wenn ich als StartFarbe sowas wie ClYellow, oder ClGreen habe, und als ZielFarbe ClRed funktioniert es ganz wunderbar!
Aber, sobald ich als StartFrabe sowas wie clActiveCaption, oder clGradientInactiveCaption und der gleichen ZielFarbe (ClRed) habe, dann gehts es nimmer so gut: Es startet dann mit Schwarz und geht allmählich ins Rot -- aber ClActiveCaption ist ja nicht Schwarz.
Woher kommt die Farbe Schwarz als StartFarbe sobald es um diese Farben wie clGradientInactiveCaption geht?

Danke!
Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:46
Das liegt daran, dass solche Systemfarben das folgende Format haben:
$XX000000, wobei XX auf den Paletteneintrag verweist.

Wenn du den tatsächlichen Farbwert brauchst, musst du Delphi-Referenz durchsuchenColorToRGB verwenden. Z.B. ColorToRGB(clActiveCaption);

Geändert von Namenloser ( 7. Apr 2012 um 23:47 Uhr) Grund: quatsch...
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:46
Teste das:

Delphi-Quellcode:
function ColorMix(Col1, Col2: TColor; PercCol1: Byte): TColor;
var
  R, G, B: Integer;
begin
  if PercCol1 > 100 then PercCol1 := 100;

  Col1 := ColorToRGB(Col1);
  Col2 := ColorToRGB(Col2);

  R := Round(GetRValue(Col1) + ((GetRValue(Col2) - GetRValue(Col1)) * PercCol1 / 100));
  G := Round(GetGValue(Col1) + ((GetGValue(Col2) - GetGValue(Col1)) * PercCol1 / 100));
  B := Round(GetBValue(Col1) + ((GetBValue(Col2) - GetBValue(Col1)) * PercCol1 / 100));

  Result := RGB(R, G, B);
end;
Ich hab beide mit ColorToRGB konvertiert.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 23:47
Wie wäre es mit 32 Bit und der Nutzung des Alphakanals, an den Farbe müsste man nichts drehen und sich halt den Bereich suchen ab dem die Darstellung sinnvoll wird z.b: 128 - 255
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 22:44
Warum soll eine einfache Inkrementierung der Farbkanäle nicht funktionieren? Das einzige, worauf du achten müsstest, ist, dass du den Maximalwert 255 nicht überschreitest...

Edit: Klar, das Inkrementieren der Helligkeit geht in einem anderen System viel einfacher, da nur eine Komponente inkrementiert werden muss.. Aber ich glaube, dass sollte unter RGB auch funktionieren...

Edit2: Wobei blödsinn.. dürfte nicht gehen - (1, 0, 0) (rote Farbe) inkrementiert ergäbe eine ganz andere Farbe.. (und keinen helleren Rot-ton)

Folglich - wandle deine Farbe um, inkrementiere dort die Helligkeit und wandle letztendlich zurück um...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton ( 7. Apr 2012 um 22:47 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Farbexperten: Farbwerte für Segmentierung finden

  Alt 7. Apr 2012, 22:53
@Aphton

Nur bedingt. Kleiner Trick (ohne Gewähr), wenn man das so nennen darf, zwei Farben prozentual mischen, wobei einer der Farben Weiß ist.

//Edit:

Ich hab meine Aussage getestet und auf die Schnelle eine Funktion geprogt die zwei Farben prozentual mischt. Ist eine davon weiß, wird die Farbe heller. Nimmt man als zweite Farbe schwarz, wird es dunkler. Das Ganze scheint irgendwie zu funktionieren.

Delphi-Quellcode:
function ColorMix(Col1, Col2: TColor; PercCol1: Byte): TColor;
var
  R, G, B: Integer;
begin
  if PercCol1 > 100 then PercCol1 := 100;

  R := Round(GetRValue(Col1) + ((GetRValue(Col2) - GetRValue(Col1)) * PercCol1 / 100));
  G := Round(GetGValue(Col1) + ((GetGValue(Col2) - GetGValue(Col1)) * PercCol1 / 100));
  B := Round(GetBValue(Col1) + ((GetBValue(Col2) - GetBValue(Col1)) * PercCol1 / 100));

  Result := RGB(R, G, B);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Color := ColorMix($000080FF, clWhite, TrackBar1.Position);
end;

Geändert von Popov ( 7. Apr 2012 um 23:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
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 by Thomas Breitkreuz