Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#21 | Link | |
Retried Guesser
Join Date: Jun 2012
Posts: 1,373
|
Quote:
Using it in mt_lut expressions helps readability I think, don't you? Last edited by raffriff42; 6th April 2014 at 00:38. Reason: quote |
|
![]() |
![]() |
![]() |
#22 | Link |
Registered User
Join Date: Jan 2012
Location: Toulon France
Posts: 243
|
Hello RaffRiff42,
I have tried to use your curves proposal without success. I have found a difficulty, with your kind of mask. Coloryuv (autowhite=true) is not equal to Overlay(Coloryuv (autowhite=true), mask=mask_lo).Overlay(Coloryuv (autowhite=true), mask=mask_mid).Overlay(Coloryuv (autowhite=true), mask=mask_hi). This result, for me, is because masks are not complete black and white and thus some frame parts are filtered more once. Thus i have rewritten my scripts with binaries masks. They are below (the second in follow post for technical thing): Code:
function strength_Automatismes_ColorYUV(clip clip, \ float "strength_autobalance_very_dark", float "strength_autobalance_dark", \ float "strength_autobalance_middle_dark", float "strength_autobalance_middle", float "strength_autobalance_middle_light", \ float "strength_autobalance_light", float "strength_autobalance_very_light", float "strength_autobalance_hyper_light", \ float "strength_autogain_very_dark", float "strength_autogain_dark", \ float "strength_autogain_middle_dark", float "strength_autogain_middle", float "strength_autogain_middle_light", \ float "strength_autogain_light", float "strength_autogain_very_light", float "strength_autogain_hyper_light", \ bool "show_displayed_help", bool "show_masks", bool "tuned_strength_autobalance_or_autogain") { Assert(clip.IsYUV, "CheapColorTemp: sorrce must be YUV") show_displayed_help = Default(show_displayed_help, false) show_masks = Default(show_masks,false) tuned_strength_autobalance_or_autogain = Default(tuned_strength_autobalance_or_autogain, true) #--------------------------------------------- Info clip -------------------------------------------- ori=clip.Subtitle("original") ori_chroma=clip.Info_Chroma().Subtitle("original") ori_luma=clip.Info_Luma().Subtitle("original") # ------------------------------------------------- tones masks ------------------------------------------ very_dark=MT_Lut(clip,"x 32 <= 255 0 ?", y=3, u=1, v=1) dark=MT_Lut(clip,"x 64 <= x 32 > & 255 0 ?", y=3,u=1, v=1) middle_dark=MT_Lut(clip,"x 96 <= x 64 > & 255 0 ?", y=3,u=1, v=1) middle =MT_Lut(clip,"x 128 <= x 96 > & 255 0 ?", y=3,u=1, v=1) middle_light=MT_Lut(clip,"x 160 <= x 128 > & 255 0 ?", y=3,u=1, v=1) light=MT_Lut(clip,"x 192 <= x 160 > & 255 0 ?", y=3,u=1, v=1) very_light=MT_Lut(clip,"x 224 <= x 192 > & 255 0 ?", y=3,u=1, v=1) hyper_light=MT_Lut(clip,"x 224 > 255 0 ?", y=3,u=1, v=1) the_masks = StackHorizontal(very_dark.Subtitle("very dark tones"), dark.Subtitle("dark tones"), \ middle_dark.Subtitle("dark midtons"), middle .Subtitle("midtons"), middle_light.Subtitle("light midtons"), \ light.Subtitle("light tones"), very_light.Subtitle("very light tones"), hyper_light.Subtitle("hyper light tones")) #--------------------------------------------- Auto white balance tunning -------------------------------------- autobalance=clip.ColorYUV(autoWhite=true) autobalance_info=autobalance.Info_Chroma().Subtitle("normal auto white balance") strength_autobalance_very_dark = Default(strength_autobalance_very_dark, 1.0) # auto white balance strength on very dark tones, between 0.0 et 1.0, default 1.0 strength_autobalance_dark = Default(strength_autobalance_dark, 1.0) # auto white balance strength on dark tones, between 0.0 et 1.0, default 1.0 strength_autobalance_middle_dark = Default(strength_autobalance_middle_dark, 1.0) # auto white balance strength on dark midtones, between 0.0 et 1.0, default 1.0 strength_autobalance_middle = Default(strength_autobalance_middle, 1.0) # auto white balance strength on midtones, between 0.0 et 1.0, default 1.0 strength_autobalance_middle_light = Default(strength_autobalance_middle_light, 1.0) # auto white balance strength on light midtones, between 0.0 et 1.0, default 1.0 strength_autobalance_light = Default(strength_autobalance_light, 1.0) # auto white balance strength on light tones, between 0.0 et 1.0, default 1.0 strength_autobalance_very_light = Default(strength_autobalance_very_light, 1.0) # auto white balance strength on very light tones, between 0.0 et 1.0, default 1.0 strength_autobalance_hyper_light = Default(strength_autobalance_hyper_light, 1.0) # auto white balance strength on hyper light tones, between 0.0 et 1.0, default 1.0 # First action, auto white balance strength tunning for each tones balance_very_dark=Overlay(clip,autobalance, opacity=strength_autobalance_very_dark, mode="chroma") balance_dark=Overlay(clip,autobalance, opacity=strength_autobalance_dark, mode="chroma") balance_middle_dark=Overlay(clip,autobalance, opacity=strength_autobalance_middle_dark, mode="chroma") balance_middle=Overlay(clip,autobalance, opacity=strength_autobalance_middle, mode="chroma") balance_middle_light=Overlay(clip,autobalance, opacity=strength_autobalance_middle_light, mode="chroma") balance_light=Overlay(clip,autobalance, opacity=strength_autobalance_light, mode="chroma") balance_very_light=Overlay(clip,autobalance,opacity=strength_autobalance_very_light, mode="chroma") balance_hyper_light=Overlay(clip,autobalance,opacity=strength_autobalance_hyper_light, mode="chroma") # Second action, patchwork with masks tones use autobalance_mod=clip.Overlay(balance_very_dark,mask=very_dark, opacity=1.0, mode="chroma") \.Overlay(balance_dark, mask=dark, opacity=1.0, mode="chroma") \.Overlay(balance_middle_dark, mask=middle_dark, opacity=1.0, mode="chroma") \.Overlay(balance_middle, mask=middle, opacity=1.0, mode="chroma") \.Overlay(balance_middle_light, mask=middle_light, opacity=1.0, mode="chroma") \.Overlay(balance_light, mask=light, opacity=1.0, mode="chroma") \.Overlay(balance_very_light, mask = very_light, opacity=1.0, mode="chroma") \.Overlay(balance_hyper_light, mask = hyper_light, opacity=1.0, mode="chroma") autobalance_mod_info=autobalance_mod.Info_Chroma().Subtitle("mod white balance") autobalance_mod_luma=autobalance_mod.Info_Luma().Subtitle("mod white balance") #--------------------------------------------- Autogain tunning ------------------------------------------ autogain = autobalance_mod.ColorYUV(autogain=true) autogain_info = autogain.Info_luma().Subtitle("Autogain basique") strength_autogain_very_dark = Default(strength_autogain_very_dark, 1.0) # autogain strength on very dark tones, between 0.0 et 1.0, default 1.0 strength_autogain_dark = Default(strength_autogain_dark, 1.0) # autogain balance strength on dark tones, between 0.0 et 1.0, default 1.0 strength_autogain_middle_dark = Default(strength_autogain_middle_dark, 1.0) # autogain balance strength on dark midtones, between 0.0 et 1.0, default 1.0 strength_autogain_middle = Default(strength_autogain_middle, 1.0) # autogain balance strength on midtones, between 0.0 et 1.0, default 1.0 strength_autogain_middle_light = Default(strength_autogain_middle_light, 1.0) # autogain balance strength on light midtones, between 0.0 et 1.0, default 1.0 strength_autogain_light = Default(strength_autogain_light, 1.0) # autogain balance strength on light tones, between 0.0 et 1.0, default 1.0 strength_autogain_very_light = Default(strength_autogain_very_light, 1.0) # autogain balance strength on very light tones, between 0.0 et 1.0, default 1.0 strength_autogain_hyper_light = Default(strength_autogain_hyper_light, 1.0) # autogain balance strength on hyper light tones, between 0.0 et 1.0, default 1.0 # First action, autogain strength tunning for each tones gain_very_dark=Overlay(autobalance_mod,autogain, opacity=strength_autogain_very_dark, mode="luma") gain_dark=Overlay(autobalance_mod,autogain, opacity=strength_autogain_dark, mode="luma") gain_middle_dark=Overlay(autobalance_mod,autogain, opacity=strength_autogain_middle_dark, mode="luma") gain_middle=Overlay(autobalance_mod,autogain, opacity=strength_autogain_middle, mode="luma") gain_middle_light=Overlay(autobalance_mod,autogain, opacity=strength_autogain_middle_light, mode="luma") gain_light=Overlay(autobalance_mod,autogain, opacity=strength_autogain_light, mode="luma") gain_very_light=Overlay(autobalance_mod,autogain, opacity=strength_autogain_very_light, mode="luma") gain_hyper_light=Overlay(autobalance_mod,autogain, opacity=strength_autogain_hyper_light, mode="luma") # Second action, patchwork with masks tones use autogain_mod=autobalance_mod.Overlay(gain_very_dark,mask=very_dark, opacity=1.0, mode="luma") \.Overlay(gain_dark, mask=dark, opacity=1.0, mode="luma") \.Overlay(gain_middle_dark, mask=middle_dark, opacity=1.0, mode="luma") \.Overlay(gain_middle, mask=middle, opacity=1.0, mode="luma") \.Overlay(gain_middle_light, mask=middle_light, opacity=1.0, mode="luma") \.Overlay(gain_light, mask=light, opacity=1.0, mode="luma") \.Overlay(gain_very_light, mask = very_light, opacity=1.0, mode="luma") \.Overlay(gain_hyper_light, mask = hyper_light, opacity=1.0, mode="luma") autogain_mod_info = autogain_mod.Info_luma().Subtitle("Autogain ajusté") #------------------------------------------- Results (show_displayed_help == true) ? ((show_masks == true) ? the_masks : \ ((tuned_strength_autobalance_or_autogain == true) ? StackHorizontal (ori_chroma,autobalance_info,autobalance_mod_info) : \ StackHorizontal (autobalance_mod_luma,autogain_info.Histogram("levels"),autogain_mod_info.Histogram("levels")))): \autogain_mod return last } # ---------------------------------------- Info function function Info_chroma(clip c) { c.ScriptClip(""" acu = AverageChromaU() acv = AverageChromaV() Subtitle("127-U = " + String(127-acu),y=20) Subtitle("127-V = " + String(127-acv),y=40) Subtitle("U and V average = " + String((acu+acv)/2),y=60) """) return last } function Info_luma(clip c) { c.ScriptClip(""" aly = AverageLuma() Subtitle("AverageLuma = " + String(aly),y=40) """) return last } __End__ [Auto white balance and Autogain tunning =1] LoadPlugin("C:\..........\masktools-v2.0a48\mt_masktools-25.dll") Import("C:\..........\ColorYUV auto functions strength tune.avs") [< separator="Auto function tunning beginning">] show = [<"show help displays (no = 0 et yes = 1)", 0, 1, 1>] compare_masque=[<"shows tones masks", 0, 1, 0>] autobalance_or_autogain = [<"tune auto white balance (0) or autogain(1)", 0, 1, 0>] show_displayed_help = (show == 1) ? true : false tuned_strength_autobalance_or_autogain = (autobalance_or_autogain == 0) ? true : false show_masks = (compare_masque == 1) ? true : false [< separator="Auto white balance strength tunning">] strength_autobalance_very_dark = [<"auto white balance strength on very dark tones", 0.0, 1.0, 1.0>] strength_autobalance_dark = [<"auto white balance strength on dark tones", 0.0, 1.0, 1.0>] strength_autobalance_middle_dark = [<"auto white balance strength on dark midtones", 0.0, 1.0, 1.0>] strength_autobalance_middle = [<"auto white balance strength on midtones", 0.0, 1.0, 1.0>] strength_autobalance_middle_light = [<"auto white balance strength on light midtones", 0.0, 1.0, 1.0>] strength_autobalance_light = [<"auto white balance strength on light tones", 0.0, 1.0, 1.0>] strength_autobalance_very_light = [<"auto white balance strength on very light tones", 0.0, 1.0, 1.0>] strength_autobalance_hyper_light = [<"auto white balance strength on hyper light tones", 0.0, 1.0, 1.0>] [< separator="Autogain strength tunning">] strength_autogain_very_dark = [<"autogain strength on very dark tones", 0.0, 1.0, 1.0>] strength_autogain_dark = [<"autogain strength on dark tones", 0.0, 1.0, 1.0>] strength_autogain_middle_dark = [<"autogain strength on dark midtones", 0.0, 1.0, 1.0>] strength_autogain_middle = [<"autogain strength on midtones", 0.0, 1.0, 1.0>] strength_autogain_middle_light = [<"autogain strength on light midtones", 0.0, 1.0, 1.0>] strength_autogain_light = [<"autogain strength on light tones", 0.0, 1.0, 1.0>] strength_autogain_very_light = [<"autogain strength on very light tones", 0.0, 1.0, 1.0>] strength_autogain_hyper_light = [<"autogain strength on hyper light tones", 0.0, 1.0, 1.0>] strength_Automatismes_ColorYUV(strength_autobalance_very_dark =strength_autobalance_very_dark, strength_autobalance_dark = strength_autobalance_dark, \ strength_autobalance_middle_dark = strength_autobalance_middle_dark, strength_autobalance_middle = strength_autobalance_middle, strength_autobalance_middle_light = strength_autobalance_middle_light, \ strength_autobalance_light = strength_autobalance_light, strength_autobalance_very_light = strength_autobalance_very_light, strength_autobalance_hyper_light = strength_autobalance_hyper_light, \strength_autogain_very_dark =strength_autogain_very_dark, strength_autogain_dark = strength_autogain_dark, \ strength_autogain_middle_dark = strength_autogain_middle_dark, strength_autogain_middle = strength_autogain_middle, strength_autogain_middle_light = strength_autogain_middle_light, \ strength_autogain_light = strength_autogain_light, strength_autogain_very_light = strength_autogain_very_light, strength_autogain_hyper_light = strength_autogain_hyper_light, \ show_displayed_help = show_displayed_help, show_masks=show_masks, tuned_strength_autobalance_or_autogain = tuned_strength_autobalance_or_autogain) [/Auto white balance and Autogain tunning] But i have always the same problem. The differents Coloryuv (autowhite=true) masked overlayed addition is nearest but not equal to the ordinary Coloryuv (autowhite=true). I do not know why. Have you an ideas ? Thanks |
![]() |
![]() |
![]() |
#25 | Link | |
Excessively jovial fellow
Join Date: Jun 2004
Location: rude
Posts: 1,100
|
Quote:
dude you realize that image was created by graphing an equation, right? you can have the exact answer for any wavelength and temperature by just asking wolframalpha, jeez Last edited by TheFluff; 27th November 2014 at 21:57. |
|
![]() |
![]() |
![]() |
Tags |
colour temperature, manual white balance, rgb, white balance, yuv |
Thread Tools | Search this Thread |
Display Modes | |
|
|