Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. Domains: forum.doom9.org / forum.doom9.net / forum.doom9.se |
|
|
#1 | Link |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
vhs deinterlacing problem
I'm trying to deinterlace a vhs copy of "A Goofy Movie" but I'm having an issue deinterlacing the chroma for some reason. Here is an unfiltered sample clip.
http://www.mediafire.com/?wn63a6xeu7d8poz for some reason I still see interlacing artifacts on the chroma even after deinterlacing. |
|
|
|
|
|
#2 | Link |
|
Registered User
Join Date: Nov 2006
Posts: 780
|
Hmm yeah strange artefact are you sure there isn't dropped frames ? qtgmc + tdecimate don't get rid of it so wait for clever answers
For your colors use this: Ylevels(0, 1.000, 255, 0, 235) tweak(hue=0.0,sat=1.4,bright=0,cont=1.0,coring=false) |
|
|
|
|
|
#3 | Link |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
Well when I was capturing it a total of 17 frames were dropped total form the 77 minute recording, is it possible the chroma and luma are out of sync on the time line? Should I try recapturing? Give me a minute I'll try your script.
Last edited by some dude; 7th June 2012 at 03:52. |
|
|
|
|
|
#5 | Link |
|
Registered User
Join Date: Nov 2006
Posts: 780
|
see here for ylevels: http://avisynth.org/mediawiki/Ylevels
|
|
|
|
|
|
#7 | Link |
|
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,407
|
It's some sort of YUY2 <--> YV12 mistreatment. Not sure if I've ever seen s-th like exactly this, however, it's not difficult to fix.
Code:
avisource("clip.avi")
assumetff()
o = last
x = o.separatefields().selecteven().assumeframebased()
Y = o.converttoYV12()
U = x.UtoY().converttoYV12()
V = x.VtoY().converttoYV12()
YtoUV(U,V,Y)
assumetff()
#bob()
return(last)
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
|
|
|
|
|
#8 | Link | |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
Quote:
|
|
|
|
|
|
|
#9 | Link |
|
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,783
|
I am always fascinated by what Didée comes up with and always try to learn. So, I downloaded the clip, used his script, and then tried understanding what was going on in each line.
I am sure that I am missing something, but it looks like 99.9% of the "fix" happens in this line: Code:
Y = o.converttoYV12() In fact, when I substituted a stackhorizontal for the return, to look at the difference between the result of this initial colorspace conversion, and the result of taking all those additional steps, I could not see any difference at all: Code:
stackhorizontal(YtoUV(U,V,Y).assumetff.separatefields(),Y.separatefields()) |
|
|
|
|
|
#10 | Link |
|
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,407
|
Yes, you are correct. In fact, one coffee after making the post, I thought "waitaminute, isn't all that buzz the same as doing a progressive conversion?!"
And that's just what has happened. The data once was interlaced YV12, then has been converted to YUY2 via progressive sampling. And the posted script is just a convoluted way of doing ConvertToYV12(interlaced=false) on an interlaced YUY2 clip. /me guilty for thinking too complicated.
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
|
|
|
|
|
#12 | Link | |
|
Avisynth language lover
Join Date: Dec 2007
Location: Spain
Posts: 3,442
|
Quote:
It's certainly not the same in general, as the additional steps throw away the chroma of the bottom field. However, I can see that it will work if the original botched YV12 to YUY2 conversion was done by point resampling of chroma. (I haven't looked at the sample.) |
|
|
|
|
|
|
#13 | Link |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
how would I solve this problem with a source that is already yuv12 though. It appears that my pvr 150 is doing this with mpeg-2 recordings as well.
tried this DGDecode_mpeg2source("C:\Users\Anthony\Desktop\fgfdgf\1257_20120625214954.track_224.d2v", info=3) converttoyuy2(interlaced=false) o = last x = o.separatefields().selecteven().assumeframebased() Y = o.converttoYV12() U = x.UtoY().converttoYV12() V = x.VtoY().converttoYV12() YtoUV(U,V,Y) assumetff() bob() return(last) and I ended up with this
Last edited by some dude; 26th June 2012 at 05:56. |
|
|
|
|
|
#14 | Link |
|
Registered User
Join Date: Jan 2006
Posts: 1,869
|
It looks like DOCI
http://forum.doom9.org/archive/index.php/t-158230.html I have the same pvr150. It's blending the chroma in the interlaced frames of the pulldown pattern. It can be exactly fixed. |
|
|
|
|
|
#15 | Link |
|
Registered User
Join Date: Dec 2007
Location: Germany
Posts: 632
|
I don't know about that particualar PVR but looking at that screenshot there are definitely also luma ghosts, which means that the PVR, if it does the encoding by itself, is most likely also doing some crappy denoising while recording (look at the black hair outline, it's there 3 times).
Whether or not a recording device does encoding or just streaming to hard disk can be easily determined: If there are quality options (like SP, LP and so on), then it for sure does encode (and filter) the recording. |
|
|
|
|
|
#16 | Link | |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
Quote:
|
|
|
|
|
|
|
#18 | Link | |
|
Registered User
Join Date: Jan 2008
Posts: 35
|
Quote:
converttoyuy2(interlaced=true) doci() bob() just to see if it worked, I'm planing to use tdeint to deinterlace once I fixed this chroma problem. My final video was a little jittery, the chroma was fixed in some places but not in others. Should I trim a few frames, how many? Are there any other filters that do anything like this? How have other people with wintv pvr-150s got around this problem? |
|
|
|
|
|
|
#19 | Link |
|
Registered User
Join Date: Jan 2006
Posts: 1,869
|
Since it's not adaptive, you have to hope that the problem mostly fits a constant pattern. It could be that your pattern is not lined up to the way it's trying to fix it, that it, it's fixing it sometimes at the right spots and wrong spots.
That's why I say trim; this is an easy way to change the relative phase of the pattern. I don't have time to make it adaptive. |
|
|
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|