www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Delphi - mešanje barve

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Pon Dec 17, 2007 11:11 pm    Naslov sporočila:  Delphi - mešanje barve Odgovori s citatom

Pozdravljeni!

Se je že kdo ukvarjal z barvami? Jaz sem se že nekaj časa in sestavil tudi svojo knjižico: http://delphi4u.awardspace.com/projects.html
Za mešanje svetlobe se uporablja tale funkcjia:
Koda:
function GetAverageColor(C1,C2: TColor): TColor;
var
  R,G,B: byte;
begin
     C1:=ColortoRGB(C1);
     C2:=ColortoRGB(C2);
     R:=(GetRValue(C1)+GetRValue(C2)) div 2;
     G:=(GetGValue(C1)+GetGValue(C2)) div 2;
     B:=(GetBValue(C1)+GetBValue(C2)) div 2;
     Result:=RGB(R,G,B);
end;


Ampak še vedno ne vem, kako bi mešal pigmente.
Rumena+Modra=Zelena
Modra+Rdeča=Vijolična
Rdeča+Rumena=Oranžna
Modra+Rumena+Rdeča=Rjava

Ima kdo kakšno idejo, kako bi to naredil?

LP

_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Dec 18, 2007 6:44 am    Naslov sporočila:   Odgovori s citatom

Ne vem oz. ne razumem, v čem je problem. Za mešanje barv bo poskrbel tvoj barvni model -- v RGB je rdeča+zelena+modra = bela (additivni model), v CMY(K) je cyan+magenta+yellow = rjava-črna (subtraktivni model). Sicer imaš pa to že prikazano v svoji ikoni Smile RYB se pa ne uporablja kaj veliko.

Če bi v RGB (to je privzet model na računalniku) rad dobil vijolično, pač seštej enake količine modre in rdeče.

$FF0000 + $0000FF = $FF00FF

Tukaj so barve v hex, potem jih pa lahko spremeniš v TColor in uporabljaš poznane funkcije.

http://delphi.about.com/cs/adptips2001/a/bltip0301_5.htm
http://en.wikipedia.org/wiki/RGB_color_model
http://en.wikipedia.org/wiki/CMYK_color_model

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
GJ
Član
Član



Pridružen-a: Čet 02 Nov 2006 15:51
Prispevkov: 946
Aktiv.: 4.16
Kraj: Ljubljana

PrispevekObjavljeno: Tor Dec 18, 2007 12:48 pm    Naslov sporočila:   Odgovori s citatom

Barvni printer uporablja RYB, tudi pod Delphijem!

LP GJ
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Dec 18, 2007 1:22 pm    Naslov sporočila:   Odgovori s citatom

Kje si pa to videl? Lahko napišeš proizvajalca in model tiskalnika, za katerega misliš da ima RYB barve?

Zaenkrat so še vsi barvni tiskalniki, ki sem jih videl, bili CMY, CMYK ali pa mogoče kakšni CcMmYKk (ena od variant s sedmimi kartušami), kjer gre za več odtenkov iste barve, ki pripomorejo k malo boljšemu gamutu.

RYB je starina, ki se v računalništvu ne uporablja (slab gamut - ne da se prikazati zelene, cyan ...), uporabljajo se RGB, CMYK, LAB, HSB ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Tor Dec 18, 2007 1:58 pm    Naslov sporočila:   Odgovori s citatom

@ chaos:
$FF0000 + $0000FF = $FF00FF
to je mešanje svetlobe in ne pigmenta.
Jaz pa hočem mešati pigment. Če na enak način kot si ga omenil zmešamo modro in rumeno se pravi:
$FFFF00 + $0000FF =$FFFFFF dobimo belo,
a pri odštevalnem mešanju (pigmenti) bi morala priti zelena.
Torej iščem funkcijo, ki bi mešala pigment in ne svetlobo.
Vseeno hvala, za odgovor.

_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.96

PrispevekObjavljeno: Tor Dec 18, 2007 2:19 pm    Naslov sporočila:   Odgovori s citatom

