I attemp to acquire old family VHS with an ATI TV wonder 600 PCI.
I use composite input.
I capture in 720*576 , I use picvideo compression and lame MP3 , I use virtualdub capture
I have no drop frame
When I use the same cable on the TV (CRT or LCD) all is ok.
When I Capture I have very strange HUE variation.
The start time is always in the same time but it's for sometime 1 seconde, sometime 10 seconde.
As you see in the picture , there is the problem in the same scene .
On the first picture you see the scene with normal color, on the second picture, 1 second later hue is bad....
On virtualDub with hue/saturation/intensity I can adujust picture (hue -99,sat 0.84) and obtain the normal image but it's a very long job to apply filter on 1 to 10 second in 2 to 20 time per minute.
Where this Hue probleme could come from ? ATI card ? ati drivers ?
since the problem is not on the tv and is for all my VHS, i think the is no probleme with the VHS or the VCR.
Thanks for your help.
+ Reply to Thread
Results 1 to 27 of 27
Thread: Strange Hue problem
I suppose that the vcr is VHS and S-Video is not available. If you have a DVD recorder, then use it in passthrough mode to obtain S-Video output and use S-video input from ATI600. Or you may try other brand capture card.
I'd ask, what is the final destination for these videos? If what you want is a DVD for final output, you'd have to recompress audio and video alike, which has a big cost in quality. If what you want is to permanently archive the videos as digital media, and possibly to reprocess them or clean them up later (which I think they probably need), you shouldn't capture to lossless compressed video and lossless compressed audio for achiving (you don't say what quality settings you used for picvideo).
You should also be aware that your shadow details are crushed and highlights are blown away.
Does this hue change always occur in the same place on the video, or within the same time interval? It's possibly a defect in the capture card. How about other tapes, does this same problem occur?
Last edited by sanlyn; 9th Nov 2012 at 16:39.Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end. -- Henry David Thoreau
thanks for you answer.
The vcr is a PAL/SECAM capabilitie .
This error append every time at the same time,for exemple in the picture it start when the man in black on the left enter in the scene and go to the rigth.
I ask a friend to obtain an DVD recorder to test passthroug next week.
Do you think it's a possible low signal level who make this problem? ( the same vcr/cable direct to the tv do not have the problem)
I just ant to restore this family VHS but the built-in dvd recorder do not permit to apply filter like virtualdub capabilities.
I use picvideo with an "18" quality value.
Thanks again for your help
You need a TBC in there.
The signal off the tape isn't stable.
This purple/green issue is common with PAL tapes in need of TBC.
It's actually one of my first experiences with PAL tapes in the 1990s.
lordsmurf and hech54 give some good advice. The way that a TV displays output from a VCR is different from the way a digital recording device responds to that same output. If your friend's DVD recorder has a built-in tbc, it might give better results. Mind you, not all DVD recorders have built-in tbc circuits. If they do, those tbc's are not as effective as shop-grade tbc's or those found in high-end tape players. But they can help.
For archiving and/or for any cleanup of your captured video, you're better to use lossless huffyuv compression. If you did use an input filter when you captured the video shown in your image, you have increased contrast beyond the ability of most encoders to handle high contrast levels. Your shadow areas are blacked out (crushed), and the brightest detail features are being burned away (clipped). For audio, capturing to lossy compression such as MP3 will lower audio quality with each processing step. So, again, it all depends on how you plan to handle your final output. With the methods you describe so far, final output to standard DVD won't be possible without more processing that would involve serious quality loss.Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end. -- Henry David Thoreau
The U channel is being copied to the V channel. So instead of YUV you have YUU during those shots. You can get the bricks back to their normal color with a hue change but some other colors will still be wrong. You need to fix the capture process to prevent the problem.
Say, some ingenious insight, jagabo. You're obviously correct, but how does that bluish U channel copy occur? (rhetorical question, I guess). Certainly makes sense; if most red is wiped out it also kills yellow.Our inventions are wont to be pretty toys, which distract our attention from serious things. They are but improved means to an unimproved end. -- Henry David Thoreau
If you run this script you'll see that you can create the bad colors from the good image:
ImageSource("0003.jpg") ConvertToYV12() U = UtoY() YtoUV(U, U, last)
jagabo : perfect !!
this script :
U = UtoY()
YtoUV(U, U, last)
give me the video totally bad .Thank you !! now, I know the name of the problem.
Do you think if I use huffyuv I can't have this problem ? or this problem is caused by hardware or drivers ?
If I have the dvd recorder, i will test it but waiting this, I will re-test with another hardware...
It happens most commonly swapping from PAL to NTSC, using composite connections.
I had a lot of tapes where this was an embedded error.
My first successful restoration job was to completely undo the problem.
To this day, it's still one of the hardest jobs I'd even done.
This was well more than 10 years ago now.
The OP lists "Fance" as his location. (France?)
This may be a SECAM<>PAL issue.
just an idea
if I plug my vcr to my LCD with composite
and I plug my lcd scart to my capture card (composite)
when I play vcr, I have the composite signal to my capture card ? not ?
can I have the benefit of the LCD line TBC ?
what about the quality ? I loss lot of thing or it's acceptable ?
It is worth to try. Don`t cost any money and nothing wrong could be happen.
If your TV processes the signal and is not simple wire between AV input and SCART from back then I thing the problem is solved.
You have composite but the signal is healthy and don`t create anymore problems.
About the quality, no big loss in the worst situation. May also come even beter.
Last edited by danno78; 12th Nov 2012 at 05:56.
ImageSource("0003.jpg") ConvertToYV12() U = UtoY() V = VtoY().Invert() YtoUV(U, V, last)
it's work !!!
on the original video, the bad scene was good and the good scena was bad.
But (of course) another question, how to say to avisynth to detect V channel inverted, there is a function or do i cut all the scene, export them, correct them and paste them in the final cut ?
Check shots with more colors to be sure inverting V works for all of them. Then use Trim() to break your source into segments. Then add them back together at the end.
src = AviSource("filename.avi") inv = YtoUV(UtoY(src), VtoY(src).Invert(), src) v1 = Trim(src, 0,9) v2 = Trim(inv, 10,19) v3 = Trim(src, 20,29) v4 = Trim(inv, 30,39) v5 = Trim(src, 40,0) v1++v2++v3++v4++v5
that is to say, I need to seek the frame number where video is bad
after that I tune the avi src
and after merge all
I have more than 2h by vhs to do, it isn't possible to 'statistic' any picture (mesure green % for exemple or another caracteristique of an V channel inversion ) ?
for exemple, it isn't possible to compare V chanel of a frame number to the V channel of the frame-1, frame-2,frame-3 (or an average of the 3) and if it's different, I inverse the V chanell, if it's the same I go to next frame ?
v1=AviSource("video.avi").ConvertToYV12() v2=Trim(v1, 1, 0) Subtract(v1,v2)
"But that will also give a flash at scene transitions. You could then separate the Y and V channels (maybe U too). The Y channel will usually give a flash at scene transitions but not at V inversion transitions. Then you have to switch videos based on those flashes that occur in the U channel but not the Y channel. "
Sorry I don't understand.
I test the script and when the problem occur I have one frame with color (the other seens to be in grayscale) but I don't know how to detect this color an start an action in a script.(I'm a java developper but not a goot avisynth dev ).
A function who test ifGreyScale() exist in avisynth ?
You would use a boolean that changes state each time the chroma flashes but not luma, then switch clips based on that boolean. ScriptClip() has tests for such things:
I haven't used those functions much so I'm not familiar with them.
Last edited by jagabo; 13th Nov 2012 at 07:43.
with this :
function correct(clip c)
global U = c.UtoY()
global V = c.VtoY().Invert()
c=YtoUV(U, V, c)
ConditionalFilter(clip , correct(clip2.trim(0,1)), clip,"VDifferenceToNext()", ">", "10", true)
I can detect the V difference (count >10 for my test video)
and This will replace the last frame before a scenechange
with the first frame after the scenechange
Waht I want is to switch from clip to clip2 and re switch to clip1 when eval is >10 , it's possible in avisynth to switch source ?
global scene_change = "VDifferenceToNext()" > "10" ? true : false
#if diffrence switch scr
global scr = scene_change ? !scr : scr
# if scr switched
U = scr ? clip1.UtoY() :nop
V = scr ? clip1.VtoY().Invert():nop
clip1 = scr ? YtoUV(U, V, c):nop
# just for debug
I have an synthax error but I don't see where
Last edited by dan59; 13th Nov 2012 at 10:41.
My problem is here :
scene_change = "VDifferenceToNext()" > "10" ? true : false
when I use
value never change !
but when I use
ConditionalFilter(clip2 , clip1,clip2, "VDifferenceToNext()", ">", "10", true)
on the display subtitle, the boolena value change
what is wrong in my syntax ?
Other way :
but how to add this function (ConditionalSelect ) to my avisynth2.58 official release ?
Last edited by dan59; 14th Nov 2012 at 03:26.
jagabo : you're rigth this function can't be use outside of ConditionalFilter().
With this :
global clip2 = clip1.correct().ConvertToYV12
ConditionalSelect(clip3,"src1 = VDifferenceToNext()>10 ? !src1 : src1 "+chr(13)+"(src1 ==true ? 0 : 1)", clip1, clip2,show=true)
it's work on 80% but I have another problem.
sometime, 2 consecutive frame have a VdifferenceToNext() >10 -> I switch and I reswitch but In the fact the good videos is replaced by the error video.
I need to add a value to remember what I have do the previous frame.-> I know how to correct
Another problem is :
When I detect the frame have U and V inverted, I switch the source FOR THE NEXT frame , that is to say I have an bad frame in the final video.Do you know how to say to avisynth to switch with "clip2 -1 frame" ?