AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schwarz = Schwarz oder doch nur 80% Schwarz?
Thema durchsuchen
Ansicht
Themen-Optionen

Schwarz = Schwarz oder doch nur 80% Schwarz?

Ein Thema von Alex_ITA01 · begonnen am 14. Aug 2007 · letzter Beitrag vom 14. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#1

Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:15
Hallo zusammen,
ich habe mal wieder ein kleines Problem.
Wenn ich mit Scanline eine Zeile in einem Bitmap analysiere bekomme ich ein Zeiger auf PRGBQuad zurück. Dieser sagt mir, wieviel grün, blau und rot in dem Pixel ist.
Ich würde jetzt gerne eine Funktion schreiben, der ich ein Toleranzwert geben kann.
Das heißt ich sage der Funktion 80% Schwarz.
Dann soll mir die Funktion ein Pixel analysieren und sagen, ob das Pixel mindestens 80% schwarz ist.
Ich hoffe ihr könnt mir da weiter helfen.
Danke
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von dajuhsa
dajuhsa

Registriert seit: 20. Apr 2007
397 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:23
schwarz hat den wert 000000. und 20% nicht schwarz (80% schwarz) vielleicht 505050. also wenn ein r-, g- oder b-wert > 50 ist oder die einzelnen werte zu weit auseinander sind: kein schwarz. ansonsten: pseudo-schwarz.
ich hoffe das klappt soweit
das Essen ist wie das Internet - Downstream ist immer angenehmer als Upstream
-
Warum missbraucht die ganze Programmierwelt Images als Paintboxen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:25
zB. RGB in YCbCr umwandeln, der Y Wert definiert die schwarz-weis Helligkeit. Dann überprüfen ob der Wert zwischen 0 bis 20% liegt.

dajuhsa Vorschlag wird nicht ganz exakt funktionieren da die Helligkeit einer gemischten Farbe auch von den Farbanteilen abhängen. Dh. ein Wert wie 0x23 für Blau ist nicht gleichhell wie der Wert 0x23 für Rot.

[edit]
Shima's nachfolgender Vorschlag macht genau das was die Umwandlung von RGB nach YCbCr macht, eben nur den Y Anteil ausrechnen.
[/edit]

Gruß Hagen
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:26
Folgende Funktion gibt die Helligkeit als Wert zwischen 0 und 255 zurück.
Die einzelnen Farbanteile werden unterschiedlich stark gewichtet (menschliches Auge ist grünempfindlich).
Delphi-Quellcode:
function Intensity(Color: TColor): Integer;
begin
  Color := ColorToRGB(Color);
  Result := GetBValue(Color) * 21 // Blue
    + GetGValue(Color) * 174 // Green
    + GetRValue(Color) * 61; // Red
  Result := Result shr 8;
end;
Wenn also die Itensität grösser als 0.2 * 255 ist, das ist der Punkt heller als "80% schwarz".
Andreas
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#5

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:32
Das bedeutet, nach deiner Funktion (shmia), dass wenn die Intensität größer als 0,6 * 255 ist, dass es sich um 40 % Schwarz handelt?

MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#6

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:43
Achso, ich habe auch kein TColor den ich übergeben kann.
Ich habe ja nur 3 Bytes die für rot, grün und blau stehen (PRBGQuad).

Wie wandel ich dann deine Funktion um?

MFg Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:46
Ja, da 60/100 = 0.6 = 60% Helligkeit identisch zu 60% Weis wäre, anteilmäßig verbleiben dann 40% Schwarz. Möchtest du 100% Schwarz haben dann heist die 0% Weis = 0% helligkeit = Intensity() = 0.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:47
RGBToColor(R,G,B):TColor

Gruß Hagen
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#9

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:48
danke schön. werde es gleich testen

Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: Schwarz = Schwarz oder doch nur 80% Schwarz?

  Alt 14. Aug 2007, 14:51
Du Kannst die Funktion auch umschreiben

Delphi-Quellcode:
function Intensity(R,G,B: Byte): Integer; overload;
begin
  Result := (R * 61 + G * 174 + B * 21) div 256;
end;
Gruß Hagen
  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 11:25 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