MCAT je napisal/a:
@ chaos:
$FF0000 + $0000FF = $FF00FF
to je mešanje svetlobe in ne pigmenta.
Jaz pa hočem mešati pigment. Če na enak način kot si ga omenil zmešamo modro in rumeno se pravi:
$FFFF00 + $0000FF =$FFFFFF dobimo belo,
a pri odštevalnem mešanju (pigmenti) bi morala priti zelena.
Torej iščem funkcijo, ki bi mešala pigment in ne svetlobo.
Vseeno hvala, za odgovor.
Ja če se gre za odštevalni način, bi lahko bilo tudi takole:
$FFFFFF - $0000FF =$FFFF00 , da od bele odštevaš in na koncu dobiš kvečjemu črno $000000 .
Ali pa je moj odgovor na slepo brca v temo Rolling Eyes .
LP,
Igor

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Dec 18, 2007 2:58 pm    Naslov sporočila:   Odgovori s citatom

Ja za pigment (če te prav razumem) moraš uporabiti subtraktivni model - CMYK.

Google najde tole:

http://delphi.about.com/od/delphitips2007/qt/rgb_cmyk.htm
ali pa
http://forums.asp.net/p/867067/867125.aspx

S tem da je konverzija [C,M,Y] = 1-[R,G,B] mogoče nepravilna oz. netočna.
Glej http://www.faqs.org/faqs/graphics/colorspace-faq/

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 15.96

PrispevekObjavljeno: Tor Dec 18, 2007 3:01 pm    Naslov sporočila:   Odgovori s citatom

Hmmm... :
http://www.google.com/search?complete=1&hl=en&q=cmy+to+rgb&aq=t
http://www.easyrgb.com/math.php?MATH=M12

LP,
Igor

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Tor Dec 18, 2007 3:53 pm    Naslov sporočila:   Odgovori s citatom

Vem da moram uporabiti CMY, samo ne vem kako. Poskusim tole:
Koda:
function MixPigments(const Cl1,Cl2:TColor):TColor;
var
C1,M1,Y1,C2,M2,Y2:single;
begin
C1:=1 - (GetRValue(Cl1) / 255 );
M1:=1 - (GetGValue(Cl1) / 255 );
Y1:=1 - (GetBValue(Cl1) / 255 );
C2:=1 - (GetRValue(Cl2) / 255 );
M2:=1 - (GetGValue(Cl2) / 255 );
Y2:=1 - (GetBValue(Cl2) / 255 );
Result:=RGB(
round(127.5*(C1-C2)),
round(127.5*(M1-M2)),
round(127.5*(Y1-Y2)));
end;

...a pride isto kot zgoraj navedena koda.
V vsakem primeru pride modra+rumena =sivkasta , morala bi pa priti zelena.
Ali lahko kdo napiše kodo po takem vzorcu oz. podobnemu.



mixing.txt
 Opis:
Tole je seznam barv in kako se mešajo. Naredil sem s pomočjo printerja.

Download
 Ime datoteke:  mixing.txt
 Velikost datoteke:  1.28 KB
 Downloadano:  8 krat


_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.65
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Dec 18, 2007 4:13 pm    Naslov sporočila:   Odgovori s citatom

Ali si že pogledal delphi help: Windows SDK (help za SDK, ne za delphi).

Za RGB, CMY , color .... pove pravzaprav vse.

Jur



tmp.JPG
 Opis:
 Velikost datoteke:  33.91 KB
 Pogledana:  3 krat

tmp.JPG


Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Tor Dec 18, 2007 5:21 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa naj bi pisalo, ker jaz nisem zasledil nič o CMY.
_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Tor Dec 18, 2007 5:53 pm    Naslov sporočila:   Odgovori s citatom

V CMYK modelu so barve predstavljene kot procenti (ali vrednosti med 0 in 1), zato jih seštevaš -> 100% C + 50 % M + 50% M + 100% Y = (skoraj) črna. Predstavljaj si, kako dela tiskalnik. Imaš bel izvor svetlobe in bel list papirja. Bolj boš nanašal barvo na ta papir, manj belega papirja se bo videlo, čedalje več svetlobe bo sfiltrirane ... če bi na list nanesel vse barve 100%, bi bila svetloba popolnoma sfiltrirana in bi videl črno površino.

