Now comes the part where we apply these techniques to videos. In the beginning I applied these techniques
directly frame by frame on videos. But this led to considerable amount of flickering. So I decided to use
another approach to reduce the flickering by moving the strokes based on optical flow information. To do this
we split a frame into boxes and using the difference from the frame ahead we assign velocity to each of the boxes.
Once we have this information we can move the strokes in the frame to create a new frame. Alternatively while drawing
the new frame we could predict the location of a stroke in previous frame and then place the strokes.We could apply
the motion vector approach on just the parts which actually move. The results which were obtained using these
techniques are shown in the side. The final result which I showed in the beginning applied all these techniques. I used the watercolor simulation
while painting each frame and used motion detection to reduce flickering.
One of the reasons why the video flickers is that the still parts are redrawn again. So I decided to omit repeated
application of these techniques on parts of video that don't change. For this I had to perform foreground segmentation
on Video. As it turns out this problem has been addressed quiet well. In fact libraries like opencv come with built
in functionality to do this. But I decided to use a more novel approach which uses
eigenbackground subtraction and recursive error compensation. Click on the image above to view the results.
Once the motion segmentation is done NPR can be applied selectively over the portions which change with time.
Interesting effects can be achieved by alpha blending original frames and artistically rendered frames using
the segmetation result as a filter. For smooth blending a second component can be added to this filter which decays
with distance. Video on right shows some of the results that we could achieve.