Hi
I have old Samsung VPD93I PAL MiniDV camera and I think it has a CMOS censor problem or something that makes vertical stripes to anything it records live(directly to computer) or to tape on the camera.
It does not matter do you watch the output directly from the camera to a TV using AVoutput or to a computer true FireWire.
The stripes aren't very visible if recording in direct sunlight, but are very visible in low light conditions.
I have attached 3 files of the problem (taken with VirtualDub):
dv_vertical_stripes_blackbg_3sec.avi 11,5 MB I recorded with the lens cover on to isolate the problem.
dv_vertical_stripes_whitebg_3sec.avi 11,6MB I recorded with lens cover removed while pointed to a white wall.
dv_vertical_stripes_lowlight_3sec.avi 11,5MB Taken from a tape and recorded earlier on the camera on low light condition.
Is there any filters specialized to remove these kind of errors/noise?
Try DVDFab and copy Ultra HD Blurays and DVDs! Or rip iTunes movies and music! Download free trial !
+ Reply to Thread
Results 1 to 27 of 27
Thread


Looks like a kind of fixed pattern noise, likely related to the sensor if it changes according to varying light conditions
One approach is to use a custom horizontal blur . There is an avisynth function called "destripe" by *.mp4guy that can be configured with different settings and strengths . You would use different (weaker) settings for the daytime outdoor shots
eg.
original
destripe
Code:AVISource("dv_vertical_stripes_lowlight_3sec.avi") ConvertToYV16(interlaced=true) DeStripe(rad=3, offset=4, thr=56) DeStripe(rad=2, offset=1, thr=56) DeStripe(rad=1, offset=1, thr=64) #thr is strength, rad is "how big are the (whatevers)" offset is "how far apart are they" rad goes from 1 to 5, offset from 1 to 4, thr from 1 to bignumber function DeStripe(Clip C, int "rad", int "offset", int "thr") { rad = Default(rad, 2) offset = Default(offset, 0) thr_ = Default(thr, 256) Blurred = Rad == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 ", vertical = " 1 ", u=1, v=1) : C Blurred = Rad == 2 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 1 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred Blurred = Rad == 3 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 0 1 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 1 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred Blurred = Rad == 4 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 0 1 0 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 2 ? C.Mt_Convolution(Horizontal=" 1 1 0 0 1 0 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 0 1 0 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred Blurred = Rad == 5 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 0 1 0 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 2 ? C.Mt_Convolution(Horizontal=" 1 1 1 0 0 1 0 0 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 3 ? C.Mt_Convolution(Horizontal=" 1 1 0 0 0 1 0 0 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 0 0 1 0 0 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred Diff = Mt_Makediff(C, Blurred) THR=string(thr_) MedianDiff = Rad == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : Diff MedianDiff = Rad == 2 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff MedianDiff = Rad == 3 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff MedianDiff = Rad == 4 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 2 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff MedianDiff = Rad == 5 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 2 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 3 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff ReconstructedMedian = mt_makediff(Diff, MedianDiff) Mt_AddDiff(Blurred, ReconstructedMedian) Return(Mergechroma(Last, C, 1)) }

what was it captured with? with no audio it isn't DVavi off a miniDV tape.

"a lot of people are better dead"  prisoner KSC2303 
I captured it with VirtualDub without the audio to reduce the filesize because audio is not important on this problem matter.
If I understood the video should be like its on the DV tape (expect the sound)?
By the way witch is the preferred way to move video from the DV camcorder to the computer running Win 7 64bit?
VirtualDub does not handle auto scene splitting.
I also tried Scenalyzer and it could not handle scene auto splitting in Datestamp mode, but could handle it quite well in Optical mode, but still missed some. Is there a better program? Open source/free preferred.
These two programs work like a recording... Is there any way to copy the information from the DV tape to the computer like a file copy? 
is it just me ?
or isn't there extreme combing in those still pix, and aren't the lines the same width as the combing
or
is that just my visual perception
i would think the two problems are related , it might not be just a sensor issue
i have never seen a sensor give total and even / equal degradation across the whole sensor 
I'm receiving a script error "There is no function named 'Mt_Convolution'." Help?

I used this script at last. But after setting rad, offset and thr to zero (for testing) result was still blurry. How can this be changed?



