Been a while. Like, a long while. I won’t bore you with the all gory details, but suffice it to say that buying an office space for your company is a nightmare, one we still haven’t woken up from and one I don’t recommend. Most of Sasquatch is packed away because we thought we were moving in April. Then August. Now, who knows, but it has to be in the next 6-8 months because the building we’ve had our office in for the past 13 years is being torn down to make room for a shiny new building next year.
Which means everything in terms of hardware basically froze in February when we thought we had lined up a new place, and is currently in boxes. So I have started concentrating on the front end software again and after quite a few revisions, I’ve got a GUI and an underlying architecture I think I’m happy with. Because I can’t actually test with the camera or transport right now, this is pretty much a framework to plug all the other code I wrote over the past couple years into (camera interaction, ClearCore controller communications, etc).
The app looks like this when you run it. Lots of unused space, but see the second image:
Here you can see the faint outlines of where the preview window will be (the large box is where the last captured frame will be displayed), and the scopes (above the Histogram popup menu).
We’ll have a histogram at first (comes for free in OpenCV basically), and may add in an RGB Parade as well. Though honestly, we almost always use the Histogram in our ScanStation and nothing else, so I’m not sure we even need the option. In any case, any additional scopes would come later.
above the row of buttons (load film, etc) will be the transport controls: FF, RW, Stop, frame forward and back, and perf racking controls. This will also tell you the current location in the reel.
One of the things I like about this setup is that I’ve made it so that almost everything important lives in XML files. When you open the application and this window appears, under the hood it loads up an XML file containing all the values that can be used in the various controls you see. Then it loads up a default project file (also XML) or if you go to File/Open it opens a saved file. This project file contains the selected values and it modifies the controls to show those.
Why does this matter? because once all the logic is in place, we can add another film gauge simply by modifying the appropriate XML files. it won’t require any coding, or recompiling of code. Just add a new entry to the default settings, a new file describing that film gauge, and that’s it.
For example, here’s what the Resolution Presets file looks like:
<Defaults>
<Resolution id="0">
<ResX></ResX>
<ResY></ResY>
</Resolution>
<Resolution id="1">
<ResX>4096</ResX>
<ResY>3112</ResY>
</Resolution>
<Resolution id="2">
<ResX>4096</ResX>
<ResY>2160</ResY>
</Resolution>
<Resolution id="3">
<ResX>8000</ResX>
<ResY>6000</ResY>
</Resolution>
<Resolution id="4">
<ResX>12000</ResX>
<ResY>8000</ResY>
</Resolution>
<Resolution id="5">
<ResX>14000</ResX>
<ResY>9000</ResY>
</Resolution>
</Defaults>
If we decide that we want to add a resolution for an aspect ratio we’re not currently supporting, we just need to add an entry here and it will instantly appear in the popup menu next time the app is loaded.
Because our camera and lens are on independent motion-controlled stages, we will have an XML file for each film gauge, because each film gauge will require different positioning. Also in that file will be the start coordinates for the sensor’s ROI, the maximum resolution we can support at that magnification, etc.
So if a client comes up with some crazy film format we haven’t thought of, we just need to generate a new XML file for that format, and it’s instantly available.
In terms of how you use this, basically it’s like a combo of the Northlight and ScanStation software, though simplified. You set up the basic Project Settings, which are global for the job at hand. Then you load the film, and you use the transport to go to in and out points. You can add a clip to the Clip List (which is basically just a batch file), by clicking on the Add A Clip button, and that opens a window where you enter the in and out points, the file name and the location. When you click ok, it adds it to the batch.
Focus will open a new window, where you will have fine control of the camera/lens positions, and we will implement an autofocus routine that will sample several postitions, detect edges, and determine the sharpest focus.
Lots more to do, and I may have to unpack a few things to do them, but this is a major milestone, and is something I’ve been wanting to get started on for months but haven’t been able to until last week.
Oh, and the UI is 1920x1080, to match a monitor I picked up that looks like it’ll fit inside the old Cintel Ursa bridge on top of the scanner chassis. This may turn out to be impractical, but if it works, should look pretty cool, and keeps the whole thing fairly self-contained.