ajon
9th July 2012, 12:42
I have a very simple clip that I thought MAnalyze and consequently MFlowInter should easily be able to motion detect and compensate, but my results were less than spectacular when not enough image data surrounded the object to be motion compensated.
Thus I have two questions:
1. What parameters of MAnalyze and / or MFlowInter can be adjusted to improve the following scenario?
2. What parameters should be adjusted to get delta=2 to work at all (not just blend)?
scenario delta 1
The clip is a dot moving from left to right at a constant speed and I'm trying to interpolate an intermediate frame at 50% between two frames (time=50, ml=70 and delta=1)
http://s9.postimage.org/v1xynlkpr/dot_delta1.gif
scenario delta 2
With delta two and the parameters otherwise the same, the result gets a lot worse. It seems pure blending is used without any sort of attempt at motion compensation. I'm assuming the distance between the dot's position in frames N-2 and N+2 is too great for MAnalyze to find it and that's why MFlowInter simply falls back to blurring instead..
http://s17.postimage.org/fwrdnqf6n/dot_delta2.gif
When I blow the pictures up by adding a lot of padding ( AddBorders(64, 48, 48, 48) ), the estimation gets a lot better for delta=1, almost perfect, so I'm guessing it has to do with MAnalyze not getting the data it needs to properly detect all vectors. I'm however currently stuck at trying to figure out which parameter would affect the results in a positive way, so I'm turning to the professionals :)
FYI. Alternative views with only the compensated clip showing and a rectangle around the clip dimensions in effect when MVTools were operating on the clip ("bounding boxes"):
http://s9.postimage.org/v61vy32u7/dot_delta1_bounding_box_nopad.gif http://s7.postimage.org/e217jwk8r/dot_delta1_bounding_box_padded.gif
References:
* The script statements used:
function getVector(super, isb, delta){
v = MAnalyse(super, overlap=4, isb=isb, search=3, blksize=16, delta=delta)
return MRecalculate(super, v, overlap=4, search=3, blksize=8, thSAD=400)
}
avisource("dot.avi")
super = MSuper()
bv = getVector(super,true,1)
fv = getVector(super,false,1)
MFlowInter(super, bv, fv, time=50, ml=70)
* An archive with the source clip and the entire script: dot_sample.zip (http://www.mediafire.com/?p232r82blynfj60)
Thus I have two questions:
1. What parameters of MAnalyze and / or MFlowInter can be adjusted to improve the following scenario?
2. What parameters should be adjusted to get delta=2 to work at all (not just blend)?
scenario delta 1
The clip is a dot moving from left to right at a constant speed and I'm trying to interpolate an intermediate frame at 50% between two frames (time=50, ml=70 and delta=1)
http://s9.postimage.org/v1xynlkpr/dot_delta1.gif
scenario delta 2
With delta two and the parameters otherwise the same, the result gets a lot worse. It seems pure blending is used without any sort of attempt at motion compensation. I'm assuming the distance between the dot's position in frames N-2 and N+2 is too great for MAnalyze to find it and that's why MFlowInter simply falls back to blurring instead..
http://s17.postimage.org/fwrdnqf6n/dot_delta2.gif
When I blow the pictures up by adding a lot of padding ( AddBorders(64, 48, 48, 48) ), the estimation gets a lot better for delta=1, almost perfect, so I'm guessing it has to do with MAnalyze not getting the data it needs to properly detect all vectors. I'm however currently stuck at trying to figure out which parameter would affect the results in a positive way, so I'm turning to the professionals :)
FYI. Alternative views with only the compensated clip showing and a rectangle around the clip dimensions in effect when MVTools were operating on the clip ("bounding boxes"):
http://s9.postimage.org/v61vy32u7/dot_delta1_bounding_box_nopad.gif http://s7.postimage.org/e217jwk8r/dot_delta1_bounding_box_padded.gif
References:
* The script statements used:
function getVector(super, isb, delta){
v = MAnalyse(super, overlap=4, isb=isb, search=3, blksize=16, delta=delta)
return MRecalculate(super, v, overlap=4, search=3, blksize=8, thSAD=400)
}
avisource("dot.avi")
super = MSuper()
bv = getVector(super,true,1)
fv = getVector(super,false,1)
MFlowInter(super, bv, fv, time=50, ml=70)
* An archive with the source clip and the entire script: dot_sample.zip (http://www.mediafire.com/?p232r82blynfj60)