logo Sign In

You_Too

User Group
Members
Join date
23-Sep-2011
Last activity
23-Jun-2025
Posts
1,164

Post History

Post
#576523
Topic
Info: Digging up those blacks - using the STAR WARS Blu-ray for preservations
Time

TServo2049 said:

I'm absolutely not faulting you, Y_T - the red information in the transfer is just that screwed up.

No, of course I understand you're not! It sure is screwed up.

frank678 said:

Can someone help me with my knowledge on this - how much of the blu-ray redness is red damage/red shift now in the original damaged negative and how much is redness boosted in the color correction moves done by Lucasfilm.

It is all by Lucasfilm. They call it "George's vision".

Check this, a 70mm frame:

And the same from the blu-ray:

Now let's compare the part at the upper left:

In the original it can clearly be seen that there's no red clipping. You can see that the red light shines through some glass/plastic which has it's own reflection. In the blu-ray the red light shines stronger than the reflection on the outside of it.

EDIT:

Thought about another thing that shows it even more.

Harmy posted this re-timed 70mm frame in the color timing thread, which should look like the original technicolor version:

Here's the same from the blu-ray:

Post
#576486
Topic
Info: Digging up those blacks - using the STAR WARS Blu-ray for preservations
Time

frank678 said:

For those that don't know how to run scripts could you post up a frames of each just to see how much you can dig out of the Blu-ray source (not for feedback purposes since they are experimental scripts)

Script 1 gallery

Script 2 gallery

(If you want to see them full-sized, click "direct links" on the right side and paste in notepad, then you can use those as links for the full images.)

I also want to point out again before anybody criticizes the colors in these new scripts, that they're just experimental scripts I wrote kinda fast when I had nothing else to do some weeks ago. I know the shadows are blue and all that. I simply did that to try and replicate what I've seen in the shots from the Senator and what Harmy posted in the color timing thread.

And most likely I won't be updating these scripts for a long time. There is much work ahead on DJ's Blu V2.

 

About lobster-man: It was simply something that happened due to the red boost applied to the special edition. Someone at Lucasfilm apparently thought the movie didn't have enough red so they boosted them so much that the brightest reds got clipped, and skintones would sometimes appear too saturated, as with this guy.

Here's how he looks in the raw blu-ray:

And just for fun, here's the same using the first of the two experimental scripts, which is my favorite of those scripts. :)

Post
#576289
Topic
Info: Digging up those blacks - using the STAR WARS Blu-ray for preservations
Time

Well, the settings I posted here back then are very outdated now.

Having better references now, I'm sure I could do better if I remade the settings today. Currently I'm a bit too busy to do it though.

Here's an experimental script I made a while ago, trying to make make the movie look more like the technicolor version:

DirectShowSource("Starwars.mkv") # Replace with the filename of the movie.

ConvertToRGB32()

GiCoCu("BD1.cur")

selectivecolour(last,\
0,-0.05,0,\
-0.4,0,0,\
-0.05,0.25,0,\
0,0.5,-0.5,\
0,0,0,\
-0.25,-0.5,0,\
false)

GiCoCu("BD4.cur")

ConvertToYV12()

 

