| cr88192 2004-10-27, 8:55 am |
| recently I have been getting some fairly decent quality videos from this one
ftp site (given in the thread "Video Compression (Test Videos)").
in general, a minor issue comes up: the video is interlaced. interlaced
video is likely not that rare, but before I hadn't thought of it...
what if I want the video de-interlaced?... this is not presenting itself as
a terribly easy issue.
a few options come to mind:
ignoring the interlace, it is only a minor annoyance during movement and
this is how it would appear, eg, on tv's anyways. it causes liney noise
during movement, but is otherwise fine.
this is noticable to me, as my player can't play it much faster than slow...
averaging both fields from both frames, effectively halving the vertical
resolution. given this loses detail, it is not preferable.
doubling the rows for each interlaced frame, effectively converting each
frame into 2 half-height frames. this works, but causes the image to
seemingly vibrate up and down, which is unpleasant.
I also tried averaging the above and below rows for a given frame to try
faking the rows absent in the frame. this works well for motion, but makes
an annoying pulsating effect for any static or detailed parts of an image.
averaging 3 rows, the above, below, and previous (real) row:
only slight pulsating effect for static images;
the liny effect for movement is still fairly noticable however, though
slightly faded.
this does eat a little into framerate.
an idea that comes to mind could be also looking at the next frames, and
determining whether the above/below average or previous values are closer to
that point in the next frame and choosing that, but this is likely more
complicated and expensive.
yet, also possible is a previous/next average, which I have also not tried
(I feel dubious, this may also not eliminate the lines issue).
or something...
another mystery is what kinds of effects interlacing could have, eg, on
things like motion prediction (I can imagine my simple motion-predictor
behaving weirdly due to line alignment issues during movement, and my other
filters would likely generate extra harsh edges which could hurt
compression).
for interlaced coding (say, with some typical algo), would one usually have
to, say, split up the interlaced frames and code each seperately or such,
and on decode re-interlace them? (this conjures the idea of 2 parallel video
streams, one for all the even and another for all the odd lines...).
sorry if I am being stupid here, I am unsure...
|