警告:本实验涉及高强度电离辐射,实验过程中应确保佩戴个人剂量检测装置以及遵守相关法律,本人不对模仿本实验造成的意外负责。
X射线成像简介
一般爱好者要尝试X射线成像,一般会选择增感屏+胶片或者增感屏+相机拍摄。很多国内外爱好者都用这样的方法获得了较好的效果。其中增感屏的分辨率大概是6-10lp/mm,一般使用的高速绿色荧光屏比中速的蓝色的分辨率要低一点。这样的方法局限于传感器噪声和灵敏度,一般需要比较长曝光时间,效果也比较一般,尤其是动态也比较差。
举个栗子:
XXXXXXXXXXXXXXXXXXXXXXXX/t/53937
XXXXXXXXXXXXXXXXXXXXXXXX/t/70070
XXXXXXXXXXXXXXXXXXXXXXXX/t/82394
XXXXXXXXXXXXXXXXXXXXXXXX/t/33805
XXXXXXXXXXXXXXXXXXXXXXX/watch?v=bwD9Bvf8CEw
我自己也进行了一些测试(iPhone X和Nintendo Switch):
可以看到,效果差强人意吧,可以大概看清楚东西,但是细节非常模糊。
更进阶一点的是使用牙片数字X射线传感器(DR),能够做到1-2秒内出图,并且动态范围很大,分辨率也很高(像素大小在20um级别,能做到20lp/mm)。可惜这样的传感器最大也就全幅相机传感器大小,只能看很小的样品,像iFixit那样的整个笔记本的透视图是不用想了(拼接都拼死人)
举个栗子:
XXXXXXXXXXXXXXXXXXXXXXXX/p/855101
XXXXXXXXXXXXXXXXXXXXXXX/wiki/XXXXXXXp?id=uvscada:gxs700
还有个办法就是用Intensifier(本质就是夜视仪+闪烁体+相机)。
本文介绍的则是X射线成像的终极武器,大面积X射线数字平板探测器。我运气比较好,大概两年前从eBay上以极低价格搞到了一台Trixell Pixium 4600 X射线平板探测器,尺寸为17inch*17inch,当时并不确定能否驱动,抱着赌一把的心态入手的。
这台探测器算是最早的一批医用大面积DR平板探测器了,大概在2000年左右上市,但是性能完全不输新产品的性能,唯一的缺点就是非常非常重(重达17kg),一般在医用的时候一台竖直安装在墙上配合电动滑轨(转图),一台水平安装在床下。后来的产品先是做成手提+一条线缆,再做成手提+无线传输+电池供电。就算到现在,我也几乎没有看到过比这台传感器有效面积更大的产品出现。
参数:
a-Si TFT面阵传感器耦合针状CsI:Tl闪烁体。
3120*3120像素,其中有效像素为3001*3001,像素间距143um,有效传感器面积约43cm*43cm。
四象限读出,读出时间约为1.25秒,数据为14bit。
饱和剂量(线性范围)大约30uGy。
这里解释一下,数字X射线成像一般有两种方式,一种是类似HPGe的直接探测方式,常用材料是a-Se,X光光子直接在半导体内产生电子对。另外一种是类似NaI:Tl的闪烁体探测器方式,一般用CsI作为闪烁体然后配合光电二极管读出。
但是大块的闪烁体直接耦合在图像传感器上,空间分辨率很低,像素间串扰严重。这里的解决办法是把闪烁体长成针状晶体,使得每个晶体都变成一个波导,直接把光导向传感器。牙片DR则还使用FOS(Fiber Optic Plates)来解决这个问题。
驱动及读出逆向过程
首先,这是一台医用设备,传感器公司直接就是Thales,Siemens,Phillips三家合资的,个人询问手册和软件基本没有可能得到回复(已经试过了),因为产品直接给OEM集成商的,相关手册也受到NDA严格控制。
通过Google搜索,还是从某集成商的公开网盘发现了一本这个传感器的手册,可惜这个手册里只讲解了基本硬件接口,并没有解释协议。
当然这本手册的信息量也很大了,从中获得的信息有:供电需要三路,正负5V和正24V,电流各需要2A,用RS232双向通讯来传输指令,数据从光纤口单向输出,光纤口数据协议是老掉牙的AMD TAXI协议,160Mbits/s。
第一步,先上电。人在美帝身不由己。。。用3个代表社会主义现代化的铁壳开关电源完美解决问题。
上电后,D1,D2这两个LED按照说明书要求亮起,因为没有有效指令发送,D3没有亮起。
打开串口助手,看到平板启动时候发出了4条回复,但是是二进制指令,不是ASCII码,看来很难从看出协议了,也不会有帮助功能了。我试着写了个脚本自动测试指令,后来发现这个指令不是定长的,而且由于平板探测器返回需要时间,似乎某些指令还会导致平板探测器卡死需要重新上电重启,意味着暴力方法可能是不行的。
这块平板探测器到这步,看上去就是不可能逆向出协议了,如果要真的驱动起来,恐怕需要拆开才行了。
==============分割线==============
当然这文章准备发出来了,就肯定有进展了。。。。不会让大家失望。
成功逆向这块探测器,要归功于国内的一种奇怪的网站。这就是分享软件的动态链接库(DLL)的网站。基本原因是多年前(Windows XP时代)病毒杀毒软件横行,经常有人有丢失程序的DLL的问题,然后就有人把很多软件的DLL发到这种网站上。单独的DLL一般人基本是没办法用的,但是如果有人缺了某个DLL文件,直接复制粘贴可能就解决了问题。到今天为止还有不少这类网站在运营,我在这类网站上竟然找到了某个系统集成商给这个平板准备的程序的DLL文件。
于是就自然而然地上IDA反汇编了咯。。。略去若干个夜晚的努力。。。
阅读了几个函数的汇编代码,也就差不多搞清楚了协议,这个协议真的是非常坑爹,没有那个DLL反汇编几乎是不可能猜到的,具体细节就不多说了。最后成功让平板进行了曝光和读出。第一次收到有效命令后,D3 LED就会亮起(如图所示)。每次发命令以后可以看到D5 LED亮起(这是X-ray Enable指示),亮起时间和设置的曝光时间有关。这个平板的曝光时间比较有趣,不是按照毫秒调节的,而是固定了0.5秒,1.0秒,2.3秒,3.2秒,4.0秒这么几个模式,暂时没有研究出其他曝光时间的设置方法,考虑到更短的时间可以用gate X光光源来做到,其实这些模式也够用了。
接下来就是解码光纤输出数据了。由于知道是TAXI协议了,干脆直接上光纤接收器,然后用上古芯片AMD的AM7969 TAXI接收芯片。不过这里不知道实际数据频率,但是由于TAXI只支持3种数据宽度(8bit,9bit,10bit),实际测试一下就好了,接收频率也可以用信号源设置来实际测试。
然而,事情似乎没有想象得这么简单,插上光纤接收器,没有得到任何信号,接收器本身对可见光还有遥控器的红外都有响应,似乎光纤没有光输出。用手机前置摄像头(iPhone后置摄像头带有红外滤镜,前置基本没过滤)看也没有看到任何信号。这样看来,要么是平板本身挂了,要么就是平板的光纤发射器坏了。看来需要打开平板的IO部分检查一下发射器的信号了。
==============分割线==============
拆看一看,茅塞顿开。
首先,这块平板开发的时候,已经不用AMD的芯片了,而是用了Cypress的HOTLink芯片(靠左侧QFP芯片),我买的接收器芯片比这平板还要老掉牙。
然后,这发射器。。。是个。。。1300nm的LED!1300nm这个波长因为光子能量低于硅半导体的能隙(大约1100nm),所以是无法用硅光电二极管探测到的,一般硅的CCD/CMOS图像传感器也不行。用实验室的红外观察器(本质上就是夜视仪)就可以轻松看到光了。之前的接收器都是硅PIN管子,当然啥信号都没有了。
于是重新购买了InGaAs的光纤接收器,这次能就能看到信号了,按照前面说的进行了测试以后,就可以得到并行数据输出了。
接下来就是用DSLogic Pro U3P逻辑分析仪把并行数据dump出来进行分析了。看了好久终于理解了像素输出顺序和数据打包格式。之后就先用DSView把并行数据解码,然后输出结果交给MATLAB。
最后就获得了从这台DR平板里读出的第一张图!(iPhone X, MacBook Pro 15-inch 2017, Nintendo Switch)
这里测试用的源是非常方便的手提式XRS-3脉冲X射线源,等效0.25mA管电流,270kVp,由Golden Engineering生产。这个源的电池也很方便,就用电动工具的14.4V镍氢电池即可,考虑到一般爱好者很难接触到超过160kVp的管子,这个算是超过160kVp最方便的解决方案了,广泛运用在NDT中,在一些情况下代替放射源和连续工作的探伤管。
用逻辑分析仪毕竟不是一个长期使用的好办法,我这里选择用一片Cypress CYUSB3014的开发板来进行数据的缓存和采集,直接USB 3.0连接电脑。同时写好了一个基于.NET的采集程序,方便大批量拍图的时候使用。
成像效果展示
接下来就是上实际效果图了。这里的每个图都是3120*3120分辨率的PNG文件,可以点开放大查看细节。
MacBook Pro 15-inch Late 2013
GIGE相机+镜头, 87W USB C 充电器, 3.5英寸机械硬盘+硬盘盒,望远镜调焦器,Zynq7010开发板,Sony MP-CL1激光投影机,某热成像电路板,步机电机
HDMI to USB C转换器, Magic Keyboard 2, Magic Mouse 2, Beoplay A1, Newton Scientific 50kV 4W X-ray Source
爱普生3LCD投影机
Anritsu MS2721B 7.1GHz手持频谱仪
冻鸡腿一包。由于这里的源高达270kVp,对于原子序数低的材料的对比度不是特别高。换200kVp以下的源应该可以接近医用效果。
Tektronix电流钳,三丰游标卡尺,Seek Thermal XR,B41T+万用表,某淘宝定向电桥。
Arduino MEGA2560
在这之后还有更激动人心的设备加入,有空再分享。
提示:由于潜在的法律问题,我没有公开协议的打算,请不要通过论坛联系我获取协议,如果你购买了同款传感器无法驱动,我也无能为力,谢谢。
[修改于 4年7个月前 - 2020/05/16 22:22:16]
买个大轴承,用arduino和步进电机试试这个XXXXXXXXXXXXXXXXXXXXXX/orht...
被剧透了。。。这是我最后提到的下一步中的其中一步。CBCT效果不错,下次再发帖。
地铁安检的平板是什么做的,看成像效果也很清晰,关键是面积还很大,很大的一个旅行箱都能全部拍下来,而X...
就是一堆光电二极管耦合闪烁体的线阵,靠传送带扫描过去的,所以理论上如果箱子进去了,你用棍子捅一下,安检员看到的画面会撕裂。。。当然这也是没有面阵传感器的时候的一个很好的替代方案,类似于扫描仪和相机的差别。
捡垃圾捡到一台cr,成像效果和dr的差距还是很明显的
CR效果还可以的啊。CR的大问题就是拍完读出这个循环太慢,而且传感器位置可能有变动,基本搞不了CT。
你这个源焦点很小吧,有用几何放大吗? 感觉大家要把我接下来准备发的东西剧透完了。。。
想问一下楼主做这些实验的时候有没有辐射防护啊,感觉都在普通房间里整的?我们这边做X光机调试要么去铅房...
请看本文开头警告。请注意,这些实验都不是在人群密集的公寓楼里完成的,遵守平方反比率就足够把剂量降低到安全水平了。
另,请不要臆测“图像这么高清,剂量一定很大”,这完全没有科学依据。DR的灵敏度和DQE都非常高,特别是这块医用的平板,30uGy就可以让平板饱和了。事实上就算用这块平板拍摄一张胸片,如果源有良好的准直,并且低能射线被良好过滤了,剂量应该和在医院拍胸片的剂量在一个量级上(这本身就是以前医院用的传感器)。当然,我反对爱好者实验的时候拍摄生物样品(包括自己)。
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。