Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > Calculating Interlaced Colors
2006-01-11 14:34
MRT
Account closed

Registered: Sep 2005
Posts: 149
Calculating Interlaced Colors

Maybe this should be in the pixeling forum, but it occurred to me that there might be some other coder who has done some image cross-converter and had the same problem...

How does one calculate the outcomming interlace colors, when mixing two (or more) native VIC colors

What I've done so far is adding the RGB values of color A to the RGB values of color B and then deviding the results by 2... but, when I display the interlaced colors on the C64 the outcome is not as I predicted...

So, simply adding all values and deviding them by 2 isn't the sollution.

Also, capturing an interlaced image and then sampling the result is also a no-no because there is no accurate way of capturing an interlaced image (as far as I know)

Anyone got some smart ideas for this?


2006-01-11 14:43
Graham
Account closed

Registered: Dec 2002
Posts: 990
There are multiple problems with that. For example there is a nonlinearity on display. An RGB value of $C0C0C0 is not twice as bright as $606060.
2006-01-11 14:50
MRT
Account closed

Registered: Sep 2005
Posts: 149
True... I found that out the hard way... :-)

For example...
The colors MedGray (12) and LightGray (15) are LESS bright then the mixed colors Black (0) and White (1)
2006-01-11 17:20
Twoflower

Registered: Jan 2002
Posts: 434
There's really only one way to find this out - by testing out the interlaced colors in practice, on both old and newer VIC's. A good way to see how it works is to do it on the real thing and make 2x2 chars squares with different interlaced colors and place them besides eachother. The good old eye will spot the differences in a flash. Since colors works so differently on the real thing with an oldfashioned TV or monitor, this is one of the things which are essential to check out on the real machine.

The colors will also differ depending on the technique of the interlacing. Often you'll find that the colors will be percieved different. I guess this have something to do with how PAL works or sth. Better ask Graham about it. :-)

I'm quite sure that this isn't of much help for you, but my point is that interlaced colors on the C64 are quite hard to "calculate". Just experience the mixes and make tables out of visual luminosity/color and use these. A good trick to use is the "make everything green" button, which atleast I have on my Philips monitor.
2006-01-11 19:09
MRT
Account closed

Registered: Sep 2005
Posts: 149
:-)

What if I told you I was color-blind... :-)

But still... If I could see all colors, then I would still need the RGB values if I want to use it for a cross-platform image converter.

Is the Project 1 tool also able to create interlaced images?
2006-01-11 20:09
Oswald

Registered: Apr 2002
Posts: 5094
P1 doesnt cares of lace colors. laced pics are handled as straight 320x200.
2006-01-11 23:28
A Life in Hell
Account closed

Registered: May 2002
Posts: 204
Quote: Maybe this should be in the pixeling forum, but it occurred to me that there might be some other coder who has done some image cross-converter and had the same problem...

How does one calculate the outcomming interlace colors, when mixing two (or more) native VIC colors

What I've done so far is adding the RGB values of color A to the RGB values of color B and then deviding the results by 2... but, when I display the interlaced colors on the C64 the outcome is not as I predicted...

So, simply adding all values and deviding them by 2 isn't the sollution.

Also, capturing an interlaced image and then sampling the result is also a no-no because there is no accurate way of capturing an interlaced image (as far as I know)

Anyone got some smart ideas for this?




The key is that one needs to do the colour mixing calculation in gamma-1.0 space, not the gamma 2.2 that a pal tv has (or is it 2.4... whatever). This is actually true of dithering as well, btw.

A quick paste from my conversion tool (note that you can do this in integer space, but you will lose quality!)

double palGamma=2.2;
double srcGamma=2.2;
#define dstGamma 1.0f

#define gamma(in) (pow(((in)/256.0), dstGamma/srcGamma)*256.0)
#define igamma(in) (pow(((in)/256.0), srcGamma/dstGamma)*256.0)


How I handle this in my conversion tool is by converting all RGB colours incoming from their appropriate gamma (I'm assuming 2.2, though i've heard 2.4 and 2.8 from other people) and doing all comparisons in that space - and it gives quite good results (look at http://dspaudio.com/~jaymz/miho-1.prg and http://dspaudio.com/~jaymz/miho-1a.prg for an example... eci mode, tho, which has odd colour limits, heh).

I probably should slap a UI on it and release it, but laziness, you know :)

One other note: You should do _all_ of your comparisons in the YUV space, not the RGB space - you will end up with much more accurate colour representation. This also allows you to have a luma:chroma tradeoff variable, which can assist on making some pictures come out as not grey blobs of mess :)
2006-01-12 08:53
Oswald

Registered: Apr 2002
Posts: 5094
hm never heard of gamma space, do you have still color information there ?
2006-01-12 10:35
chatGPZ

