I have a video from my car wash from a person who dumped a truck load of carpet in one of my bays. I have tried to send it to an online video forensics place with no luck of reading the plate.....I have tried myself using video cleaner and can come so close, but still no luck..... any help would be greatly appreciated for what software, or how to better use video cleaner.. Thanks in advance
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays!
+ Reply to Thread
Results 1 to 14 of 14
Thread
-
-
Upload the source clip to this thread using the Upload files/attachment button
-
Car Wash Video
https://files.videohelp.com/u/273060/CarWashBay4.mp4 -
Seems like this camera was using some kind of high amplification of the image for night time recording, and so the tail lights on the truck reflected off the license plate. Causing the entire plate to just be clipped at white due to the plate being over exposed in the video. What I mean is that it looks like any detail on the license plate was just recorded as white or nearly white. As the plate is registering mostly as one color, clipped white, there is no real hope in "enhancing" it.
If you don't know already, it's a 2013 or later Silverado. I can't really guess the color but I would guess it's at the darker end. So if you know someone who hates you with that car, you might be on to something. -
When I used Video Cleaner and went to frame 3586, I can almost make out the letters...... you can see all the letters/numbers individually but just cant quite make them out
-
Two things working against you are the overexposure and frame blur. So for the future: position the camera where it can see the plate of a stopped vehicle and set the exposure to avoid clipping.
-
Hi,
there is no hope in this video. Maybe is better to use some graphic program f.e. free (gimp, krita), instead of video editors. You can get 32 bit float per channel precision. And filters, that are useless for video editors because they are too slow and costs too much of time.
But in this particular video I don't see much to restore. As mentioned at the start of the of this post.
Bernix -
https://files.videohelp.com/u/273060/Car_Wash_Trash_License_October_8th.tif
I thought I this pic I could almost make out some of the lettering..... first digit is either a Z or a 2
how would I set the video to avoid clipping? JVRaines
-
With manual exposure control. If you're using a camera with only automatic exposure, then you're stuck.
-
You can fool an automatic exposure camera into reducing the exposure by mounting a small flashlight nearby and shining it at the corner of the image, somewhere where nothing important is likely to happen. You then park a car where you need to read the license plate and adjust the light output of the flashlight until you can read the license plate. It is a kludge, but it could work.
-
Stuff like this needs bracketed HDR capability.
ScottLast edited by Cornucopia; 5th Nov 2017 at 21:21.
-
First, upconvert to 16 bits. Then you can go wild with levels manipulation without banding issues.
(turns out I didn't need this in the end)
I inverted, then increased gamma, then re-inverted. This was to get max contrast boost around the highlights.
Then, once the luma range was as good as I could get it, I played around with hi-pass "sharpening" (actually local contrast boost).
Using Animate lets you vary a filter parameter as you jog the clip backward and forward.
In this case I varied hi-pass radius. Different small features are brought out at different radii. Try it.
Requires AvisynthPlus
Code:ImageSource("Car_Wash_Trash_License_October_8th.tif") Crop(0, 160, 300, 360) ConvertBits(16) ConvertToYUV420 ColorYUV(cont_y=f2c(255.0/219.0), off_y=-16) Invert.ColorYUV(gamma_y=f2c(5.0)).Invert ColorYUV(gain_y=f2c(1.7)) ColorYUV(cont_y=f2c(1.3)) BilinearResize(Width*2, Height*2) ## hi-pass filter; use /Animate/ to find best radius Animate(0, 256, "SimpleSharp", \ 0.05, 5.0).Trim(0, 257) ConvertBits(8, dither=0) ## 0=ON, -1=OFF #Histogram return Last ####################################### function SimpleSharp(clip C, float rad) { return C.UUHipassSharpen(rad=rad, gain=3.0, opacity=1.0) #\ .Subtitle("rad="+String(rad, 2), align=5) } ################################## ### highpass filter "sharpening" (actually local contrast boost) ## ## @ rad - highpass radius (range 0.0-; default 2.0) ## @ gain - highpass contrast boost (1.0=unity; range=0.1-10.0; default=1.5) ## @ opacity - blend strength (range=0.0-1.0; default=0.5) ## function UUHipassSharpen(clip C, float "rad", float "gain", float "opacity") { rad = Default(rad, 2.0) gain = Default(gain, 1.5) opac = Default(opacity, 0.5) HP = C.UUHipass2(rad, 0.0, cont=gain, gray=1>0) return C.Overlay(HP, mode="softlight", opacity=opac) } ################################## ### highpass filter, optional sharpening & contrast boost ## ## @ rad - highpass radius ## (range 0.0-; default 4.0) ## @ sharp - highpass post sharpening ## (range -1.0 to +1.0; default 0.0) ## @ cont - highpass contrast boost ## (1.0=unity; range=0.1-10.0; default=1.0) ## @ gray - if true, remove color information from the hipass signal ## (default=false) ## function UUHipass2(clip C, float "rad", \ float "sharp", float "cont", \ bool "gray", int "bright") { rad = Max(0.25, Float(Default(rad, 4.0))) sharp = Min(Max(-1.0, Float(Default(sharp, 0.0))), 1.0) cont = Min(Max( 0.1, Float(Default(cont, 1.0))), 10.0) bright = Default(bright, 0) gray = Default(gray, false) B = (rad>=1.0) \ ? C.QGaussBlur(rad, rad) \ : C.Spline64Resize(_mod(2, C.Width / rad), _mod(2, C.Height / rad)) \ .QGaussBlur(1.0, 1.0) \ .Spline64Resize(C.Width, C.Height) C = C.Subtract(B) H = (gray) ? C.Grayscale : C con = cont cont = cont - 1.0 off = bright - Round(cont * 128.0) (C.IsYUV) ? H.ColorYUV(cont_y=256*cont, off_y=5*cont+bright) \ : H.RGBAdjust(con, con, con, 1, off, off, off) return (Abs(sharp)<0.01) ? Last : Sharpen(sharp, sharp/2.0) } ################################################## ### quick Gaussian blur ## function QGaussBlur(clip C, float rad, float "rady") { radx = Max(1.0, rad) rady = Max(1.0, Default(rady, radx)) return (radx<0.1 && rady<0.1) ? C \ : C.BilinearResize( \ Max(16, _mod(2, Float(C.Width)/(radx+1.0))), \ Max(16, _mod(2, FLoat(C.Height)/(rady+1.0)))) \ .Blur(0.3) [* *] \ .GaussResize( \ C.Width, C.Height, p=19) ## p=19: softest w/o visible 'blockiness' } ####################################### ### scale "normal" float arguments to ### [[ColorYUV]]'s <gain_x>, <gamma_x> & <cont_x> ## function f2c(float f) { return Round((f - 1.0) * 256.0) } ################################## ### return argument <f> as integer and ensure it is modulo <m> ## ## @ m - mod value (round toward zero, unless m < 0) ## @ f - input (may be positive or negative) ## function _mod(int m, float f) { x = (m>0) ? -1 : 1 m = Max(1, Abs(m)) sg = Sign(f) i = Round(Abs(f)) return sg * Max(0, i + x * (i % m)) }
Last edited by raffriff42; 8th Nov 2017 at 17:54. Reason: image removed
-
Yes is smart to up-convert the bitdepth (to 16bit/color or better) so any intermediate calculations will not inherently degrade the dynamic range.
BUT...
The dynamic range here is already greatly limited, made worse if not set optimally.
Do consider in future a cam model that supports some form of HDR (sometimes called wide or WDR, probably when bracketing). That way, you already have that expanded bitdepth and can do HUGE manipulations without hitting the wall and losing detail.
Scott -
Thank you raffriff42, I am going to try that in just a few if I can figure how to get it going.
Similar Threads
-
License Plate Recovery
By NateTheGreat in forum RestorationReplies: 13Last Post: 2nd Dec 2016, 09:07 -
Get License Plate from Video
By xxnsra in forum RestorationReplies: 17Last Post: 24th Oct 2015, 04:41 -
Please help me to get the license plate details
By andi in forum RestorationReplies: 4Last Post: 7th Oct 2014, 21:56 -
Need Help to Capturing License Plate
By Scarmblerguy in forum Newbie / General discussionsReplies: 15Last Post: 2nd Aug 2014, 17:27 -
CCTV License Plate
By Djchase in forum RestorationReplies: 7Last Post: 9th Jun 2013, 21:42