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. |
30th June 2010, 22:45 | #241 | Link | |||
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Quote:
Remove Dirt RemoveDirtMC is, as you can see from the modification to your script that I posted earlier in this thread, simply a function that calls RemoveDirt after motion compensating the clip. So, it is not a different DLL, but simply a function that uses the RemoveDirt DLL. BTW, I have some alternative documentation for RemoveDirt that was published a long time ago. It refers to an earlier version, so not all the settings are the same. However, it explains far better what the heck is going on, and may help you if you want to tweak some settings. Send me a PM and I'll be happy to send it to you. Quote:
The general usage is to put SetMTMode(5) before you open the clip, and then immediately following the call to get the clip, you put the SetMTMode(2,0) statement. I have found several things to look out for when trying to make a script work with multi-threading:
Quote:
My own invention only requires that you remove the shutter from the projector. After that, you simply capture the film using 1/500 or faster shutter speed on your video camera. The software does everything else and now works flawlessly. I can even capture sound film, in real time, using this technique. |
|||
2nd July 2010, 06:35 | #245 | Link | |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Quote:
I know that Roger Evans (Workprinter's inventor) says you can get better results by capturing at full HD resolution (1920x1080). While I can capture in HDV (1440x1080 1.33 PAR), with my technique this doesn't produce very good results because the inter-frame compression gets hosed by the pulldown fields. The solution would be to capture the component output from my FX1, but the capture card and software needed would be over $500, even on eBay. In theory, 720x480 should be enough to capture most detail from 8mm and Super8, but again, since I haven't tried true HD capture, I don't know. I'm quite certain that 16mm would benefit from HD capture. Of course none of these consumer film formats are 16:9, so some of the resolution in an HD capture isn't used (black bars on the side). With 8mm, which is almost perfectly square, almost half the area of the capture isn't used. I haven't run the math, but my guess is that instead of getting 1920, you'd probably only get about 1200 horizontal pixels when capturing most of these formats. So, the real increase in resolution would be something more like going from 720x480 (345,600 pixels) to 1200x1080 (1,296,000 pixels) an increase of 3.75. And, just to anticipate, no the whole progressive vs. interlaced doesn't mean anything because we are capturing the film while it is at rest in the projector gate, and the results obtained with interlaced video when filming a stationary object are exactly identical to progressive video. So, a 60p camera won't improve the quality. The only way to get better results would be to slow down the projector and use a still camera with megapixel resoltuion. It's been a long time since I looked into this, but most still cameras can't sustain multiple frame capture for more than a few seconds, and I'm not sure if they would breakdown from either heat or shutter wear (I think most still cameras use a physical shutter). I guess I could take a dozen photos with my Nikon SLR and compare the results to what I get with my FX1. Quite frankly, once you do this for awhile, you realize that resolution is the least important issue for getting a good result. The whole point of VideoFred's script is to overcome these serious issues. The toughest thing to get right when transferring film to video: gamma. I kick myself every day for buying the FX1 instead of the Z1. These two cameras were supposed to be identical except for the XLR audio on the Z1. Wrong. The Z1 has the ability to create custom gamma curves so you can create your own look. This would let me flatten the highlights and gain the shadows. Oh well ... next lifetime I'll do everything right. |
|
6th July 2010, 06:15 | #246 | Link | |||
Registered User
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
|
Quote:
Quote:
Quote:
Fred.
__________________
About 8mm film: http://www.super-8.be Film Transfer Tutorial and example clips: https://www.youtube.com/watch?v=W4QBsWXKuV8 More Example clips: http://www.vimeo.com/user678523/videos/sort:newest |
|||
6th July 2010, 06:21 | #247 | Link | |
Registered User
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
|
Quote:
Fred.
__________________
About 8mm film: http://www.super-8.be Film Transfer Tutorial and example clips: https://www.youtube.com/watch?v=W4QBsWXKuV8 More Example clips: http://www.vimeo.com/user678523/videos/sort:newest |
|
8th July 2010, 08:35 | #248 | Link |
Registered User
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
|
I have made a new script with RemoveGrainMC() followed by MDegrainMulti() and some more subtile 3-step sharpening.
Example clip: Fred.
__________________
About 8mm film: http://www.super-8.be Film Transfer Tutorial and example clips: https://www.youtube.com/watch?v=W4QBsWXKuV8 More Example clips: http://www.vimeo.com/user678523/videos/sort:newest |
8th July 2010, 15:30 | #249 | Link |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Wow, the newest test clip example looks absolutely stunning! The improvements to the sharpening are much better.
I tried downloading the script from the first post in this thread, but the site is down, and it doesn't look like you updated the link. I hope you will be willing to share the results of your efforts. John |
9th July 2010, 07:07 | #250 | Link | |
Registered User
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
|
Quote:
I have updated the first page of this thread and the new script is available for download now. If you can not download it, I will send it to you by mail. I have made a separate *avs file from RemoveDirtMC() and I load it in the script now. Please lower all sharpening settings if the sharpening should be to heavy. Or increase the degraining... It looks like all filters are working fine with SetMTMode(1,0) but you can change this of cource. At the end of the script, I had to place SetMTMode(5) otherwise it crashes.... I run it on a dual core Dell, in Vista. It's still slow... 3fps. Fred.
__________________
About 8mm film: http://www.super-8.be Film Transfer Tutorial and example clips: https://www.youtube.com/watch?v=W4QBsWXKuV8 More Example clips: http://www.vimeo.com/user678523/videos/sort:newest |
|
14th July 2010, 16:45 | #251 | Link |
Registered User
Join Date: Jul 2010
Posts: 7
|
Johnmeyer
Capturing 8mm film at full HD resolution (1920x1080) is possible for modest expenditure but the problem to me is the cost of storage/distribution on Blueray or practical alternatives. Capture method used. Canon HV20 + 43mm to 49mm step-up ring + 49mm coupling ring + Pentax 50mm f1.7 lens reversed; provides the video camera with a high quality macro facility. The video camera HDMI sensor output is used to feed into a Blackmagic Intensity card to capture a series of sequentially numbered BMP images at full HD resolution. Each BMP image is 6MB so sustained capture rate is limited by HDD write speed. Typically my SATA II drives as measured using the Blackmagic disk test utility indicate 30 to 60 MB/s. There are other delays within the video camera and frame capture software due to the asynchronous relationship with the film transport. Typically my system provides an average capture rate of 2.7 fps measured over 500 frames using a 60MB/s partition on my SATA II drives. The film transport system should ideally provide repeatable positional accuracy of the film frame to frame to within 1 pixel. The picture height of a Standard 8mm film is 3.68mm covered by 1080 pixels so 1 pixel = 0.0034mm. This level of accuracy is difficult to achieve and measure. Initially to check my own design of film transport mechanism I used Xnview's > View > display colour information of X and Y values as a measurement tool to accurately locate the sprocket hole edge i.e. the transition to full white RGB all 255. Fringing at the sprocket hole edge is a problem and detracts from the accuracy of this method of measurement. Subsequently I have written a program to automate the measurement over 50 or more frames. This indicates my overall film transport system is within +5 to -5 pixels. Elimination of vibration and film winder take-up during frame capture is also needed to get top quality images. I have no experience of testing modified film projector systems that VideoFred and your Workprinter use. The image taken should be of the emulsion side of the film to obtain the best quality. The resultant images taken are upside-down and 16:9 format so I crop the image to 1440x1080 to get 4:3 format and then flip it vertically before doing the fps change. Finally I add back the borders left and right to restore the 1920x1080 format. I think this order of processing reduces the number of pixels processed to a minimum. The series of BMP frames are then assembled and processed for PAL using this Avisynthh script: # /LOADING THE PLUGINS... LoadPlugin("F:\AviSynth 2.5\plugins\mvtools2.dll") # # STARTING THE SCRIPT # Load the sequence of 500 bmp images: the end number needs to be changed for more or less !!!!! ImageSource("O:\frames\frame%06d.bmp", start = 0, end = 499, fps = 16, use_DevIL=false) converttoyv12 # Crop the image and flip before the speed change from 16 fps to 25 fps to reduce CPU load? crop(240, 0, -240,0) # FlipVertical to get the image right way up. FlipVertical() # Do fps change super = MSuper(pel=2) backward_vec = MAnalyse(super, isb = true) forward_vec = MAnalyse(super, isb = false) # MFlowFps(super, backward_vec, forward_vec, num=25, den=1, ml=100) # Add the borders left and right to restore the 1920 x 1080 format. addborders(240, 0, 240, 0) # Open the AVS into Virtualdub then output a Huffyuv compressed avi file for subsequent editing with Premiere Pro 2. The edited version is then exported back to tape in the HV20 and a copy of the HDV2 file created by Premiere Pro as part of the export to tape is kept by renaming it before PPro deletes it. The export to tape process has converted the avi to a HDV (1440x1080 1.33 PAR) format so there will be some degradation in quality. The playback from HV20 HDMI output to Panasonic Viera TV HDMI input shows the capture to best advantage. The observed displayed quality is good and did not show significant signs of film grain from the Kodachrome II film used even from Standard 8mm film BUT is it that much better than a PAL 720x576 transfer from the same film to justify the cost, complexity and time to effect such a transfer to HD? The technical challenge for me was to investigate and know how I could make a successful HD transfer. I doubt if I will be making many more HD transfers, as my SD transfers suffice to bring back the memories of the people and places that others and I filmed. You can view an SD transfer made on this type of system at the www.vtoldboys.com on the LHS of the page click on Trips > Christchurch 1974 > Stan’s film and The Band buttons at the bottom of the page. Gerald Last edited by Gerald1937; 14th July 2010 at 16:50. |
14th July 2010, 16:55 | #252 | Link |
Pig on the wing
Join Date: Mar 2002
Location: Finland
Posts: 5,733
|
Have you guys (all of you doing these projects) given any thought to using DGPulldown? I got 18fps out of my source so it was easy to first encode to MPEG2 using HCEnc (the latest 024 beta from April 2010) with AssumeFPS(25) in the script and then running the result through DGPulldown doing a 18fps --> 25fps pulldown. Lots of bits saved and all those problem rising from framerate changes avoided I just had to restrict the max GOP length to 10 frames for DVD compliance.
__________________
And if the band you're in starts playing different tunes I'll see you on the dark side of the Moon... |
14th July 2010, 17:30 | #253 | Link | ||||
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Quote:
Quote:
Quote:
Intensity Pro Cineform FX1 Non-RAID Quote:
BTW, I note that you are setting the film playback speed using MFlowFPS, something that VideoFred does in his script as well. This is an interesting thing to do, and I am not entirely against it. However, everyone who uses it needs to understand that it WILL introduce artifacts, and these can sometimes be very strong and obnoxious. The more usual way to handle the speed conversion when showing film on a television set is to add pulldown. When starting with 24 fps and going to 25 fps PAL interlaced, many companies simply speed up the film (i.e., change the header flag in the video file). Thus, the frames themselves are not touched. When going from 15, 16, or 18 fps film, this is where pulldown is used. For instance, to show 18 fps film on a 29.97 NTSC television, I use this code to add pulldown: Code:
separatefields() selectEvery(6, 0,1, 0,3, 2,3, 2,5, 4,5) weave() AssumeFPS(29.97, true) |
||||
14th July 2010, 23:41 | #254 | Link | |
Moderator
Join Date: Oct 2001
Location: Hawaii
Posts: 7,406
|
Quote:
ChangeFPS(19.98) followed by DGPulldown set for 19.98->29.97 after the encoding is complete. All encoding will be of progressive frames with many fewer of them, resulting in a much higher quality result for the same file size. I do this quite often for silent films. |
|
15th July 2010, 02:56 | #255 | Link | |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Quote:
You never want to duplicate entire frames if instead you can duplicate just one field. Duplicating frames instead of fields substantially increases the stutter. The beauty of pulldown is that it duplicates fields. This isn't some esoteric distinction, but instead is fundamental to making film look good on video. In traditional 3:2 pulldown (the pattern used to get 24 fps progressive to 29.97 interlaced), the first frame of film is transferred to one frame of video. But, the next frame of film is copied not only to the next frame of video, but to the first field of the video frame after that. The next frame of film (the third in this sequence) starts by filling in the remaining field of video and then the second field is copied to the first field of the next frame of video. If you merely duplicate entire frames of film, you end up with a very jerky result. There are dozens of excellent explanations on the web. Here is an illustration I found that shows what I'm describing: Film Pulldown Illustration For those who think this will give you blended frames -- a common misperception -- this doesn't happen. The reason is that you have to realize that the whole process of displaying fields is continuous, and it really doesn't matter if a field belongs to a certain "frame" or not, as long as both fields of a given frame of film get displayed in the proper order. Thus, when developing pulldown patterns for various "odd" film speeds, you need to make sure that the fields in the selectevery statement always alternate even-odd-even-odd (never have two even fields or two odd fields in a row). And, you never want to skip ahead beyond the next frame. There is no "right" or "wrong" way to do these conversions from frame rates other than 24 fps. The solution that VideoFred uses, of actually creating new frames using MFlowFPS, produces some very interesting results. I've experimented with this and, as I indicated in my previous post, thought that it produced too many artifacts. However, I have found that if I use large block sizes, and only change from 18 fps progressive to 24 fps progressive, the results are generally quite good. I then encode this to DVD using 23.976 with the pulldown flag set. If it is played on an NTSC TV, the DVD player adds the pulldown during playback. However, if it is played to a non-scanning device (like an LCD TV) and if the DVD player provides progressive output, you will get the 24fps result without further pulldown. When I developed the scripts to convert kinescopes back to "real" video, I needed to go all the way from 24 fps to 60i. If you do all the right things (degrain, deshake, gamma correction, etc.) prior to the fps conversion, the result really does look like "real" video. However, when starting with something that really is film, I'm not sure this is what most people want. This, of course, is entirely an aesthetic decision, and, like letterboxing or colorizing movies, there will be people who come down on both sides of the argument. Last edited by johnmeyer; 15th July 2010 at 02:57. Reason: clarification |
|
15th July 2010, 03:16 | #256 | Link | |
Moderator
Join Date: Oct 2001
Location: Hawaii
Posts: 7,406
|
You're duplicating frames as well. Play your encoded script any way you want (except by blend deinterlacing which creates something much worse) and the deinterlacing will create duplicate frames, more than I have. Anything below 19.98fps (for NTSC) by necessity creates duplicate frames.
Quote:
|
|
15th July 2010, 04:42 | #257 | Link | |
Registered User
Join Date: Feb 2002
Location: California
Posts: 2,695
|
Quote:
I've tested all my scripts by adding a separatefields() statement at the end, and then looking, field-by-field, at what the script has produced. Now, it is true that if you get to a slow enough starting frame rate, like 15 fps, then you are 100% correct: to get to 30 fps, each frame is duplicated twice. And it is also true that when going from 16 fps or 18 fps, [I]some[I] frames do get repeated. But, some do not. So you are partly right because some frames get repeated in their entirety, but not all of them. Now as for DGPulldown, I just went to Donald Graft's site to make sure I understood what DGPulldown does: DGPulldown To quote directly from that page: "DGPulldown works by altering the MPEG2 RFF/TFF flags to increase the number of display frames to exactly the right number to generate the specified output frame rate during playback."So, this plugin is only useful when encoding to MPEG2, and it does its magic by changing the pulldown flags and not by actually altering the video. For it to work, the playback device must understand what to do with these flags. If encoding for DVD, there is a very narrow limit to what flags can be used, and I don't think this plugin would be useful. |
|
15th July 2010, 05:00 | #258 | Link | |||||
Moderator
Join Date: Oct 2001
Location: Hawaii
Posts: 7,406
|
Everything I've said is entirely correct.
Quote:
Quote:
Quote:
Quote:
Quote:
|
|||||
15th July 2010, 07:35 | #259 | Link | |
Registered User
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
|
Quote:
I might be wrong, but is the future not HD progressive? I have done some tests with 720p30 and even 720p60. Very simple with duplicate frames. AssumeFPS() followed by ChangeFPS(). This plays remarkable good on a fast computer. But for a nice experiment it is possible to create extreme slow motion with MFlowFPS(). Try AssumeFPS(1) followed by MFlowFPS(num=30) for example. Fred.
__________________
About 8mm film: http://www.super-8.be Film Transfer Tutorial and example clips: https://www.youtube.com/watch?v=W4QBsWXKuV8 More Example clips: http://www.vimeo.com/user678523/videos/sort:newest Last edited by videoFred; 15th July 2010 at 07:40. |
|
15th July 2010, 10:05 | #260 | Link | |
Avisynth language lover
Join Date: Dec 2007
Location: Spain
Posts: 3,431
|
Quote:
|
|
|
|