- Sample prep
Quick start guide to getting the sensor working. Basically, follow sections below to:
x-rays are dangerous…make sure you know what you are doing. Not responsible for death, injury etc
|Gendex||GXS700 small (type 1)||Needs work||It can probably be supported with minimal effort. Mainly needs a different firmware load|
|Gendex||GXS700 large (type 2)||Yes||Primary device I develop for|
|Dexis||Platinum||Probably||Test failed but DUT was likely broken|
|Dexis||Plus 690||Probably||Test failed but DUT was likely broken|
I don't know if any other vendors (ex: schick) use the same hardware
“$ cmd” means type “cmd” into a terminal
Do (I'll improve this as people run into problems):
This step tests the sensor without actually firing x-rays at it. This is also useful for calibrating sensor defects
Suggest you force a capture first to verify your sensor is working
Please do this and send me the result. This helps me understand the sensors better to provide better support
Send me the directory “dump” that it creates. If you are going to send me data from multiple sensors, please move the directory before re-running as it will overwrite.
decode.py has a “-e” option to do histogram equalization. This often brings out additional detail by re-mapping from 16 bit grayscale to shifted 8 bit grayscale. This works because humans can see 8 bits much easier than 16. TOOD: could we display usable 16 bit images by using two colors?
$ python decode.py -e capture_004.bin capture_004e.png
NOTE: future revisions may require .png input instead of .bin
I haven't messed with the default trigger settings but I suspect you could do very low x-ray triggering if desirable
I use a Gendex GE-100 x-ray head. I've found these readily available for <$75 on both eBay and Craigslist. This accepts near line level AC inputs for both HV and filament making this easy to control from commodity variacs.
I control the setup via a DLI WPS7. When wired correctly:
do something like:
$ WPS7_HOST=wpsip WPS7_PASS=mypassword python fire.py
to fire an x-ray (ie when the sensor is armed. wpsip is something like 192.168.0.1
Note: you can also set these environment variables in files like .bashrc so you don't have to type them for each command
I recommend you use a hard wired ethernet line and have a way to cut power to the switch remotely if it fails. I do this by running an extension cord across the room so that it can be be pulled in event of WPS7 failure (stuck switch, etc).
TODO: use WPS7 scripting capability to make switch throws atomic
Takes raw, uncalibrated images. I've been asked a few times if I could provide calibration files for the Windows driver or could even use their calibration files on my driver. However, I'm not really interested in supporting their proprietary format.
That said, I'm not against coming up with an independent calibration scheme. I know how to take dark frames (see API) which is the key component. Uncalibrated images have been generally good enough for me so I haven't put work into this. If you are interested though shoot me a line.
I haven't played around too much with trying to maximize quality. One thing that's clear though is that the sensor should be as close as possible to the object to be x-rayed. The tube to sample distance doesn't seem to matter as much
stitch.sh has an example workflow using pr0ntools (panotools). At the core its using mask.py to generate transparency masked images to use the full, albeit irregular, sensor area.