This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

[HELP] Fragments disappear in hand-drawn animation
#11
Quote:...to make the program multilingual and it's not so difficult.
Yes, it is. Translating the buttons is not, but translating all the descriptions and only the parts that are not parameters is.

I initially had code for it but:
a. only one guy tried to translate something and I never heard back from him
b. I later had to remove translation support since it broken the application on different Linux distribution and Mac OS.
I still have it on my todo, but it's something that will take tons of time to add support for it back in not the translation itself.
So may be if I have a lot of free time. (at least 3 weeks where I don't have to work or do other stuff)

Cu Selur
Reply
#12
Had a chance to look at the 5 sample:
-> mClean with SAD threshold 900 and SpotLess or RemoveDirt seems to work well for those clips.

No clue so far regarding the last clip. I understand why SpotLess&Co are all struggling with it. (sudden only one frame changes that motion estimation wise do not really fit)
-> I would recommend to ask over at videohelp.com whether someone has a got idea regarding spot/dot removing for that clip. (I think it should be possible using some mask since the spots are mainly white)

---
side question: did you do anything with that source beforehand? (source has a strange resolution and iit has some artifacts that look like a some frame interpolation and/or upscaling artifacts)

-> MCTemporalDenoise + Setting "very high" is probably what I would recommend for that source. (one could probably cleanup even more, but it would probably require some manual scripting and lots of testing)

Cu Selur
Reply
#13
Thanks, I'll experiment with these filters and settings.
At SpotLess & Co, this is not a one-time case, even when processing 1 video, I noticed this.
---
I didn't do upscaling from the source. Perhaps the one who posted it did something with it. Perhaps I was trying to remove the noise of the video itself, I don't remember exactly which of the videos I took as an example. In any case, the noises of dots, spots, scratches (black and white) were present both there and there. In any case, I did not do interpolation and upscaling.


Thanks a lot for the program, I found it quite by accident just on videohelp.com. When searching for analogues, Avisynth does not find it like that, I think it would be more widespread with different languages. Very multifunctional, maybe not quite easy to learn, but there are a lot of possibilities with filters, while having an interface and a preview. Avisynth has not worked for me on windows 10, and even in your program the tab is not active, but there are enough other filters.
Reply
#14
To use Avisynth instead of Vapoursynth: Change "Filter->Support" from 'Vapoursynth' to 'Avisynth'.
Additionally you might want to change "Config->Internals->Avisynth->Avisynth" type to "64bit".

Cu Selur
Reply
#15
Thanks, I figured it out. Are they not compatible with Vapoursynth filters for use together?
Reply
#16
Nope.
In theory one could use the Avisynth filters in Vapoursynth, but since I didn't have good experiences with it (became slow and/or unstable and it's Windows only, I didn't incorporate it in Hybrid).
+ there are very few filters in Avisynth which are not available in Vapoursynth.

Cu Selur
Reply
#17
I found some filter changes that prevent unwanted losses for SpotLess:
https://forum.doom9.org/showthread.php?p...ost1959545
Is there anything we can do about it? Further in the topic there are also some settings, maybe something is suitable for the filter?
Reply
#18
Quote:Is there anything we can do about it?
Okay, the baiscally try to Mask the content.

To use it in Hybrid with Avisynth one could write the whole stuff in a custom section.
So if you want to test it.
  • set "Filtering->Support" to "Avisynth"
  • enable a "Filtering->Avisynth->Custom" and enter:
    LoadPlugin("I:\Hybrid\64bit\Avisynth\AVISYN~1\mvtools2.dll")
    LoadPlugin("I:\Hybrid\64bit\Avisynth\AVISYN~1\masktools2.dll")
    LoadPlugin("I:\Hybrid\64bit\Avisynth\AVISYN~1\MedianBlur2.dll")
    LoadPlugin("I:\Hybrid\64bit\Avisynth\AVISYN~1\RgTools.dll")
    Import("I:\Hybrid\64bit\Avisynth\avisynthPlugins\SpotLess.avs")
      
    /*
        SpotTest(),
        Purpose:
            Spotless produces frame global changes [most pixels are changed], here we want to try alter only real spots where there is significant change in spotless Y [by YTh8]
            and also that are near grey in source [by CTh8], these targeted pixels are then overlayed from Spotless result onto original src.

        Src,       Pre-Spotless source
        Filtered,  Spotless result
        YTh8,      threshold for Y in 8 bit range.
        CTh8,      threshold for Chroma in 8 bit range.
        YNoiseTh8, ?????
        Show,      Show Masks.Mask is the final mask made from MaskY and MaskC
    */
    Function SpotTest(clip Src,clip Filtered,int "YTh8",int "Cth8",int "YNoiseTh8",Bool "Show") { # 8 -> 16 bit YUV444 only
        YTh8      = Min(Max(Default(YTh8,12),0),255)
        CTh8      = Min(Max(Default(CTh8,12),0),255)
        YNoiseTh8 = Min(Max(Default(YNoiseTh8,8),0),255)
        Show = Default(Show,False)
        try {bpc = Src.BitsPerComponent} catch(msg) {bpc=8}
        try {Y444=Src.IsYV24||Src.Is444} catch(msg) {Y444=false}
        Assert(Y444,"SpotTest: Must be YV24/YUV444")
        YTh      = BitLShift(YTh8,bpc-8).String
        CTh      = BitLShift(CTh8,bpc-8).String
        YNoiseTh = BitLShift(YNoiseTh8,bpc-8).String
        SY  = Src.ExtractY
        FY  = Filtered.ExtractY
        PSY = SY.SelectEvery(1,-1)
        NSY = SY.SelectEvery(1, 1)
        MaskN   = Mt_Lutxyz(PSY,SY,NSY,"x "+ YNoiseTh + " - y <= y z "+ YNoiseTh + " + <= & z "+ YNoiseTh + " - y <= y x "+ YNoiseTh + " + <= & | 0 range_max ?")
                                                                                           # ( ((x-YNoiseTh <= y) & (y <= z+YNoiseTh)) | ((z-YNoiseTh <= y) & (y <= x+YNoiseTh)) )  ? 0 : 255 ## Infix @ 8 bit
                                                                                           # ((YPrv-YNoiseTh <= YCur <= YNxt+YNoiseTh) || (YNxt-YNoiseTh <= YCur <= YPrv+YNoiseTh)) ? 0 : 255

        MaskY   = Mt_Lutxy(SY,FY,"x y - abs " + YTh + " > range_max 0 ?")                  # "(abs(x-y) > YTh) ? 255 : 0"
        MU      = Mt_Lut(Src.ExtractU,"x range_half - abs")                                # "abs(x - 128)"
        MV      = Mt_Lut(Src.ExtractV,"x range_half - abs")                                # "abs(x - 128)"
        MaskC   = Mt_Lutxy(MU,MV,"x 2 ^ y 2 ^ + .5 ^ round " + CTh + " <= range_max 0 ?")  # "(round(((x^2)+(y^2))^0.5) <= CTh) ? 255 : 0"    # 2D chroma distance from grey (by Pythagoras)
        MaskN = MaskN.mt_Expand
        MaskY = MaskY.mt_Expand
        MaskC = MaskC.mt_Expand
        MaskAnd = MaskC.Mt_Logic(MaskY,"and")
        MaskAnd = MaskAnd.Mt_Logic(MaskN,"and")
        MaskSelect = MaskAnd.mt_Expand.Blur(1.0)

        Overlay(Src,Filtered,Mask=MaskSelect,Opacity=1.0)
        CGREY = MaskSelect.Mt_lut("range_half")
        SEP=$FF0000
        HBAR=Src.BlankClip(length=1,Height=4,color=SEP)
        LFT=StackVertical(Src.Subtitle("Src"),HBAR,Filtered.Subtitle("Filt"),HBAR,Last.Subtitle("Result"))
        MID=StackVertical(YtoUV(CGrey,CGrey,MaskN).Subtitle("MaskN"),HBAR,YtoUV(CGrey,CGrey,MaskY).Subtitle("MaskY {abs(SrcY-FiltY) > YTh}"),HBAR,YtoUV(CGrey,CGrey,MaskSelect).Subtitle("MaskSelect=MaskAnd.mt_Expand.Blur(1.0) {Blk=Src used : Wht=Filt used}"))
        RGT=StackVertical(YtoUV(CGrey,CGrey,MaskC).Subtitle("MaskC {Src Chroma distance from Grey <= Cth8"),HBAR,YtoUV(CGrey,CGrey,MaskAnd).Subtitle("MaskAnd {MaskN & MaskC & MaskY}"),HBAR,YtoUV(CGrey,CGrey,CGrey))
        VBAR=LFT.BlankClip(length=1,width=4,color=SEP)
        STK = StackHorizontal(LFT,VBAR,MID,VBAR,RGT)
        (Show) ? STK : Last
    }

    ConvertToYV24()
    Src=Last
    Filtered=SpotLess(RadT=1)
    YTH8     = 8
    CTH8     = 12
    YNOISETH8 = 2
    SHOW = False
    SpotTest(Src,Filtered,YTH8,CTH8,YNOISETH8,SHOW)
    Return Last.ConvertToRGB32

    ConvertToRGB32()
    # colorformat RGB32
    (fixed #colorspace RGB32 -> # colorformat RGB32)
    in it. Make sure to adjust the paths in the Import- and the LoadPlugin-lines.
    If you set "SHOW = True" also add
    # width 4320
    # height 3240
    and expext the whole thing to get terrible instable unless you disable multithreading (Filtering->Avisynth->Misc->Script->Miscellaneous->Disable MT)

    Side note at least with these values it doesn't really remove much, but also doesn't wreak the image totally, still ad least some problems are still there.
    [Image: spotless-with-spottest.png]

    -> unless someone spends time on porting this to Vapoursynth I will at least not add direct support for this.
    If someone can show me that this actually can do more it might reconsider and even try to port this myself.

    Cu Selur

    Ps.: Note that the SpotLess version also notes: "NOT FOR cartoon/anime, live video only, sorry." So it's kind of to be expected that both the mask and the normal SpotLess have problems with your content.
Reply
#19
Found 'KillerSpots' (https://github.com/FranceBB/KillerSpots/...Spots.avsi) which is a RemoveDirt for Cartoon&Co. Smile
Ported it to Vapoursynth and added it to my current dev version.
Send you a link via pm. You just need to adjust the 'limit' value to remove a bit more and not screw the image.
I think that in combination with MCTemporalDegrain in 'heavy high' should work fine to cleanup the source.
Did a quick test here and it looked fine to me. Smile

Cu Selur
Reply
#20
Smile 
Thank you very much for your help! I will try to test these plugins, because for some reason it does not render with the settings that I threw off. Only the preview runs, with the example that you described above. Hope this closes these issues. Thanks!
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)