Log in

View Full Version : Help in Spatial field-blend source, field-blend in a part of the picture, not all


real.finder
11th December 2013, 15:50
hi all :)

need help in Spatial field-blend source, field-blend in a part of the picture, not all of it

and of course, the source is generally field-blend and I managed to deal with it, but there are such cases

http://i.imgur.com/fmGNQYc.png



and

http://i.imgur.com/3kZRylQ.png





Whether with bob + srestore or AnimeIVTC(2)

Sample1 (www.solidfiles.com/d/27952bbfbd/)

Sample2 (http://www.solidfiles.com/d/82a604f848/)

Note, this may not appear when you move between frames, but it will appear in full encoding

It's a wicked status :devil:


thanks

edit: fixed here http://forum.doom9.org/showthread.php?t=170364 in mode22

ty2010
11th December 2013, 22:18
I had similar content and ended up using restore24, it seems to work better for cam and vhs.

poisondeathray
12th December 2013, 03:50
and of course, the source is generally field-blend and I managed to deal with it, but there are such cases






If you can deal with most of the other parts, and it's only certain sections like that panning shot , you can bob deinterlace, interpolate over the bad frames using various mvtools2 functions and srestore . But that will give you "jerky" movement similar to a 3:2 judder because 59.94p (unique frames) => 23.976p . So you can go one step farther and interpolate over bad frames to 59.94p, then interpolate to 119.88p , then select every 5th frame (so they are evenly spaced in time)

eg. for the panning sequence (1MB, xvid/avi)
https://www.mediafire.com/?27yoc5lmai7ys76

Interpolation only works well on certain types of content; if there are rotational movements, occlusions and objects moving in front of each other, complex non predictable motions - the results can be poor .

In your example, the pattern after bobbing was 1 good frame, 4 bad frames. So it's quite easy to replace those 4 "bad" frames using the good frames on either end of each section. The function used below is called "rx" and it replaces the 1st frame listed, plus the number after. e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points. You can use a spreadsheet to auto fill once you get the pattern down, assuming the pattern holds (instead of manually typing)

There are some artifacts on the right edge border from the interpolation. You can crop that out or play with some of the settings like hpad/vpad for msuper, and other related interpolation scripts (there are a bunch of variations and related scripts on this theme) , you might get slightly better results.



MPEG2Source()
crop(4,0,-8,0,true)
yadifmod(order=1,mode=1, edeint=nnedi3(field=3)) #or use a different bobber

rx(504,4)
rx(509,4)
rx(514,4)
rx(519,4)
rx(524,4)
rx(529,4)
rx(534,4)
rx(539,4)
rx(544,4)
rx(549,4)
rx(554,4)
rx(559,4)
rx(564,4)
rx(569,4)
rx(574,4)
rx(579,4)
rx(584,4)
rx(589,4)
rx(594,4)
rx(599,4)
rx(604,4)
rx(609,4)
rx(614,4)
rx(619,4)
rx(624,4)
rx(629,4)
rx(634,4)
rx(639,4)
rx(644,4)

###trim to section of interest
Trim(503,648)

###interpolate to 120p
source=last
super = source.MSuper(pel=2)
backward_vec = MAnalyse(super, overlap=4, isb = true, search=3)
forward_vec = MAnalyse(super, overlap=4, isb = false, search=3)
source.MFlowFps(super, backward_vec, forward_vec, blend=false, num=120000, den=1001)

###take every 5th frame
selectrangeevery(5,1)
assumefps(24000,1001)
addborders(6,0,6,0)



function RX(clip Source, int N, int X)
{
# N is number of the 1st frame in Source that needs replacing.
# X is total number of frames to replace
#e.g. RX(101, 5) would replace 101,102,103,104,105 , by using 100 and 106 as reference points for mflowfps interpolation

start=Source.trim(N-1,-1) #one good frame before, used for interpolation reference point
end=Source.trim(N+X,-1) #one good frame after, used for interpolation reference point

start+end
AssumeFPS(1) #temporarily FPS=1 to use mflowfps

super = MSuper()
backward_vec = MAnalyse(super, isb = true)
forward_vec = MAnalyse(super, isb = false)
MFlowFps(super, backward_vec, forward_vec, blend=false, num=X+1, den=1) #num=X+1
AssumeFPS(FrameRate(Source)) #return back to normal source framerate for joining
Trim(1, framecount-1) #trim ends, leaving replacement frames

Source.trim(0,-N) ++ last ++ Source.trim(N+X+1,0)
}

real.finder
12th December 2013, 10:53
thank you guys :)

I'm trying as your advice

Other sample was added

----------


poisondeathray, the result is fantastic in your sample (https://www.mediafire.com/?27yoc5lmai7ys76), but difficult to apply it manually

Can be there a script do this? Or maybe an update for srestore (http://forum.doom9.org/showthread.php?p=1650423#post1650423)


thanks