You can find vertical stripes on a left side of a softbox most clearly.
I used the same script that was posted here by poisondeathray, just played a bit with rad, offset and thr to zero for testing.
Code:
AVISource("dv_vertical_stripes_lowlight_3sec.avi")
ConvertToYV16(interlaced=true)
DeStripe(rad=3, offset=4, thr=56)
DeStripe(rad=2, offset=1, thr=56)
DeStripe(rad=1, offset=1, thr=64)
#thr is strength, rad is "how big are the (whatevers)" offset is "how far apart are they" rad goes from 1 to 5, offset from 1 to 4, thr from 1 to bignumber
function DeStripe(Clip C, int "rad", int "offset", int "thr")
{
rad = Default(rad, 2)
offset = Default(offset, 0)
thr_ = Default(thr, 256)
Blurred = Rad == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 ", vertical = " 1 ", u=1, v=1) : C
Blurred = Rad == 2 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 1 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred
Blurred = Rad == 3 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 0 1 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 1 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred
Blurred = Rad == 4 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 0 1 0 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 2 ? C.Mt_Convolution(Horizontal=" 1 1 0 0 1 0 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 0 1 0 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred
Blurred = Rad == 5 ? offset == 0 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 1 1 1 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 1 ? C.Mt_Convolution(Horizontal=" 1 1 1 1 0 1 0 1 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 2 ? C.Mt_Convolution(Horizontal=" 1 1 1 0 0 1 0 0 1 1 1 ", vertical = " 1 ", u=1, v=1) : offset == 3 ? C.Mt_Convolution(Horizontal=" 1 1 0 0 0 1 0 0 0 1 1 ", vertical = " 1 ", u=1, v=1) : C.Mt_Convolution(Horizontal=" 1 0 0 0 0 1 0 0 0 0 1 ", vertical = " 1 ", u=1, v=1) : Blurred
Diff = Mt_Makediff(C, Blurred)
THR=string(thr_)
MedianDiff = Rad == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : Diff
MedianDiff = Rad == 2 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff
MedianDiff = Rad == 3 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff
MedianDiff = Rad == 4 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 2 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 4 0 4 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff
MedianDiff = Rad == 5 ? offset == 0 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 1 0 1 0 2 0 2 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 1 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 2 0 2 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 2 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 3 0 3 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : offset == 3 ? MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 4 0 4 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MT_Luts(Diff, Diff, mode="med", pixels = " 0 0 5 0 5 0 " , expr = " X Y  X Y  X Y  abs 1 + * X Y  abs 1 + "+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + /  128 +", u=1,v=1) : MedianDiff
ReconstructedMedian = mt_makediff(Diff, MedianDiff)
Mt_AddDiff(Blurred, ReconstructedMedian)
Return(Mergechroma(Last, C, 1))
}Last edited by taigi; 28th Sep 2020 at 18:18.

That's a different video than the one you uploaded before. Use an antialiasing filter like Santiag(). And maybe a dehalo filter.



http://avisynth.nl/index.php/External_filters
http://avisynth.nl/index.php/Santiag
http://avisynth.nl/index.php/AAA
http://avisynth.nl/index.php/DeHalo_alpha
http://avisynth.nl/index.php/FineDehalo
If you want more detailed instructions upload a sample to this site. Do not resize or reencode. 


You could use turnright() and vinverse2 to reduce vertical lines without blurring as much. You can add antialiasing or stronger blur if you want to reduce more
Code:FFVideoSource("forumuiFragm1.avi") ConvertToYV16(interlaced=true) AssumeBFF() QTGMC(sharpness=0.2) TurnRight() Vinverse2(sstr=1,amnt=255,uv=2) Vinverse2(sstr=2,amnt=255,uv=2) TurnLeft() Prefetch(4)

Something like this works pretty well:
Code:AviSource("forumuiFragm1.avi") dehalo_alpha(rx=2.0, ry=2.0, brightstr=1.2) Santiag()

Last edited by taigi; 1st Oct 2020 at 19:33.


sstr is the contrasharpening. But sharpen operations are counterproductive for what you want to do  they enhance the artifacts. The default value is higher, 2.7 , so I adjusted them lower. For the same reason, QTGMC sharpness is turned down. One application of Vinverse2 was not quite enough, but two applications started to blur it more than what I would want, so the 2nd application used slightly higher contrasharpening .
But as usual for any suggestions  you adjust the settings to your taste 
I played around with lowsens and highsens a bit. This is about the best I could get: lowsens=0, highsens=40. That keeps a little more sharpness in some areas.
A little trick you can use to view the effect of a single parameter interactively is to use the Animate() filter.
Code:function dha_sens(clip v, float sens) { dehalo_alpha(v, rx=2.5, ry=2.5, brightstr=1.2, lowsens=0, highsens=sens) subtitle(string(sens)) } AviSource("forumuiFragm1.avi") Trim(25,25) # select one frame, frame 25 chosen at random Loop(10,0,0) # repeat the frame 10 times Animate(last,0,9, "dha_sens", 0.0, 90.0) # step through values 0 10, 20,30,...90
Similar Threads

odd vertical like line noise in video do not think it is from interlacing
By mazinz in forum Video ConversionReplies: 3Last Post: 1st Jan 2013, 03:10 
Vertical lines in SD camcorder video ?
By Umen Pich in forum EditingReplies: 8Last Post: 21st Dec 2011, 20:25 
Replace audio track + crop video black stripes
By calande in forum Newbie / General discussionsReplies: 0Last Post: 14th Jul 2011, 13:24 
How can I correct a tripodshot video with vertical vibration?
By pete2004 in forum RestorationReplies: 1Last Post: 16th Aug 2010, 12:26 
Vertical dark lines on captured video
By jsr184 in forum CapturingReplies: 6Last Post: 29th Jan 2009, 21:31