AGB  ·  Datenschutz  ·  Impressum  







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

Farbmittelwert

Ein Thema von Jonas Shinaniganz · begonnen am 3. Okt 2012 · letzter Beitrag vom 5. Okt 2012
Antwort Antwort
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

Farbmittelwert

  Alt 3. Okt 2012, 01:28
Ich habe jetzt ein bisschen in der DP geschnüffelt und fand die "kleine_version_129.exe" von "Auenkrebs" sehr amüsant. Leider hilft mir das nicht so wirklich weiter.

Mein Anliegen ist es, eine Anzahl Pixel in einem Bitmap im Farbwert zu mitteln. Sowas wie,

http://graphics32.org/documentation/...lorAverage.htm

nur mit einem "Rechteck" von Pixeln auf meinem Bitmap.

Aus diesem Mittelwert möchte Ich dann mit einer variablen Toleranz in Prozent alle Pixel auf dem Bild ausfindig machen. Die Pixel, welche in den Tolleranz Bereich fallen, werden dann zum Beispiel schwarz gezeichnet.

Wenn man im Photoshop mal den "Zauberstab" benutzt, kommt es meinen Vorstellungen schon sehr nahe, nur das keine Pixel selektiert werden sollen.

Hat jemand Erfahrung, wie man da vorgeht?

Grüße und eine schönen freien Tag.
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Farbmittelwert

  Alt 3. Okt 2012, 01:56
Und was genau ist denn nun das Problem?

Laut deiner total aussagefähigen Überschrift: "Wie berechnet man einen Mittelwert?", bzw. "Woraus besteht ein RGB-Farbwert?".
Antwort: Fra mal deinen Mathelehrer, warum er es die nicht beigebracht hat oder schau bei Wiki.



- Wie geht man alle Pixel in einem vorgegebenem Bereich (Rechteck) durch? (1-2 Schleifen)

- Wie zerlegt man einen Farbwert? (RGB, Delphi-Referenz durchsuchenGetRValue usw.)

- Wie berechnet man einen Mittelwert aus mehreren Werten. (jeden Farbkanal einzeln)

- Wie setzt man diese Farbkanäle wieder zusammen? (Delphi-Referenz durchsuchenRGB)

- Wie findet man ähnliche Farbwerte? (Ähnlichkeitsvergleich ... da mußt du dir erstmal überlegen, WAS für dich "ähnlich" ist)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#3

AW: Farbmittelwert

  Alt 4. Okt 2012, 22:59
Ich hätte mir folgendes gewünscht:

Zitat:
- Wie geht man alle Pixel in einem vorgegebenem Bereich (Rechteck) durch? (1-2 Schleifen)

Warum kein Wort über Scanline?

Zitat:
- Wie zerlegt man einen Farbwert? (RGB, Delphi-Referenz durchsuchenGetRValue usw.)

Die WinApi Funktionen kann Ich nicht benutzen (FM)

Zitat:
- Wie berechnet man einen Mittelwert aus mehreren Werten. (jeden Farbkanal einzeln)

Ich habe keine Farbkanäle da es sich um HSV/HSL Werte handelt

Zitat:
- Wie setzt man diese Farbkanäle wieder zusammen? (Delphi-Referenz durchsuchenRGB)
WinApi Funktion

Zitat:
- Wie findet man ähnliche Farbwerte? (Ähnlichkeitsvergleich ... da mußt du dir erstmal überlegen, WAS für dich "ähnlich" ist)
Ich finde $FFFFFFFF und $FFFFFFFE sind sich ähnlich der Farbe, welche Ich nach deinem Beitrag für unsere Beziehung sehe.
(Sorry der musste sein, Ich bin aber nicht Nachtragend)

Zitat:
Antwort: Fra mal deinen Mathelehrer, warum er es die nicht beigebracht hat oder schau bei Wiki.
Ich Fra deinen Mathelehrer ob du in der Schule auch so vorlaut warst.

Dankesehr.


Ich frage mich übrigens grade, wie ich einen RGB(Red,Green,Blue) Wert schlank in ein $FFFFFFFF 4Byte Hex Wert konvertiere...
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!