Kot sem pa napisal je tista konverzija 1-RGB zelo poenostavljena, upoštevati je treba še cel kup stvari, npr. gamute obeh modelov, nelinearnost, vsaka komponenta CMYK je v rsnici odvisna od vseh RGB komponent ...

Verjetno bi bilo res pametno pogledat, če ima win api kakšne funkcije za konverzijo, ki bi uporabljaje v windows vgrajen color management, ki bi bolje znal pretvarjati barve.

Ne sme se tudi pozabiti, da sta oba modela -- RGB in CMYK odvisna od naprave, na kateri se uporabljata, zato ne moreš narediti univerzalne pretvorbe ...

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Pet Dec 21, 2007 11:37 pm    Naslov sporočila:   Odgovori s citatom

V primeru, če je podlaga 100% bela, svetloba na podlago pa 100% svetloba. Kakšna bi bila v tem primeru formula za mešanje pigmenta?
_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.64
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sob Dec 22, 2007 3:09 pm    Naslov sporočila:   Odgovori s citatom

MCAT je napisal/a:
V primeru, če je podlaga 100% bela, svetloba na podlago pa 100% svetloba. Kakšna bi bila v tem primeru formula za mešanje pigmenta?


Formula je v vsakem primeru ista - barve, pigmenti se seštevajo. Barva svetlobe in papirja na samo mešanje (enačbe) nima vpliva, čeprav je jasno, da bo dejansko vplivala na barvo.

Samo mešanje ni noben problem, problem je prikaz takih barv na izhodni napravi, kjer je potrebno upoštevati barvne profile in pa seveda pretvorba med različnimi barvnimi modeli.

Če bi rad samo malo računal in pretvarjal v / iz CMYK modela, uporabi v tej temi napisane enačbe. Če bi rad imel verno reprodukcijo / konverzijo / prikaz barv, si po moje zagrabil preveliko žlico. Za primer si lahko pogledaš GIMP, linuxovski program za obdelavo slik, ki še kar nima podpore za CMYK. Verjemi mi, da razlog ni lenoba programerjev ...

Mislim da so ti zdaj vsaj osnove jasne, za bolj resne oz. specifične stvari ti svetujem, da stopiš v kontakt s kakšnim grafikom, ALU-jcem ali kom podobnim, ki bi ti znal bolj detajlno razložiti probleme. Ali pa uporabiš internet -- bi se dalo najti še kakšne dodatne informacije:

http://en.wikipedia.org/wiki/CMYK_color_model
http://en.wikipedia.org/wiki/CcMmYK_color_model
http://en.wikipedia.org/wiki/Spot_color
http://en.wikipedia.org/wiki/Color
http://en.wikipedia.org/wiki/Color_theory
http://en.wikipedia.org/wiki/Additive_color
http://en.wikipedia.org/wiki/Subtractive_color
http://en.wikipedia.org/wiki/Lab_color_space
http://en.wikipedia.org/wiki/RGB_color_space
...


LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MCAT
Član
Član



Pridružen-a: Ned 18 Nov 2007 22:06
Prispevkov: 306
Aktiv.: 1.43
Kraj: Moravče (JN76JD)

PrispevekObjavljeno: Pon Jan 28, 2008 4:31 pm    Naslov sporočila:  RYB Odgovori s citatom

Nekaj časa sem razmišljal in povprašal par ljudi in na koncu dobil rezultat.
Sestavil sem forumulo za RYB. Ker je še trenutno "stogo zaupna" Wink pošiljam samo shemo 3d prostora.



3d.PNG
 Opis:
 Velikost datoteke:  67.87 KB
 Pogledana:  3 krat

3d.PNG



_________________
Gregor, S53SL
Think out of .
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 9 dni


Powered by phpBB © 2001, 2005 phpBB Group