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.

 

Go Back   Doom9's Forum > Capturing and Editing Video > VapourSynth

Reply
 
Thread Tools Search this Thread Display Modes
Old 25th June 2022, 20:50   #4721  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,708
I get:
Code:
ry, ru, rv = core.std.SplitPlanes(rainbow)
ValueError: too many values to unpack (expected 3))
Here's where I use this:
Code:
from vapoursynth import core
import vapoursynth as vs

# requires: 
# * BiFrost: https://github.com/dubhater/vapoursynth-bifrost
# * TemporalSoften: https://github.com/dubhater/vapoursynth-temporalsoften 
#   I think this could be replaced by TemporalSoften2 https://github.com/dubhater/vapoursynth-temporalsoften2

# raidus = temporal radius
# th = threshold
def ChubbyRain2(clip: vs.VideoNode, th: int= 0, radius: int=3, show: bool=False, interlaced: bool=False):
  if interlaced:
    es = core.std.SeparateFields(clip=clip)
  else:
    res = clip
	
  y = core.std.ShufflePlanes(res, planes=0, colorfamily=vs.GRAY)
  u = core.std.ShufflePlanes(res, planes=1, colorfamily=vs.GRAY)
  v = core.std.ShufflePlanes(res, planes=2, colorfamily=vs.GRAY)
	
  uc = core.std.Convolution(u, [1,-2,1], mode = "v")
  vc = core.std.Convolution(v, [1,-2,1], mode = "v")
	

  ucc = core.std.Convolution(u, [1,2,1], planes=0, mode = "v")
  vcc = core.std.Convolution(v, [1,2,1], planes=0, mode = "v")
	
  cc = core.std.ShufflePlanes([y,ucc,vcc], planes=[0, 0, 0], colorfamily=vs.YUV)
  cc = core.bifrost.Bifrost(cc)
  cc = core.focus.TemporalSoften(cc, radius=radius,luma_threshold=0, chroma_threshold=255,scenechange=2 , mode=2)
  
  expr = "x y + " + str(th) + " > " + str(256 << (clip.format.bits_per_sample - 8)) + " 0 ?"
  rainbow = core.std.Expr([uc,vc],expr)
  rainbow = core.resize.Point(rainbow, res.width, res.height)
  
  ry, ru, rv = core.std.SplitPlanes(rainbow)
  ry = std.Maximum(ry)
  ru = core.std.BlankClip(ru, color=128 << (clip.format.bits_per_sample - 8))
  rv = core.std.BlankClip(rv, color=128 << (clip.format.bits_per_sample - 8) )
  rainbow = core.std.ShufflePlanes([ry,ru,rv], [0,0,0], vs.YUV)
  
  resfinal = core.std.MaskedMerge(res, cc, rainbow)
  
  if show:
    output = rainbow
  else:
    if interlaced:
      output = core.std.DoubleWeave(resfinal)
      output = core.std.SelectEvery(output, 2, 0)
    else:
      output = resfinal

  return output
Original AviSynth version: http://avisynth.nl/images/ChubbyRain2.avsi
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Old 25th June 2022, 22:28   #4722  |  Link
mastrboy
Registered User
 
Join Date: Sep 2008
Posts: 330
While I don't have a solution to your current issue, are you not missing the cnr2() function call? (http://avisynth.nl/index.php/Cnr2)

I doubt it would function the same without it?
__________________
(i have a tendency to drunk post)
mastrboy is offline   Reply With Quote
Old 26th June 2022, 05:13   #4723  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,708
@mastrboy: yes, you are right I missed the cnr2 call.

---
Okay, I see why the ValueError happens rainbow is Gray8

Code:
def ChubbyRain2(clip: vs.VideoNode, th: int=10, radius: int=3, show: bool=False, sft: int=10, interlaced: bool=False):
  if interlaced:
    res = core.std.SeparateFields(clip=clip)
  else:
    res = clip
	
  y = core.std.ShufflePlanes(res, planes=0, colorfamily=vs.GRAY)
  u = core.std.ShufflePlanes(res, planes=1, colorfamily=vs.GRAY)
  v = core.std.ShufflePlanes(res, planes=2, colorfamily=vs.GRAY)
	
  uc = core.std.Convolution(u, [1,-2,1], mode = "v")
  vc = core.std.Convolution(v, [1,-2,1], mode = "v")
	

  ucc = core.std.Convolution(u, [1,2,1], planes=0, mode = "v")
  vcc = core.std.Convolution(v, [1,2,1], planes=0, mode = "v")
	
  cc = core.std.ShufflePlanes([y,ucc,vcc], planes=[0, 0, 0], colorfamily=vs.YUV)
  cc = core.bifrost.Bifrost(cc)
  cc = core.cnr2.Cnr2(cc)
  cc = core.focus.TemporalSoften(cc, radius=radius, luma_threshold=0, chroma_threshold=sft, scenechange=2 , mode=2)
  #cc = core.focus2.TemporalSoften2(cc, radius=radius, luma_threshold=0, chroma_threshold=sft, scenechange=2 , mode=2)
 
  shift = (clip.format.bits_per_sample - 8)
  expr = "x y + " + str(th) + " > " + str(256 << shift) + " 0 ?"
  rainbowMask = core.std.Expr([uc,vc],expr)
  rainbowMask = core.resize.Point(rainbowMask, res.width, res.height)
  rainbowMask = core.std.Maximum(rainbowMask)
  
  resfinal = core.std.MaskedMerge(res, cc, rainbowMask)
  
  if show:
    output = rainbowMask
  else:
    if interlaced:
      output = core.std.DoubleWeave(resfinal)
      output = core.std.SelectEvery(output, 2, 0)
    else:
      output = resfinal

  return output
doesn't crash, but the output is kind of broken. :/ doh "th: int=0" -> "th: int=10"
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..

Last edited by Selur; 26th June 2022 at 07:02.
Selur is offline   Reply With Quote
Old 26th June 2022, 06:57   #4724  |  Link
ChaosKing
Registered User
 
Join Date: Dec 2005
Location: Germany
Posts: 1,684
es = core.std.SeparateFields(clip=clip) should be res = ...
__________________
AVSRepoGUI // VSRepoGUI - Package Manager for AviSynth // VapourSynth
VapourSynth Portable FATPACK || VapourSynth Database || https://github.com/avisynth-repository
ChaosKing is offline   Reply With Quote
Old 26th June 2022, 07:02   #4725  |  Link
Selur
Registered User
 
Selur's Avatar
 
Join Date: Oct 2001
Location: Germany
Posts: 6,708
thanks, fixed.
__________________
Hybrid here in the forum, homepage
Notice: Since email notifications do not work here any more, it might take me quite some time to notice a reply to a thread,..
Selur is offline   Reply With Quote
Reply

Tags
speed, vaporware, vapoursynth

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 03:18.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2022, vBulletin Solutions Inc.