Geändert von Jonas Shinaniganz ( 4. Okt 2012 um 23:02 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Farbmittelwert

  Alt 4. Okt 2012, 23:44
Zitat:
- Wie findet man ähnliche Farbwerte? (Ähnlichkeitsvergleich ... da mußt du dir erstmal überlegen, WAS für dich "ähnlich" ist)
Ich finde $FFFFFFFF und $FFFFFFFE sind sich ähnlich der Farbe, welche Ich nach deinem Beitrag für unsere Beziehung sehe.
Ich hab mal ein ähnliches Problem gehabt, d. h. Farben verglichen die ähnlich sind. Das ist an für sich ein kleines Problem, da RGB Farben nicht so ohne weiteres verglichen werden können. Letztendlich habe ich das mit einem kleinem Trick gelöst. Ich weiß aber, dass es direkt so nicht geht, denn der eine Wert besteht aus mehreren Werten. Ob es mit HSV/HSL einfacher geht weiß ich nicht.

Guck dir mal meine Frage an und da vor allem die Tipps von stahli.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Farbmittelwert

  Alt 5. Okt 2012, 09:03
Ich frage mich übrigens grade, wie ich einen RGB(Red,Green,Blue) Wert schlank in ein $FFFFFFFF 4Byte Hex Wert konvertiere...
Delphi-Quellcode:
var
  r, g, b: Byte;
  myColor: TColor;
begin
  myColor := (b shl 16) or (g shl 8) or r;
end;
Zur Ähnlichkeit:
Wenn du schon im HSV/HSL Raum bist, ist's imho schon etwas einfacher Ähnlichkeit zu definieren. Da reicht es ja schon fast, Kanalweise mit etwas Toleranz heranzugehen. Beim H-Kanal würde diese dann recht klein ausfallen, bei S und V/L ggf. etwas größer. Was jetzt aber wirklich ähnlich ist, hängt einzig und allein von deiner persönlichen Einschätzung ab. Der Begriff ist nicht eindeutig definiert.

Für die Durchschnitte würde es sich hier lohnen, die HSV Werte als Koordinaten innerhalb der (Doppel-)Pyramide aufzufassen, die diese Räume aufspannen. Schau dir einfach mal den Wikipedia Artikel zu HSV an, dann wird schnell deutlich was ich meine. (Man kann theoretisch auch ganz naiv kanalweise mitteln wie bei RGB, hat aber bei H das Problem des Nulldruchgangs - es ist ja eigentlich ein Winkel.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#6

AW: Farbmittelwert

  Alt 5. Okt 2012, 09:34
Nur mal ganz kurz: man kann Farben auch zwischen den verschiedenen Farbmodellen umwandeln, ich kann Dir jetzt keine Quelle nennen (außer Google ), aber vielleicht hilft das, wenn Du ein Modell nimmst, in dem Du leichter rechnen kannst.

Grüße
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
kamel08
(Gast)

n/a Beiträge
 
#7

AW: Farbmittelwert

  Alt 5. Okt 2012, 10:40
Für den Mittelwert kannst Du folgende Funktion nutzen;
(Hab' ich jetzt nicht getestet, kommt aber aus einem anderen Projekt und wurde nur für das Posting angepasst)
Das "Rechteck" ist in diesem Fall die gesamte an die Funktion übergebene Bitmap.

Delphi-Quellcode:
  Type
    TRGB = record
         r: byte;
         g: byte;
         b: byte;
    end;

Function TForm1.FarbWerte(Bitmap:TBitmap):TRGB;
type pixarray = Array[1..3] of Byte;
var y , x, zaehler, rot, gruen, blau : Integer;
    RGB:TRGB;
    P : ^pixarray;
begin
     bitmap.PixelFormat := pf24bit;
     rot:=0; gruen:=0; blau:=0; zaehler:=0;
     RGB.r := 0; RGB.g := 0; RGB.b := 0;
     for y := 0 to BitMap.Height - 1 do
     begin
          P := BitMap.ScanLine[y];
          for x := 0 to BitMap.Width - 1 do
          begin
               Inc(zaehler);
               rot := rot + P^[3];
               gruen := gruen + P^[2];
               blau := blau + P^[1];
               Inc(P);
          end;
     end;
     // Mittelwert berechnen
     if zaehler > 0 then
     begin
          RGB.r := rot div zaehler;
          RGB.g := gruen div zaehler;
          RGB.b := blau div zaehler;
     end;
     result := RGB;
end;
Die 'Binarisierung' (Pixel innerhalb der Toleranz schwarz zeichnen) findest Du sicherlich selbst.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz