logo Sign In

Info: My attempt at color correcting the GOUT (Outdated thread - though lots of info)

Author
Time
 (Edited)

I thought I’d make a new thread for this, since it’s not about the blu-rays like my other thread.

What I’ve done is I tried the same thing I did with the Star Wars blu-ray, but with the GOUT-version instead, that is, I tried to make a good “one-setting” for the whole movie.

I know the GOUT is not a very good source when it comes to picture quality, but it also has a lot of things the blu-rays don’t have, like intact shadow detail and much less tweaked colors.

I’m using the PAL-version by the way.

Now you guys will be the judges whether I should continue with this or not. If people are interested, I might continue to try and find the best overall settings for the GOUT. Keep in mind that the colors are inconsistent throughout the movie, so before you say “this looks too yellow” or “that looks too blue”, consider how much that changes with the scenes. Of course you’re still free to point things out though.

My current result looks like this. (Click for full-size)

UPDATE: Now all three movies!

http://img580.imageshack.us/img580/4774/gout3red2thumbs.png

http://img840.imageshack.us/img840/8121/esb3red2thumbs.png](http://img820.imageshack.us/img820/5592/esb3red2.jpgimg820.imageshack.us/img820/5592/esb3red2.jpg”)

http://img225.imageshack.us/img225/9316/rotj3red2thumbs.png](http://img221.imageshack.us/img221/4451/rotj3red2.jpgimg221.imageshack.us/img221/4451/rotj3red2.jpg”)

Author
Time

I think it looks good so far, You_too! Is there any way a newbie like me with a digital copy of the GOUT discs can apply these settings and watch at home, either in advance or on the fly? Free is the key here. :)

Author
Time

I like how the outdoor scenes/natural lit scenes look with these adjustments especially the Ben's hut frames. I'm hoping you will continue to use your skills and good eye for correction to see what else can be done to improve the Gout. I'm also hoping at a later date you might see if a washed-out Pan and Scan laserdisc can be improved on from what you do here with the Gout...

 

Author
Time
 (Edited)

Darth Tater said:

I think it looks good so far, You_too! Is there any way a newbie like me with a digital copy of the GOUT discs can apply these settings and watch at home, either in advance or on the fly? Free is the key here. :)

You could apply the settings and watch through an avisynth script in your computer, but it requires some plugins as well.

Plugins used are MVTools or MVTools 2, (I don't remember which one but you could get both to be sure it will work) Gicocu and Selective color. (Once again a huge thanks to Darth Editous for the selective color plugin!)

If you use the raw video of Star Wars, then it's in mpeg2 and needs to be indexed, which can be done in file indexer in Megui. That will create the d2v file that the script uses.

For Gicocu you'll need my curves files which you put in the same folder as the movie, d2v file and script.

And finally, here's the script which is for the PAL-version. For NTSC you'd have to use different values for crop.

UPDATE: Two scripts, first one for SW, second for ESB and ROTJ.

Mpeg2Source("GOUT.d2v")

crop( 0, 124, 0, -124)

ConvertToYV12()

function SatMask(clip c, "Sat", float "bias", string "mode", clip "Rc", bool "lsb", bool "show"){

 bias  = string(default(bias, 5))
 mode  = string(default(mode,  "Vibrance"))
 lsb   = default(lsb,  false)
 show  = default(show, false)


lsb ? c.ditherpost(mode=6) : c

 w=width()
 h=height()
 
Assert(isclip(Sat) || isint(Sat) || isfloat(Sat),  "'Sat' only accepts float, integers or clip inputs")
Assert(w%4  == 0, "width and height must be mod 4 resolution")
Assert(h%4  == 0, "width and height must be mod 4 resolution")

fmode = isclip(Sat) ? false : (Sat>0.0 ? true : false)
a=                   mode=="Recover" ? mt_lutxy(Vtoy(Rc),Utoy(Rc),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+bias+" * ?",u=1,v=1) : nop
b= !fmode || show || mode=="Recover" ? mt_lutxy(Vtoy(),Utoy(),    "x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+bias+" * ?",u=1,v=1) : nop

 

msk  = !fmode || show ? ((mode=="Vibrance") ? mt_lutxy(Vtoy(),Utoy(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 0 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ 255 * ? ",u=1,v=1) : \
                         (mode=="Dullness") ? b                                              : \
                         (mode=="Recover")  ? mt_lutxy(a,b,"x y - abs 2 *",u=-128,v=-128)    : \
                          Assert(false, "Wrong Saturation Mode"))                            : nop
                         
show ? (lsb ? msk.Spline36Resize(w,h).Dither_convert_8_to_16() :\
              msk.Spline36Resize(w,h))                         :\
(Defined(Sat) || fmode  ?                                       \
((mode=="Vibrance") ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 256 * 32768 > x 256 * "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c)                       :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > x "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + ?",y=2,u=3,v=3)                                :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3)))                       :\
 (mode=="Dullness") ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^  256 * 32768 > x 256 * "+
                                      \+" x 128 - x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+string(sat-1)+
                                      \+" * "+bias+" / 1 + / 128 + 256 * ?",y=2,u=3,v=3),c)            :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^  128 > x "+
                                      \+" x 128 - x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+string(sat-1)+
                                      \+" * "+bias+" / 1 + / 128 + ?",y=2,u=3,v=3)                     :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3)))                       :\
 (mode=="Recover")  ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 256 * 32768 > x 256 * "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c)                       :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > x "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + ?",y=2,u=3,v=3)                                :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))): nop ) : c)}

Tweak(hue=-5)
SatMask(Sat=2.25)

ConvertToRGB32()

GiCoCu("GOUT.cur")

selectivecolour(last,\
0.65,0,0,\
-0.35,0.10,-0.05,\
0,0.75,-0.05,\
0,0,0,\
0,0,0.75,\
-0.25,0,0,\
false)

GiCoCu("GOUT3.cur")

GiCoCu("GOUT5.cur")

GiCoCu("GOUT8.cur")

GiCoCu("GOUT9.cur")

ConvertToYV12()

crop( 0, 0, 0, -2)

BicubicResize(768,326,0,0.5) # Bicubic (Neutral)

 

Mpeg2Source("ESB.d2v")

crop( 0, 124, 0, -124)

ConvertToYV12()

function SatMask(clip c, "Sat", float "bias", string "mode", clip "Rc", bool "lsb", bool "show"){

 bias  = string(default(bias, 5))
 mode  = string(default(mode,  "Vibrance"))
 lsb   = default(lsb,  false)
 show  = default(show, false)


lsb ? c.ditherpost(mode=6) : c

 w=width()
 h=height()
 
Assert(isclip(Sat) || isint(Sat) || isfloat(Sat),  "'Sat' only accepts float, integers or clip inputs")
Assert(w%4  == 0, "width and height must be mod 4 resolution")
Assert(h%4  == 0, "width and height must be mod 4 resolution")

fmode = isclip(Sat) ? false : (Sat>0.0 ? true : false)
a=                   mode=="Recover" ? mt_lutxy(Vtoy(Rc),Utoy(Rc),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+bias+" * ?",u=1,v=1) : nop
b= !fmode || show || mode=="Recover" ? mt_lutxy(Vtoy(),Utoy(),    "x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+bias+" * ?",u=1,v=1) : nop

 

msk  = !fmode || show ? ((mode=="Vibrance") ? mt_lutxy(Vtoy(),Utoy(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > 0 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ 255 * ? ",u=1,v=1) : \
                         (mode=="Dullness") ? b                                              : \
                         (mode=="Recover")  ? mt_lutxy(a,b,"x y - abs 2 *",u=-128,v=-128)    : \
                          Assert(false, "Wrong Saturation Mode"))                            : nop
                         
show ? (lsb ? msk.Spline36Resize(w,h).Dither_convert_8_to_16() :\
              msk.Spline36Resize(w,h))                         :\
(Defined(Sat) || fmode  ?                                       \
((mode=="Vibrance") ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 256 * 32768 > x 256 * "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c)                       :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > x "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + ?",y=2,u=3,v=3)                                :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3)))                       :\
 (mode=="Dullness") ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^  256 * 32768 > x 256 * "+
                                      \+" x 128 - x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+string(sat-1)+
                                      \+" * "+bias+" / 1 + / 128 + 256 * ?",y=2,u=3,v=3),c)            :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^  128 > x "+
                                      \+" x 128 - x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ "+string(sat-1)+
                                      \+" * "+bias+" / 1 + / 128 + ?",y=2,u=3,v=3)                     :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3)))                       :\
 (mode=="Recover")  ?  \
       (lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 256 * 32768 > x 256 * "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c)                       :\
                                      Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
              (fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ 128 > x "+
                                      \+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ +  .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
                                      \+" * 1 + * 128 + ?",y=2,u=3,v=3)                                :\
                                      mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))): nop ) : c)}


Tweak(hue=-5)
SatMask(Sat=1.75)

ConvertToRGB32()

GiCoCu("GOUT.cur")

selectivecolour(last,\
0.65,0,0,\
-0.35,0.10,-0.05,\
0,0.75,-0.05,\
0,0,0,\
0,0,0.75,\
-0.25,0,0,\
false)

GiCoCu("GOUT3.cur")

GiCoCu("GOUT5.cur")

GiCoCu("GOUT8.cur")

GiCoCu("GOUT9.cur")

ConvertToYV12()

crop( 0, 0, 0, -2)

BicubicResize(768,326,0,0.5) # Bicubic (Neutral)

 

Author
Time

I like this a lot more than I did your blu color corrections.  It might boil down to personal taste, though - plus, you have a different goal with the GOUT than you do with the 2011.  On the GOUT you're just going for the most pleasing look, yeah? 

This generally reminds me of LeeThorogoods earlier project, which I never did get to watch due to newsgroups...

A Goon in a Gaggle of 'em

Author
Time

bkev said:

I like this a lot more than I did your blu color corrections.  It might boil down to personal taste, though - plus, you have a different goal with the GOUT than you do with the 2011.  On the GOUT you're just going for the most pleasing look, yeah?

Actually, the goal is quite the same. I'm trying to fix the most obvious color errors and of course make it look more pleasing and balanced overall.

Just like the blu-ray, this one would require a scene by scene correction if aiming for complete balance and accuracy, but I think even here it makes a great improvement even with these settings overall.

One setting in particular that was very useful was SatMask, the long in-script function. It works like vibrance in photoshop: It increases the saturation of the least saturated colors in the picture, and since the GOUT is very desaturated overall, it did wonders to it.

bkev said:

This generally reminds me of LeeThorogoods earlier project, which I never did get to watch due to newsgroups...

Actually I never got to watch that one either, but from the screenshots I saw of the final version, that one looked much brighter, maybe to the point where whites got clipped.

Author
Time
 (Edited)

For me personally LeeThorogoods project needed further work as some of the colour levels ended up making some scenes look unreal to the point it took me out of the movie early on. It looked as though this was the result of it having one setting or not enough modulation of the settings.


This promises to be an improvement of that project if you are able to modulate further with what you already have. Which already looks impressive. 

Author
Time

By the way, here's a screenshot comparison which shows how I tried to restore the yellows, like 3PO's golden color.

Author
Time

My sense is the balance is somewhere between

 

1.

Author
Time

Here's how that shot looks with this script:

You have to keep in mind though, that those technicolor pics are photos from a camera, and can just give hints on how it should look.

Also, if I matched this scene completely to that photo, some other parts of the movie would look worse.

Author
Time

This is real tricky to get my head round but i might as well take a guess anyway.
Theyre in the desert in Tunsia and so theres this almost tropical light coming in from the window
with greens and purples which changes more to brown in the shade and corners of the room.
As the prints faded its lost some of the green and purples and looks more brown. In the Gout frame it doesnt look like theyre in Tunsia. In your corrected frame it does look like they're in Tunsia but now theres too much colour put back in. This is why all the outside shots look better in your rendering. But it needs to be more subtle now.

Well this is my guess. HELP!

Author
Time

Those look really good to my eye, maybe a tad too greenish though. Again, some scenes are better than others but still, nice work.

And in the time of greatest despair, there shall come a savior, and he shall be known as the Son of the Suns.

Author
Time

It's overall too green, but some of those shots look actually damned good ! Could you please upload a scrrenshot of the binary sunset scene ? Or R2's capture ?

Author
Time
 (Edited)

You guys are right, it all looked slightly too green.

I made some adjustments, and here's compared old to new:

I'll update with more screenshots later, and pittrek, I'll upload screenshots of those as well. :)

 

By the way, here's a comparison of Greedo from untouched GOUT vs my new settings:

Author
Time
 (Edited)

Toning down the green has definitely made it better. I think the light in ben's hut should be a touch more purple/or less blue somehow so the wall looks like its white but with the desert colours on it. It seems like boosting the colours too far can make it look like a technicolor film from the 1950s in places but this may be fixable. I realize only so much can be done on one setting without throwing out other scenes. So far though this has definitely brought the Gout to life

Author
Time
 (Edited)

One thing I want to do here is also to correct the overall gamma curve of the movie a bit.

Here's an example, a comparison of a scan from jedi1.net and a frame from GOUT with my latest settings:

The first thing you think when looking at Tarkin's face there, is that parts of his face are much more highlighted and defined in the 70mm scan. I wanna point out though, that I don't use those scans as a color reference since they're all faded in different ways and this one for example has too much cyan in the shadows.

Anyway, now I've applied a quick curve-fix for this. Top image: GOUT with my settings, bottom: added curve-fix.

Note that this is just an example though, and I tried to be a bit more subtle, like finding a middle between the scan's look and GOUT.

Now the problem this creates, is that some other scenes are suffering of white clipping and such. Here's that shot from Ben's hut again, with the same curve-fix applied:

Here's a picture showing what got clipped in that shot:

What I need to do now is to find a good balanced setting that improves that kind of definition and highlights but doesn't ruin the brighter shots.

I also want to ask you guys if you would think it's ok to sacrifice a little bit of the brightest whites if the result was more balance and definition in the rest of the image?

Author
Time

Here's how Tarkin looks in Lee Thorogood's Technicolor rendering, for comparison:

http://imageshack.us/f/543/vlcsnap2011121716h17m27.png/

I think you've brought him to life more with this adjustment, and he comes out different to Harmy's colouring as discussed in the despecialized thread, it seems this goes more in a reddish face direction than yellow (or grey)

 

 

Author
Time
 (Edited)

I've updated the screenshots at the top now with the latest settings.

I did find a balance which enhanced the faces and stuff a bit without clipping whites.

This is how Tarkin looks now, raw GOUT compared to my settings:

The reason he comes out different compared to Harmy's version is of course the source which looks very different. And since I'm making settings for the whole movie I can't pick elements out and color separately.

Here's some more comparisons:

I know the colors are a bit strong in the sunset scene, and I'll see what I can do about it with some adjustments later.