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. |
2nd January 2017, 20:08 | #161 | Link | ||
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Quote:
Quote:
bits to the script to set chroma=128 in a couple of mt_ calls, fixes the debug output and less worrying to look at. I might actually use this script now. RM_logo.avs v0.6 Code:
# rm_logo() Version 0.6 -- 02.01.2016. # v0.6, fixed weird green frames in Debug=true mode, StainlessS. # # Script to help in the removal of channel logos or other distracting objects # # Required filters: # AVSInpaint: Ver 2008-01-06 # Discussion & Code : http://forum.doom9.org/showthread.php?t=133682 # ExInpaint: Ver 0.1+ # Code http://avisynth.org.ru/exinpaint/exinpaint.html # mt_masktools: Ver 2.0.32+ # Code http://manao4.free.fr/masktools-v2.0a32.zip # removegrain: Ver 1.0 (8/2005) # Code http://www.removegrain.de.tf # fft3dfilter: Ver 2.1.1 or later # Code http://avisynth.org.ru/fft3dfilter/fft3dfilter.html # ttempsmoothf Ver 0.9.4 or later # Code http://bengal.missouri.edu/~kes25c/ # medianblur Ver 0.8.4 # Code http://www.avisynth.org/tsp/medianblur084.zip # function rm_logo( clip clp, string "logomask", string "loc",float "par", string "mode",int "percent",int "deblendfalloff",\ int "AlphaToRepair", float "RepairRadius", float "InpaintRadius", float "InpaintSharpness",\ float "InpaintPreBlur", float "InpaintPostBlur", string "cutsize", bool "lmask", int "pp", bool "debug", \ int "cutwidth", int "cutheight") { logomask = default( logomask, "" ) # file location of the logo, the must be masked in pure white loc = default( loc, "" ) # where is the logo, TR, TL, BR, BL for top right, top left, bottom right, bottom left cutsize = default( cutsize, "small" ) # how big a cut to make, small, medium, large cutwidth = default( cutwidth, 0 ) # how wide a cut to make in pixels, -1 for full width of frame cutheight = default( cutheight, 0 ) # how tall a cut to make in pixels, -1 for full height of frame par = default( par, 1.0 ) # pixel aspect ratio mode = default( mode, "both" ) # deblend, inpaint or both percent = default( percent, 25 ) # how much of the clip to analyse in creating color&alpha masks, more is better but slower deblendfalloff = default( deblendfalloff, 5 ) # graidient fallout from logo mask AlphaToRepair = default( AlphaToRepair, 130 ) # what is the luma value of the solid part of the logo RepairRadius = default( RepairRadius, 1.0 ) # used to expand the mask for none alpha ie solid areas InpaintRadius = default( InpaintRadius, 6.0 ) # radius around a damaged pixel from where values are taken when the pixel is inpainted. Bigger values prevent # inpainting in the wrong direction, but also create more blur InpaintSharpness = default( InpaintSharpness, 25.0 ) # Higher values can prevent blurring caused by high Radius values. InpaintPreBlur = default( InpaintPreBlur, 1.5 ) # Standard deviation of the blur which is applied to the image before the structure tensor is computed. Higher values # help connecting isophotes which have been cut by the inpainting region, but also increase CPU usage. PreBlur=0.0 # disables pre-blurring. InpaintPostBlur = default( InpaintPostBlur, 5.0 ) # standard deviation of the blur which is applied to the structure tensors before they are used to determine the # inpainting direction. Higher values help gather more directional information when there are only few valid pixels # available, but increases CPU usage lmask = default( lmask, true ) # apply post process through a repair mask PP = default( PP, 1 ) # Post process function 0,1,2 to help reduce damage left behind by logo removal debug = default( debug, false ) # show mask to help in tunning the output # set up some values that we need to run clp_width = width( clp ) clp_height = height( clp ) RGB = isRGB( clp ) RGB32 = isRGB32( clp ) RGB24 = isRGB24( clp ) par = ( par!= 1.0 ) ? float( clp_height ) / float( clp_width ) * par : 1.0 percent = ( percent < 0) ? 25 : (percent > 100) ? 100 : percent # Get the always fun input error checking done assert ( logomask != "" , "You have to define a logomask") assert ( loc != "" , "You must provide a value for Loc UL,UR,LL,LR") assert ( loc == "TR" || loc == "TL" || loc == "BR" || loc == "BL" , "Loc must be one of TR, TL, BR, BL") assert ( mode == "both" || mode == "inpaint" || mode == "deblend", "Specified mode doesn't exist.") # Get our crop locations based on the passed location loc = UCase( loc ) cutsize = UCase( cutsize ) multi = ( cutsize == "SMALL" ) ? 2.25 : ( cutsize == "MEDIUM" ) ? 2.15 : 2 chunk = ( clp_height > 720 ) ? 2.9 : 3 cutwidth = ( cutwidth == 0 || cutwidth == -1 ) ? cutwidth : m4(cutwidth) cutheight = ( cutheight == 0 || cutheight == -1 ) ? cutheight : m4(cutheight) a = ( Rightstr( loc, 1 ) == "L" ) ? 0 : (cutwidth == 0 ) ? m4( (clp_width / chunk ) * multi ) : (cutwidth == -1 ) ? 0 : (clp_width - cutwidth) b = ( Leftstr( loc, 1 ) == "T" ) ? 0 : (cutheight == 0 ) ? m4( (clp_height / chunk ) * multi ) : (cutheight == -1 ) ? 0 : (clp_height - cutheight) c = ( Rightstr( loc, 1 ) == "R" ) ? 0 : (cutwidth == 0) ? -m4( (clp_width / chunk ) * multi ) : (cutwidth == -1 ) ? 0 : -(clp_width - cutwidth) d = ( Leftstr( loc, 1 ) == "B" ) ? 0 : (cutheight == 0 ) ? -m4( (clp_height / chunk ) * multi ) : (cutheight == -1 ) ? 0 : -(clp_height - cutheight) cropped = clp.crop(a,b,c,d) # Anaylse the entire clip or a percentage for speed. snipSize = round( framecount( cropped ) / (framecount( cropped ) * (percent / 100.0) )) analyse = ( percent != 100 ) ? cropped.SelectRangeEvery( snipSize, 1 ) : cropped # Read in our logo mask, prepare it and crop out the corner of interest logo_mask = imagesource(logomask,start=0,end=1) logo_mask = logo_mask.crop(a,b,c,d) logo_mask = logo_mask.ConvertToYV12(Matrix="PC.601") logo_mask = logo_mask.DistanceFunction(255/deblendfalloff,PixelAspect=par).Greyscale # Clean the analyse clip to improve results analyse = (IsYV12(analyse)) ? analyse : analyse.ConvertToYV12 analyse = analyse.TTempSmoothF(maxr=2,lthresh=256,cthresh=256,scthresh=255).converttoRGB24() input = ( RGB24 == true ) ? cropped : cropped.converttoRGB24() # seperate out the directory and logo names so we can save a unique ebmp file sl = logomask.revstr().findstr("\") - 1 Assert((sl >= 0),"specify a fully qualified directory and logomask name to use") logo_name = (sl < 0 ) ? "" : rightstr(logomask,sl) # name and extension s2 = logo_name.findstr(".") - 1 # find the length of the extension logo_name = leftstr(logo_name,s2) # just the name ! Analyse_Name = logo_name + loc + string(percent) + "AnalyzeResult%06d.ebmp" # Time to run the analysis on the logo, we want the color map and alpha map out of the file. try { # Analyze is a bit slow so we only do it once and store the result in a file, check if it exists or if it has changed ImageSource(Analyse_Name,0,0) (Interleave( AssumeFPS(input.FrameRate), input.Trim(0,-2).AnalyzeLogo(logo_mask) ).FrameCount > 3) ? last : last } catch( dummy ) { # Nice catch, we are here since we need to perform our logo analysis as none already exists analyse.AnalyzeLogo(logo_mask) # The analysis is complete, save a frame (all frames are the same) Trim( 0, -1 ) ImageWriter( logo_name + loc + string(percent) + "AnalyzeResult", 0, 1, "ebmp" ) } # The color map is the top half of the Analyze result, The alpha channel is in the bottom half AssumeFPS(analyse.FrameRate) LogoColor = Crop(0,0,0,last.Height/2) LogoAlpha = Crop(0,last.Height/2,0,0).ConvertToYV12(Matrix="PC.601") # Create a Deblend mask, this is a mask that falls off the marked logo area, we use this to blend the delogoed area back into the clip DeblendMask = logo_mask.DistanceFunction( 255.0 / DeblendFalloff, PixelAspect=par ) # Create a repair mask for pixels that cannot be deblended LogoAlpha.Invert.mt_lut(expr="x " + " " + string(alphatorepair) + " " + "< 255 0 ?").mt_expand.mt_inflate(chroma="-128") # ssS, added (chroma="-128") RepairMask = ( RepairRadius > 0.1 ) ? DistanceFunction( 84.0 / RepairRadius, PixelAspect=par ) : last # InpaintLogo and DeblendLogo based on user preferance deblend = ( mode == "both" ) ? input.DeblendLogo(LogoColor,LogoAlpha) \ : ( mode == "deblend" ) ? input.DeblendLogo(logoColor,logoAlpha) : input repaired = ( mode == "both" ) ? deblend.InpaintLogo(RepairMask, Radius=InpaintRadius, Sharpness=InpaintSharpness, \ PreBlur=InpaintPreBlur, PostBlur=InpaintPostBlur, PixelAspect=par) \ : ( mode == "inpaint" ) ? deblend.InpaintLogo(RepairMask,Radius=InpaintRadius, Sharpness=InpaintSharpness, PreBlur=InpaintPreBlur,\ PostBlur=InpaintPostBlur, PixelAspect=par) : deblend #repaired = ExInpaint (repaired.converttorgb32, repairmask.converttorgb32, color=$ffffff,xsize=5, ysize=3, radius=36) output = Layer(input.ConvertToRGB32, repaired.ConvertToRGB32.Mask(DeblendMask.ConvertToRGB32(Matrix="PC.601"))) output = output.converttoyv12 # post processing of the results if requested postmask = LogoAlpha.Invert.mt_lut(expr="x " + " " + string(alphatorepair) + " " + "< 255 0 ?").mt_expand.mt_inflate(chroma="-128") # ssS, added (chroma="-128") postmask = postmask.DistanceFunction( 64.0 / RepairRadius, PixelAspect=par ) #postmask = (pp > 0 && lmask) ? repairmask.DistanceFunction( 512.0 / DeblendFalloff, PixelAspect=par ) : blankclip(output,color=$000000) post = ( PP == 1 ) ? output.minblur(1,uv=3).medianblur(3,0,0).removegrain(11) \ : ( pp == 2 ) ? output.fft3dfilter(sigma=16,sigma2=12,sigma3=8,sigma4=4,bt=3,bw=16,bh=16,ow=8,oh=8,plane=4) \ : ( pp == 3 ) ? output.mt_convolution("1 8 28 56 76 56 28 8 1","1 8 28 56 76 56 28 8 1",y=3,v=2,u=2) \ : output output = ( pp > 0 ) ? mt_merge(output,post,postmask) : output aa = debug ? stackhorizontal(logo_mask.ConvertToYV12.subtitle("logo mask"),logocolor.ConvertToYV12.subtitle("Logo Color"),logoalpha.ConvertToYV12.subtitle("Logo Alpha")) : nop bb = debug ? stackhorizontal(deblendmask.ConvertToYV12.subtitle("Deblend Mask"),repairmask.ConvertToYV12.subtitle("Repair Mask"),postmask.ConvertToYV12.subtitle("Post Mask")) : nop cc = debug ? stackhorizontal(cropped.ConvertToYV12.subtitle("Original"),repaired.ConvertToYV12.subtitle("Repaired"),output.ConvertToYV12.subtitle("Post")) : nop # Almost done, lets blend in our repair output = (RGB == true) ? (RGB24 == true) ? output : output.converttoRGB32() : output.converttoYV12() final = clp.overlay(output,a, b) RETURN debug ? stackvertical(aa,bb,cc) : final } FUNCTION MinBlur(clip input, int r, int "uv") { # Nifty Gauss/Median combination # Taken from MCBob.avs: uv = default(uv,3) # process chroma if uv==3, otherwise just luma uv2 = (uv==2) ? 1 : uv rg4 = (uv==3) ? 4 : -1 rg11 = (uv==3) ? 11 : -1 rg20 = (uv==3) ? 20 : -1 medf = (uv==3) ? 1 : -200 # make our blur clips, r controls amount RG11D = (r==1) ? mt_makediff(input,input.removegrain(11, rg11),U=uv2,V=uv2) \ : (r==2) ? mt_makediff(input,input.removegrain(11,rg11).removegrain(20,rg20),U=uv2,V=uv2) \ : mt_makediff(input,input.removegrain(11,rg11).removegrain(20,rg20).removegrain(20,rg20),U=uv2,V=uv2) RG4D = (r==1) ? mt_makediff(input,input.removegrain(4,rg4),U=uv2,V=uv2) \ : (r==2) ? mt_makediff(input,input.medianblur(2,2*medf,2*medf),U=uv2,V=uv2) \ : mt_makediff(input,input.medianblur(3,3*medf,3*medf),U=uv2,V=uv2) DD = mt_lutxy(RG11D,RG4D,"x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?",U=uv2,V=uv2) RETURN (input.mt_makediff(DD,U=uv,V=uv)) } FUNCTION m4(float x) {RETURN( x<16?16:int(round(x/4.0)*4)) } EDIT: If you spot any more green frames in Debug, shout out and give args and I'll take another look, there are other calls to MT_ that do not have chroma setting set.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 2nd January 2017 at 20:14. |
||
2nd January 2017, 21:19 | #162 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
After all I've done so far, I'm feeling very discouraged. The results are terrible. Here's an 8-sec sample of my encoded output:
http://www.tomsgoodfiles.com/2016-12...BAD-RESULT.avi If you download and play it (I use VLC), the removal is worse (more distracting) than seeing the original logo-and-text. My initial suspicion is that it's the inpainting. (AlphaToRepair, after testing various values, was the default of 130.) While it got rid of the stray colors, it apparently stole too much from other areas. I ran through my 9000 frame sample using RmLogo's debug rather thoroughly, I thought. I guess one really has to look at a whole-frame view and fully rendered and watch it at live speed. Maybe deblend-only, while it would leave very visible artifacts, would be much less distracting that the monstrosity I just shared. On the upside, maybe I just invented a new special effect. Could you all (whoever is inclined) download my 8-sec sample, view it (at normal speed, which will be 60fps), and give your thoughts about what should be done differently? |
2nd January 2017, 21:53 | #164 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Hopefully, Yes.
EDIT: Calling/not calling DeblendLogo(), altered what would end up in unprocessed chroma channels.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 2nd January 2017 at 23:00. |
3rd January 2017, 00:50 | #165 | Link | |
Registered User
Join Date: Nov 2003
Posts: 365
|
Quote:
Then I found AVSFilmCutter. It looks promising, but also wasted 45 min. (or more) learning/experimenting. Got a couple of scenes specified, but could not save it. This program is very user unfriendly. He avoids menus and buttons, relying on me to right-click all the time. It's like you have to memorize half the manual before getting started. One should be able to look around on any one screen and find buttons or menu choices to go forward. His seemingly wellwritten manual is woefully inadequate at the lowest level. Of course being unchanged for 10 years may have something to do with it. I don't know why Videohelp has stuff like this out there when it's so broken. For now, I'm glad I can use control keys in Vdub and Notepad very quickly. But I'd still be open to trying something that would speed my gathering of frame ranges. |
|
3rd January 2017, 02:22 | #166 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
You could perhaps give this a try.
Get VDubMod or VirtualDubFilterMod (suggested, some versions of VDubMod are broken for this method). Load AVS (will not work with AVI), Mark ranges and delete them in VDMod. HOME key marks start of range to delete, END key marks Last Frame to delete + 1, ie is exclusive [mark the frame after the last one to delete]. Then press DELETE key to delete the range. When all ranges deleted, open up the script editor [tools menu], and press CTRL/I to insert the remaining ranges after all deletions. You can press CTRL/S to save the script. May end up with something like below. Code:
Avisource("D:\V\XMen2.avi") __END__ # End script above this line, all below is ignored by Avisynth. Move cursor below here before pressing CTRL/I. Trim(0,9999) ++ Trim(10100,10249) ++ Trim(11200,192448) and either delete the '++' stuff or if you have some text editor that can replace '++' with a NewLine that would be better. (failing that replace "++" with "" and insert newlines yourself or dont bother, should not affect script. EDIT: If all logos are exactly the same you could just leave the " ++ Trim()"'s, and put an myRmLogo() at the end and comment out the __END__ thing, but somewhere in docs for either rm_logo or InPaintFunc, it says that long clips will produce less effective delogo-ing. EDIT: Cant comment further, no idea what your myRmLogo() does. EDIT: Could instead replace "++ Trim" -> "myRmLogo". EDIT: Seems PSPad allows to Find/Replace Escape sequences and control codes, who Knew.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd January 2017 at 04:52. |
3rd January 2017, 05:06 | #167 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
I gave the code for function myRmLogo in post #151. (It's really pretty simple. And the logic to allow for start and end frames = 0 was supplied by one of you guys who improved a function of mine, which is the one I cloned from to derive myRmLogo.)
Cool idea to use the script from a Virtualdub version and massage to make series of trims. It looks like this is a form of the .vdscript that can be saved from vanilla Virtualdub: VirtualDub.subset.AddRange(41,4511); VirtualDub.subset.AddRange(5908,238442); But according to you, a mod version composes it much closer to our target syntax. Will look into those mod versions. (I've heard of them for years, but never needed to both getting any.) |
3rd January 2017, 05:28 | #168 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
OK, you can just just forget Find/Replace, and add your single call to RM_Logo after the CTRL/I inserted trims, (commenting out the __END__).
Easy Peasy EDIT: VirtualDubFilterMod here:- http://forum.doom9.org/showthread.php?t=172021 and description of Script editor here:- http://forum.doom9.org/showthread.ph...15#post1772115
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd January 2017 at 05:32. |
3rd January 2017, 05:56 | #169 | Link |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
I thought the standalone AVS Cutter was pretty much the same as the one built into MeGUI, but I tried it and obviously it's not. The standalone version seems to be capable of a lot more but I haven't played with it enough yet.
MeGUI's AVS Cutter is designed to enable you to effectively edit as you encode. You can specify start and end points with or without transitions and that's about it. On the plus side, it's very easy to use. I often use it to set multiple trims and then add the required filtering later. It's not much different to specifying edit points in VirtualDub, except the preview's better. After adding the cuts specified in the above screenshot to a script, you'd have the following. I added the de-logoing manually in blue. __film = last __t0 = __film.trim(0, 2364) __t1 = __film.trim(2365, 4174).rm_logo() __t2 = __film.trim(4175, 7056) __t3 = __film.trim(7057, 9531).rm_logo() __t4 = __film.trim(9532, 12966) __t5 = __film.trim(12967, 15220) __t0 ++ __t1 ++ __t2 ++ __t3 ++ __t4 ++ __t5 Because it's purpose is to allow you to edit, the AVS Cutter can also save a "cuts file". The cuts file can be loaded into MeGUI's audio section and the audio will be re-encoded to match the video, or there's an audio cutter under the Tools menu for splitting and appending the audio to match without re-encoding it. If you're not adding the cuts to edit as such, you don't need to worry about any of that. There's no "RGB Only" limitation. MeGUI's AVS Cutter could really use a text box for adding things to each cut. ie each line would show the start frame, the end frame and a text area for adding filtering to that particular section. That way you could add the filtering as you go rather than have to go back and do it later. I can't remember if I've ever added that to the feature request list. I'll check and do so later if I haven't. There's also AvsPMod. Some people swear by it although I find the preview slows down too much when using a lot of filtering, so with multiple trims with different filtering it gets frustrating. Unless the logo changes, for long clips I just add the logo removal as required via trims (ie between ad breaks) and the analysis just runs using the first trim with logo removal specified. At the end of the trim the ebmp file is written and any de-logoing to follow would use the same ebmp image. If you analyse 100% of the first section and it's a reasonable length, that's generally enough, but you could create a copy of the bitmap with a different name for each section requiring logo removal so each section is analysed individually.... if you're keen. Last edited by hello_hello; 4th January 2017 at 09:21. |
3rd January 2017, 06:30 | #170 | Link | |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
Quote:
I tried InPaintFunc briefly on your sample but the result wasn't any better. |
|
3rd January 2017, 06:34 | #171 | Link |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
StainlessS,
Thanks for the updates to the InPaintFunc and RMLogo scripts. I'm probably just being lazy but whenever I see the word "function" in a script my eyes start to glaze over, so I probably wouldn't/couldn't have worked out how to update InPaintFunc myself. I wonder why it wasn't created to only process the logo section of the frame the first place. I'll play with RMLogo a little later too and report back regarding the green-ness of frames in debug mode. Thanks again! Last edited by hello_hello; 3rd January 2017 at 06:43. |
3rd January 2017, 15:43 | #172 | Link | |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Quote:
I have done a bit more, but may never be posted. Modified to accept +ve width and Height in loc as well as -ve (width,height relative). Support for v2.6 colorspaces but still delogo's in RGB, Layer supports only YUY2, RGB32, SpatialSoften YUY2 only, GeneralConvolution RGB32 only, sigh. Implemented via StackHorizontal/Vertical rather than OverLay/Layer, no increase in speed. I guess Reuf Toc did the best that he could, given what colorspace compatible filters are available (even now). Is there any eg Yv12 (or ideally YV24) compatible filter arrangement for GeneralConvolution, any idea ? (image processing is not my strong point). EDIT: For mainly this Code:
function dirtyblur(clip clp, int "mode") { mode = default (mode, 1) o = (mode == 1) ? clp.blur(1.58).GeneralConvolution (matrix="40 75 40 75 100 75 40 75 40").blur(1.58).blur(1.58).blur(1.58) : \ clp.converttoYUY2.temporalsoften(1,64,64,mode=2,scenechange=6).spatialsoften(2,255,255).converttoRGB32 return o }
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 3rd January 2017 at 15:53. |
|
3rd January 2017, 22:10 | #173 | Link | |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
Quote:
I played with your updated InPainFunc and RM_Logo scripts a little. I didn't notice any problems with either and you seem to have cured the RM_Logo green frame problem in debug mode. Thanks for that. |
|
3rd January 2017, 23:56 | #174 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Thanx, HH, for your consideration, we do try, perhaps not hard enough.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 4th January 2017 at 13:53. |
4th January 2017, 09:18 | #175 | Link | |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
Quote:
https://sourceforge.net/p/megui/feature-requests/607/ I came across AVSEdit Plus today. I must have missed the thread originally, so I thought I'd give it a try. There's some nice ideas there, but for me being able to add different filtering to sections of a script with a preview would be my primary motivation for using an Avisynth GUI. I don't think any of them make it as easy as it could/should be, including AVSEdit Plus. Unless I missed something.... |
|
12th January 2017, 13:26 | #176 | Link | |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Quote:
script editing and things like replacing TABS with SPACES and stuff like that). Give it a go if you have not already. VirtualdubFilterMod:- https://forum.doom9.org/showthread.php?t=172021 EDIT: Available Keyboard functions in brief:- https://forum.doom9.org/showthread.p...15#post1772115
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 12th January 2017 at 13:29. |
|
13th January 2017, 23:22 | #177 | Link |
Registered User
Join Date: Nov 2003
Posts: 365
|
Back to RM_Logo... A situation has come up which I haven't seen any reference to. I have an interlaced video. The earlier ones of mine were not. I remember with Delogo (in VirtualDub), there is an "interlaced" switch. Furthermore, somewhere it was said that you should do Delogo Vdub filter BEFORE any other processing, which I assume would include any kind of deinterlacing, IVTC, etc.
I find no reference to interlaced video in these rm_logo discussions. But it occurred to me that it is very likely that NO inpainting should be done on interlaced source (mode="both"). I don't know much about inpainting, but knowing simply that it pulls pixels from nearby makes me think it would wreak havoc on an interlaced frame where there is much motion between the fields. Am I on the right track?? I was going to use "deblend" only, but just a little bit of inpainting (Alphatorepair around 100) cleans it up better. Yet I worry that footage where interlacing shows might get really messed up. |
14th January 2017, 07:56 | #178 | Link |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
I'm not sure I've de-logoed interlaced video before, but I had a look at the RMLogo and InPaintFunc scripts, and neither of them have any options regarding interlaced video I could see, so I imagine you'd need to de-interlace first.
The VirtualDub plugin handles interlaced video by splitting the frames into fields, de-logoing them separately, then it puts them back together again. For someone who isn't me and knows what they're doing, it'd no doubt be possible to add the same ability to the RMLogo script. I've ITV'd before removing logos on ocassion. My main motivation there would have been to reduce the number of frames requiring logo removal to speed it up. I'm not sure there's a reason why that's a bad idea. Many times for progressive video if I'm downscaling I've done so before the logo removal. Technically it mightn't be ideal, but it doesn't seem to make much difference. If you're double frame rate de-interlacing I guess that means you'd have twice the number of frames to de-logo if you de interlace first. Bummer..... Actually, thinking about it, I wonder if converting the video to RGB first with ConvertToRGB(interlaced=true), running the logo removal on it as though it's progressive, then converting it back to YUV with ConvertToYV12(interlaced=true) would be sufficient. I'm not sure why that wouldn't be okay. If so, it'd just be a matter of adding an option to the script for specifying if the source is interlaced so the conversion to RGB and back is done correctly. Someone more clever than me might be able to offer a more informed opinion on that one. Last edited by hello_hello; 14th January 2017 at 08:05. |
14th January 2017, 08:02 | #179 | Link | |
Registered User
Join Date: Mar 2011
Posts: 4,823
|
Quote:
Cheers. |
|
14th January 2018, 07:43 | #180 | Link |
Registered User
Join Date: Mar 2014
Location: Hungary
Posts: 115
|
Hi!
I tried some delogo scripts (DeLogo, rm_logo, X-Logo) but none of them worked. I'm trying to get StainlessS's rm_logo (0.6) to work now. This is the error that I get: https://vgy.me/wt4aW5.png If I don't load the AviSynth_C.dll this is what I get: https://vgy.me/LvRVM3.png What should I do? Is there an up to date plugin that actually works and doesn't need tons of other plugins? |
Thread Tools | Search this Thread |
Display Modes | |
|
|