Registered: Dec 2001
Posts: 11386
another problem is that RGB is a different colorspace than what the C64 (or PAL for that matter) works in, so transforming the colors to YUV helps aswell. check http://hitmen.c02.at/html/yuvcolorspace.html for some basic info. also if you are writing a converter, using YUV for finding the closest C64 color gives a LOT better results than doing the same in RGB (find closest luminance, then choose one of two colors).

uhm. alih wrote the same. whatever :=D
2006-01-12 11:01
spinal
Account closed

Registered: Jan 2005
Posts: 47
Iv done some color mixing in the past (not with c64 though)

what i did, was minus color two's RGB from color one's RGB.
Hals the values, then add them to color one. This should give you the mixed version of those two colors.
2006-01-12 11:03
Graham
Account closed

Registered: Dec 2002
Posts: 990
PAL has a gamma of 2.8 (though in practice often ~2.5 is used)
NTSC has a gamma of 2.2
VGA has a gamma of 1.8
other displays often don't have any defined gamma value.

http://people.ee.ethz.ch/~buc/brechbuehler/mirror/color/GammaFA..
2006-01-12 12:01
MRT
Account closed

Registered: Sep 2005
Posts: 149
@spinal:
What do you mean by "Hals the values"???
2006-01-12 13:22
chatGPZ

Registered: Dec 2001
Posts: 11386
another thing to considerate are out of gamut colors.... eg PAL can not display perfect black (rgb 0:0:0) at all.

@spinal: mixing two rgb colors is as easy as taking the average from their rgb components, what you are saying does pretty much the same, just more complicated :=)
2006-01-12 17:10
Oswald

Registered: Apr 2002
Posts: 5094
groepaz,

RGB -> YUV
Y = 0.299*Red+0.587*Green+0.114*Blue
U = -0.147*Red-0.289*Green+0.436*Blue
V = 0.615*Red-0.515*Green-0.100*Blue

YUV -> RGB
Red = Y+0.000*U+1.140*V
Green = Y-0.396*U-0.581*V
Blue = Y+2.029*U+0.000*V

to me it seems like rgb -> yuv, or yuv->rgb makes possible to convert a 0,0,0 color to all directions. So for black the 2 system seems to be the same.

I dont think that comparing colors in this or that color space can be the holy grail of converting. All have their advantages. An algorithm alone wont be as good as an algorithm with human interaction (setting different treshholds, preparing the picture with contrast, saturation, etc tweakings.)

Using a color space where you have HUE informations seems to make more sense, but this also might depend from picture to picture. Sometimes considering the HUE, sometimes Brightness might give better results.

At the end what really counts IMHO, is that how close most of the colors in the original picture are to c64 colors. If they are quite off no matter what, c64 colors cant represent it nicely. (I had my share of trouble trying to convert pictures with little contrast, and most colors very close to eachother, it wont work believe me)



2006-01-12 18:22
JackAsser

Registered: Jun 2002
Posts: 2014
@oswald: It's how YUV is used in the PAL signal that matters. Luminance is clipped to 16-236 and for chrominance it's clipped to 16-240. I don't remeber the reason completly, but I suspect it's done to make the bursts (for syncs) to be 100% unique in the signal.

2006-01-12 19:40
chatGPZ

Registered: Dec 2001
Posts: 11386
@oswald: please read up on color spaces, gamut, gamma and all that jizz. it *does* make a difference. and as for converting c64 pictures, using yuv instead of rgb makes a *huge* difference. trust me, i've done a lot of experimenting in that area. if you use rgb color matching, pictures almost always get that typical converter look. if you use yuv that can be reduced a lot, and you get nice c64-like gradients. try it. then after you tried, look at some old rayden pics. OOOOOPS .=P

as a sidenote, picking nearest luminance first, then closest color is exactly what (decent) graphic artists do intuitivly (? orthographie ahoi!) when working around color clashes - infact deekay suggested that when i was working on my converter, and it works extremely well. the human eye works the same - its a lot more sensitive to luminance than color, so a single pixel with wrong luminance is a lot more disturbing than a single pixel with wrong color.

@jackasser: yes, "pure" black is used for sync signals (as in color burst) and 100% white was removed to get rid of too much crosstalk to the audio signal (you still notice it on badly adjusted tuners, but its by far less than it would be with 100% white allowed)
2006-01-14 10:06
spinal
Account closed

Registered: Jan 2005
Posts: 47
@ MRT - Half the values, sorry.
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Raf/Vulture Design
Alakran_64
slimeysmine
BYB/Hokuto Force
Martin Piper
BlackJack/Civitas
Mike
Guests online: 176
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 The Demo Coder  (9.6)
6 Edge of Disgrace  (9.6)
7 What Is The Matrix 2  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.7)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 X-Mas Demo 2024  (9.5)
7 Dawnfall V1.1  (9.5)
8 Rainbow Connection  (9.5)
9 Onscreen 5k  (9.5)
10 Morph  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.3)
Top Crackers
1 Mr. Z  (9.9)
2 Antitrack  (9.8)
3 OTD  (9.8)
4 Fungus  (9.8)
5 S!R  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.063 sec.