Function SelSah_v3 (clip clp, float "Sat", float "Hue", int "Luma_Low", int "Luma_High", int "Low_OS", int "High_OS",
\                    Float "minSat", float "maxSat", float "startHue", float "endHue", float "interp", clip "clp2", 
\                    bool "Exclude", bool "Preview") 
{

#  Extends Tweak to allow selective control of saturation and hue over a defined luma range. 
#  Assembled by WorBry. MaskTools computations kindly provided by Didee. Thanks to Gavino for advice on script syntax.   
#  Requires YV12 clp input and assumes full (pc) luma range 0-255.
#  Requires MaskTools v2. Tweak should be v2.58 or higher.
#
#  Parameters:
#  Clp       - Is the input clip that will be processed.
#  Clp2      - Provides option to use a second clip with different luma curve for the saturation/hue control.
#  Sat       - Saturation. Desaturation 0.0 =< 1.0 > Increased saturation. See Tweak 2.58 doc 
#  Hue       - Hue. Range -180 to +180. Default 0.0. See Tweak 2.58 doc 
#  startHue  - See Tweak 2.58 doc for details. Range 0 - <360. Default 0 
#  endHue    - See Tweak 2.58 doc for details. Range >0 - 360. Default 360
#  minSat    - See Tweak 2.58 doc for details. Range 0 - <150 ; must be < MaxSat. Default 0
#  maxSat    - See Tweak 2.58 doc for details. Range >0 -150. Default 150
#  interp    - See Tweak 2.58 doc for details. Range 0 - 32. Default 16
#  Luma_Low  - Lower luma range point. Range 0 - 255*  Default 0
#  Luma_High - Upper luma range point. Range 0 - 255*  Default 255
#  Low_OS    - Lower over-shoot point. Provides soft roll-off at lower range boundary. Range 0 - 255*
#              Default is Luma_Low+20 for normal (inclusive) range mode and Luma_low-20 for Exclude mode. 
#  High_OS   - Upper over-shoot point. Provides soft roll-off at upper range boundary. Range 0 - 255*
#              Default is Luma_High-20 for normal (inclusive) mode and Luma_High+20 for Exclude mode.
#  Exclude     True/False. True excludes the range selected by the luma set points. False (default) includes the selected range.  
#  Preview   - True/False. True gives preview of input clip, output and luma masks with original and output chroma.
#              Default is false

#  *Note: the luma set points are limited with respect to each other to ensure correct orientation and avoid overlap.   
#
#Defaults:
Sat       = default(Sat, 1.0)
Hue       = default(Hue, 0.0)
startHue  = default(startHue, 0)
endHue    = default(endHue, 360)
minSat    = default(minSat, 0)
maxSat    = default(maxSat, 150)
interp    = default(interp, 16) 
Exclude   = default(Exclude, False)
Luma_Low  = default(Luma_Low, 0.0)
Luma_High = default(Luma_High, 255) 
Low_OS    = Exclude ? default(Low_OS,  Luma_Low + 20)
\         : default(Low_OS,  Luma_Low - 20)   
High_OS   = Exclude ? default(High_OS, Luma_High - 20)
\         : default(High_OS, Luma_High + 20)
clp2      = default(clp2, clp)
Preview   = default(Preview, False)        
#
#Limits: 
Sat       = Sat <0.0 ? 0.0 : Sat
Hue       = Hue <-180 ? -180 : Hue > 180 ? 180 : Hue
Luma_Low  = Luma_Low  <0.0 ? 0.0 : Luma_Low  >255 ? 255 : Luma_Low
Luma_High = Luma_High <0.0 ? 0.0 : Luma_High >255 ? 255 : Luma_High
Low_OS    = Exclude &&  Low_OS \         : Exclude &&  Low_OS > High_OS ? ((Luma_Low + Luma_High)/2)                 
\         : Low_OS  <0.0 ? 0.0 : Low_OS >Luma_Low ? Luma_Low : Low_OS      
High_OS   = Exclude &&  High_OS >Luma_High ? Luma_High
\         : Exclude && High_OS < Low_OS ? ((Luma_Low + Luma_High + 2)/2)
\         : High_OS 255 ? 255 : High_OS
#
#Limits for startHue, endHue, minSat and maxSat set by Tweak 
#
#Create Saturation and Hue control clip:
twclp = clp2.tweak(sat=Sat, hue=Hue, startHue=startHue, endHue=endHue,
\       minSat=minSat, maxSat=maxSat, interp=interp, coring=false)
#
#Create luma mask with low/high range points and roll-off gradient at boundaries:  
#"Include" [0]<-black->[Low_OS]<-gradient->[Luma_Low]<-white->[Luma_High]<-gradient->[High_OS]<-black->[255]
#"Exclude" [0]<-white->[Luma_Low]<-gradient->[Low_OS]<-black->[High_OS]<-gradient->[Luma_High]<-white->[255]
#
Low_OS    = string(Low_OS) Luma_Low  = String(Luma_Low)
Luma_High = String(Luma_High) High_OS = String(High_OS)
#Create "Include" range expression for mask:
blkI      = "x "+Low_OS+" < x "+High_OS+" > | 0 "
whtI      = "x "+Luma_Low+" >= x "+Luma_High+" <= & 255 "
grLI      = "x "+Luma_Low+" < 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHI      = "x "+Luma_High+" > 255 1 x "+Luma_High+" - "+High_OS+" "+Luma_High+" - / - * "
exprI     = blkI + whtI + grLI + grHI + "x ? ? ? ?"
#Create "Exclude" range expression for mask:
blkE      = "x "+Low_OS+" >= x "+High_OS+" <= & 0 "
whtE      = "x "+Luma_Low+" < x "+Luma_High+" > | 255 "
grLE      = "x "+Low_OS+" <= 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHE      = "x "+Luma_High+" < 255 x "+High_OS+" - "+Luma_High+" "+High_OS+" - / * "   
exprE     = blkE + whtE + grLE + grHE +  "x ? ? ? ?"
#Luma Mask (greyscale for output):
lmask     = twclp.mt_lut(expr = (Exclude ? ExprE : ExprI))
lmaskg    = lmask.Greyscale()
# Apply luma mask:
Output    = mt_merge(clp,twclp,lmaskg,luma=true,Y=2,U=3,V=3)
#
#PREVIEW set-up
clps      =clp.Subtitle("Original Clip").LanczosResize(640,360)
outs      =output.Subtitle("Final Output").LanczosResize(640,360)
#Luma Mask with chroma from tweaked clp
lmcts     = lmask.Subtitle("Luma mask + Tweaked Chroma").LanczosResize(640,360)
#Luma Mask with chroma from original clp
lmcc      = Exclude ? clp2.mt_lut(expr=ExprE) : clp2.mt_lut(expr=exprI) 
lmccs     = lmcc.Subtitle("Luma Mask + Original Chroma").LanczosResize(640,360)
#Create composite view
Clpout    = StackVertical(clps,outs)
Masks     = StackVertical(lmccs, lmcts)
Prev      = StackHorizontal(Clpout,Masks)
#
Final     = Preview ? Prev : Output
#
Return(Final)

}


SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)


ConvertToRGB32()

GiCoCu("BDtech.cur")

selectivecolour(last,\
0.2,0,0,\
0,0.05,-0.05,\
0,0.20,0,\
0,0,0,\
0,0,0,\
-0.25,-0.5,0,\
false)

GiCoCu("BDtech2.cur")

Levels(0, 0.85, 255, 0, 255)

ConvertToYV12()

 

You'll need the custom curve files for this script. (and the following one)

Here's an alternate version of the script, aimed more for the 70's projection look as seen in Mike Verta's photos he posted:

DirectShowSource("Starwars.mkv") # Replace with the filename of the movie.

ConvertToRGB32()

GiCoCu("BD1.cur")

selectivecolour(last,\
0,-0.05,0,\
-0.4,0.3,0,\
-0.05,0.25,0,\
0,0.5,-0.5,\
0,0,0,\
-0.25,-0.5,0,\
false)

GiCoCu("BD4.cur")

ConvertToYV12()

 

Function SelSah_v3 (clip clp, float "Sat", float "Hue", int "Luma_Low", int "Luma_High", int "Low_OS", int "High_OS",
\                    Float "minSat", float "maxSat", float "startHue", float "endHue", float "interp", clip "clp2", 
\                    bool "Exclude", bool "Preview") 
{

#  Extends Tweak to allow selective control of saturation and hue over a defined luma range. 
#  Assembled by WorBry. MaskTools computations kindly provided by Didee. Thanks to Gavino for advice on script syntax.   
#  Requires YV12 clp input and assumes full (pc) luma range 0-255.
#  Requires MaskTools v2. Tweak should be v2.58 or higher.
#
#  Parameters:
#  Clp       - Is the input clip that will be processed.
#  Clp2      - Provides option to use a second clip with different luma curve for the saturation/hue control.
#  Sat       - Saturation. Desaturation 0.0 =< 1.0 > Increased saturation. See Tweak 2.58 doc 
#  Hue       - Hue. Range -180 to +180. Default 0.0. See Tweak 2.58 doc 
#  startHue  - See Tweak 2.58 doc for details. Range 0 - <360. Default 0 
#  endHue    - See Tweak 2.58 doc for details. Range >0 - 360. Default 360
#  minSat    - See Tweak 2.58 doc for details. Range 0 - <150 ; must be < MaxSat. Default 0
#  maxSat    - See Tweak 2.58 doc for details. Range >0 -150. Default 150
#  interp    - See Tweak 2.58 doc for details. Range 0 - 32. Default 16
#  Luma_Low  - Lower luma range point. Range 0 - 255*  Default 0
#  Luma_High - Upper luma range point. Range 0 - 255*  Default 255
#  Low_OS    - Lower over-shoot point. Provides soft roll-off at lower range boundary. Range 0 - 255*
#              Default is Luma_Low+20 for normal (inclusive) range mode and Luma_low-20 for Exclude mode. 
#  High_OS   - Upper over-shoot point. Provides soft roll-off at upper range boundary. Range 0 - 255*
#              Default is Luma_High-20 for normal (inclusive) mode and Luma_High+20 for Exclude mode.
#  Exclude     True/False. True excludes the range selected by the luma set points. False (default) includes the selected range.  
#  Preview   - True/False. True gives preview of input clip, output and luma masks with original and output chroma.
#              Default is false

#  *Note: the luma set points are limited with respect to each other to ensure correct orientation and avoid overlap.   
#
#Defaults:
Sat       = default(Sat, 1.0)
Hue       = default(Hue, 0.0)
startHue  = default(startHue, 0)
endHue    = default(endHue, 360)
minSat    = default(minSat, 0)
maxSat    = default(maxSat, 150)
interp    = default(interp, 16) 
Exclude   = default(Exclude, False)
Luma_Low  = default(Luma_Low, 0.0)
Luma_High = default(Luma_High, 255) 
Low_OS    = Exclude ? default(Low_OS,  Luma_Low + 20)
\         : default(Low_OS,  Luma_Low - 20)   
High_OS   = Exclude ? default(High_OS, Luma_High - 20)
\         : default(High_OS, Luma_High + 20)
clp2      = default(clp2, clp)
Preview   = default(Preview, False)        
#
#Limits: 
Sat       = Sat <0.0 ? 0.0 : Sat
Hue       = Hue <-180 ? -180 : Hue > 180 ? 180 : Hue
Luma_Low  = Luma_Low  <0.0 ? 0.0 : Luma_Low  >255 ? 255 : Luma_Low
Luma_High = Luma_High <0.0 ? 0.0 : Luma_High >255 ? 255 : Luma_High
Low_OS    = Exclude &&  Low_OS \         : Exclude &&  Low_OS > High_OS ? ((Luma_Low + Luma_High)/2)                 
\         : Low_OS  <0.0 ? 0.0 : Low_OS >Luma_Low ? Luma_Low : Low_OS      
High_OS   = Exclude &&  High_OS >Luma_High ? Luma_High
\         : Exclude && High_OS < Low_OS ? ((Luma_Low + Luma_High + 2)/2)
\         : High_OS 255 ? 255 : High_OS
#
#Limits for startHue, endHue, minSat and maxSat set by Tweak 
#
#Create Saturation and Hue control clip:
twclp = clp2.tweak(sat=Sat, hue=Hue, startHue=startHue, endHue=endHue,
\       minSat=minSat, maxSat=maxSat, interp=interp, coring=false)
#
#Create luma mask with low/high range points and roll-off gradient at boundaries:  
#"Include" [0]<-black->[Low_OS]<-gradient->[Luma_Low]<-white->[Luma_High]<-gradient->[High_OS]<-black->[255]
#"Exclude" [0]<-white->[Luma_Low]<-gradient->[Low_OS]<-black->[High_OS]<-gradient->[Luma_High]<-white->[255]
#
Low_OS    = string(Low_OS) Luma_Low  = String(Luma_Low)
Luma_High = String(Luma_High) High_OS = String(High_OS)
#Create "Include" range expression for mask:
blkI      = "x "+Low_OS+" < x "+High_OS+" > | 0 "
whtI      = "x "+Luma_Low+" >= x "+Luma_High+" <= & 255 "
grLI      = "x "+Luma_Low+" < 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHI      = "x "+Luma_High+" > 255 1 x "+Luma_High+" - "+High_OS+" "+Luma_High+" - / - * "
exprI     = blkI + whtI + grLI + grHI + "x ? ? ? ?"
#Create "Exclude" range expression for mask:
blkE      = "x "+Low_OS+" >= x "+High_OS+" <= & 0 "
whtE      = "x "+Luma_Low+" < x "+Luma_High+" > | 255 "
grLE      = "x "+Low_OS+" <= 255 x "+Low_OS+" - "+Luma_Low+" "+Low_OS+" - / * "
grHE      = "x "+Luma_High+" < 255 x "+High_OS+" - "+Luma_High+" "+High_OS+" - / * "   
exprE     = blkE + whtE + grLE + grHE +  "x ? ? ? ?"
#Luma Mask (greyscale for output):
lmask     = twclp.mt_lut(expr = (Exclude ? ExprE : ExprI))
lmaskg    = lmask.Greyscale()
# Apply luma mask:
Output    = mt_merge(clp,twclp,lmaskg,luma=true,Y=2,U=3,V=3)
#
#PREVIEW set-up
clps      =clp.Subtitle("Original Clip").LanczosResize(640,360)
outs      =output.Subtitle("Final Output").LanczosResize(640,360)
#Luma Mask with chroma from tweaked clp
lmcts     = lmask.Subtitle("Luma mask + Tweaked Chroma").LanczosResize(640,360)
#Luma Mask with chroma from original clp
lmcc      = Exclude ? clp2.mt_lut(expr=ExprE) : clp2.mt_lut(expr=exprI) 
lmccs     = lmcc.Subtitle("Luma Mask + Original Chroma").LanczosResize(640,360)
#Create composite view
Clpout    = StackVertical(clps,outs)
Masks     = StackVertical(lmccs, lmcts)
Prev      = StackHorizontal(Clpout,Masks)
#
Final     = Preview ? Prev : Output
#
Return(Final)

}


SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)


ConvertToRGB32()

GiCoCu("BDtech.cur")

selectivecolour(last,\
0.2,0,0,\
0,0.05,-0.05,\
0,0.20,0,\
0,0,0,\
0,0,0,\
-0.25,-0.5,0,\
false)

ConvertToYV12()

SelSah_v3(Luma_Low=0, Luma_High=25, startHue=310, endHue=80, Sat=0.50)

ConvertToRGB32()

Levels(0, 0.90, 255, 0, 255)

selectivecolour(last,\
0,0,0,\
0,0,-0.1,\
0,0.5,0,\
0,0,0,\
0,0,0.2,\
0,0,0,\
false)

GiCoCu("technew.cur")

Levels(0, 0.90, 255, 0, 255)

ConvertToYV12()

 

And note that these are only experimental scripts. They will have their ups and downs. Feel free to play around with them and change settings. :)

By the way, for those who wants to make sure the scripts work like they should, get this file.

I've included my whole plugins folder for avisynth there, which should usually be put in C:\Program files (x86)\AviSynth 2.5\

I've also included some system files. The latest version of avisynth which is also the most stable version I've come across, and a couple other files which are used by avisynth and it's plugins. If you have a 32-bit OS, put them in C:\Windows\System32\  , in 64-bit OS, put them in C:\Windows\SysWOW64\

