1

(12 replies, posted in Using SVP)

Bringing this post back from the dead a little, but over the past month I have tried manipulating just about every combination of variable in the override.js, including the settings recommended by chainik.

analyse.main.penalty.lambda actually benefited from lower values, and most other variables barely affected the resulting interpolation at all. Even trying to mask artefacts will create new artefacts in many cases.

The only setting that made a consistent reduction in all the artefacts was increasing the block size to its highest-possible value. Sadly of course this means that 480p video is just about perfect, 720p video has problems, and 1080p video is unwatchable.

At some point I gave up and stopped using SVP, but In the hopes that someone can shed some light on this problem case, I have uploaded a webm of this scene.

http://a.pomf.se/aojlih.webm

2

(12 replies, posted in Using SVP)

I'll test those options later then, that's awesome if there needs to be no changes to get the same desired effects.

It still seems like a reasonable idea to implement in the future as an option moving into 4K, as I'd imagine 32px was requested because of the rise of 1080p video.

3

(12 replies, posted in Using SVP)

Chainik wrote:

historically MVTools
since then there're no real evidences that 32px block is somehow better than 16px  hmm
and now you want 64 and 128 px

we just don't want to do useless job wink

But I gave you the evidence you want in the OP. I used a GIF in the OP to show that reducing the frame size(in effect emulating larger block sizes) dramatically reduces the artifacts of animated footage, while preserving camera motion interpolation.


Even the "animation guide" on the SVP website recommends 32px block size, albeit with overlap. I don't recommend the overlap as it doesn't improve camera motion and only increases artifacts, but this and my GIF proves the trend that increasing block size reduces object artifacts while preserving camera motion.

The reason few if any anime/cartoon watchers use SVP is because animation is impossible to motion interpolate without introducing awful artifacts everywhere.
It doesn't matter if you argue that "the algorithm does a pretty good job", because one bad frame is enough to turn off most interested people, and you are guaranteed to get a few bad frames in any animated video.

Increasing the block size allows for camera interpolation in the place of object motion interpolation, which delivers only the benefits of SVP with none of the drawbacks.
64 and say 128px block size would in effect create an option where those who like the idea of camera interpolation, but hate the idea of object interpolation, can still enjoy some benefits to SVP.

Plus as you mentioned, the benefits are also present outside of animated footage, as 4K footage is essentially double the frame size of 1080p footage, so it would make sense to have at least double the block size available, and 8K video is obviously going to happen in the distant future, but could be brought into consideration now.

As a stopgap, I suppose it could be possible to analyse a downsampled 1080/720p-540/360p video but then apply the interpolation to the original footage? I'm not sure if this would reduce performance, though I imagine it could be implemented easily.

4

(12 replies, posted in Using SVP)

Fair enough, so it is not a priority for development then?

5

(12 replies, posted in Using SVP)

Looking further into the code, it would appear that in src\svpflow1\MVAnalyse.cpp the following code is present on lines 102-107

    if (( ad.nBlkSizeX != 8 || ad.nBlkSizeY != 8 ) &&
            ( ad.nBlkSizeX != 16 || ad.nBlkSizeY != 8 ) &&
            ( ad.nBlkSizeX != 16 || ad.nBlkSizeY != 16 ) &&
            ( ad.nBlkSizeX != 32 || ad.nBlkSizeY != 32 ) &&
            ( ad.nBlkSizeX != 32 || ad.nBlkSizeY != 16))
        env->ThrowError("SVAnalyse: Block's size must be 8x8, 16x8, 16x16, 32x16, 32x32");

Would it break the code in any way to simply add 64, 128 and 256 options? I'm not sure how to compile the code, so I couldn't test it myself.

6

(12 replies, posted in Using SVP)

The problem with "local" motion Is that unless the algorithm improves, it's no good for anime  :> Plus, large block size still preserves camera motion, so you at least remove those unsightly 24fps camera pans!

Giving the option, even if it is in preparation for 4K would be nice, though.

7

(12 replies, posted in Using SVP)

I was following the guide to optimize SVP for anime sources, but I was getting very unsatisfactory results.

The best compromise between smoothness and artifacts I could obtain were using these settings:
http://i.imgur.com/GmuS9p0.png
Here is my justification for each setting:
1m, combined with "Above normal" smoothens camera motion a little without causing big relative motion drops when masking.
Sharp works best, though "standard" can "hide" the artifacts a little.
Wide search, precision and grid step had little effect on the artifacts or smoothness, though a small, slow search radius helped a little.

The interesting parts are the vector grid/block size and the frame size.

32px Interpolated camera motion had the least artifacts, while decreasing frame size also decreased artifacts further. Here is an image to show this:
http://i.imgur.com/rJ5wjrE.gif
In the scene, a series of tables are rotating and moving while the camera itself is also rotating and moving. I'm not too concerned about interpolating the table rotation, as no SVP algorithm can elegantly handle sudden movements like that. I'm more interested in getting the camera rotation to be smooth, without causing the objects in the scene to also interpolate.

This suggests that having a 64px or even 128px block option would contribute even further towards reducing artifacts, or better yet an adaptive block size ala x264.

The problem with reducing framesize is that while the artifacts are reduced, the drawbacks are quite obvious.

Would it be possible for the SVP developers to at least add a 64px and 128px block size option into SVAnalyse? And likewise as a preset in SVP.

Thanks.