Post
#574952
Topic
Info &amp; Info Wanted: 'The Abyss'
Time

Ok, I managed to "find" the NTSC version. :)

I threw the blu V2 script on it, and I'll show you some comparisons here.

Pic 1: Just cropping and bicubic resize without filtering. (Same method used to resize pics in photoshop)

Pic 2: Upscaling, sharpening on grain level, motion-adaptive deinterlacing/antialiasing and some more.

1-1 1-2

2-1 2-2

3-1 3-2

4-1 4-2

5-1 5-2

So this is basically what we'll be able to do in case next year's blu-ray release would be bad.

Post
#574901
Topic
Info &amp; Info Wanted: 'The Abyss'
Time

You know, it would be interesting to see what would come out if using mine and DJ's blu v2 script (or well, a modified version) on the NTSC version of the DVD.

Though if the blu-ray release next year would look good, there's no need of course.

And I agree with Jonno, it's a really good movie! I saw it the first time maybe 7 or 8 years ago, and I didn't know anything about it, other than the fact it was made by James Cameron.

Post
#574871
Topic
Info &amp; Info Wanted: 'The Abyss'
Time

Apparently there's a blu-ray release planned for next year, but googling around for this HDTV version, I found some screenshots and they look like very filtered DVD-upscales.

EDIT: Seems the google link didn't come out right for some reason. Go to image size on that google search and set it to "exactly" 1280x576. That'll give you the screenshots.

Post
#574830
Topic
The Anniversary Collection: GOUT's Last Stand - NTSC DVD Set (Work-in-Progress)
Time

Not criticizm, just a couple tips for you: If you're aiming for a balanced look, the new screenshots are slightly too green and a bit desaturated. All three movies in the GOUT are desaturated, but after a lot of analyzing of it during my project with dark_jedi, I came to the conclusion that SW might be about 25% less saturated than ESB and ROTJ too.

Good luck with your project!

Post
#574631
Topic
Info Wanted: Which OT preservation is best for me - and whom should I contact?
Time

The DVD covers are included in the torrents I think.

In case you haven't read through dark_jedi's thread, I'm working with him on a blu-ray upscale which will look so much better than the V3 DVDs that you should really check that one out once it's finished. There's been talk that someone might downscale it and make a V4 DVD set of them.

And of course, you could download Harmy's versions and use ConvertXtoDVD or some similar software to make DVDs from them.

I recommend both versions since each has their pro's. Harmy works from the SE blu-ray's which means good resolution and no smearing/ghosting, while me and dark_jedi are working from the 2006 bonus DVDs, improving them as much as possible.

Post
#574349
Topic
George Lucas on Oprah's OWN
Time

Watched it now.

The part where George says he didn't "experience" Star Wars like everyone else going to the cinema knowing nothing about it, made me think that's gotta be one big reason why he doesn't understand the importance of preserving the originals.

He's spent so much time focusing on his "vision" that the experience itself has been ignored.