(牡丹江醫(yī)學(xué)院 黑龍江 157011)
骨折多由嚴(yán)重創(chuàng)傷和高能量損傷所致,近年來(lái)發(fā)生率明顯呈增長(zhǎng)趨勢(shì)[1]。內(nèi)固定,手術(shù)創(chuàng)傷度對(duì)骨折手術(shù)尤其重要,除了預(yù)防并發(fā)癥外,復(fù)位內(nèi)固定質(zhì)量與創(chuàng)傷程度對(duì)治療骨折極其關(guān)鍵[2]。大多數(shù)骨科臨床研究表明,平面顯示的二維圖像不能完全給人直觀、立體的感覺(jué),影響醫(yī)患雙方溝通,醫(yī)生不易解釋手術(shù)方案,不利于構(gòu)建和諧醫(yī)患關(guān)系[3]。為使手術(shù)更精準(zhǔn)、安全,本研究將3D打印技術(shù)用于打印骨骼以及骨骼修復(fù)體的基于嵌入式的FDM型3D打印圖像控制系統(tǒng),主要研發(fā)了系統(tǒng)的圖像控制模塊的framebuffer的驅(qū)動(dòng)程序,完成了framebuffer的驅(qū)動(dòng)程序設(shè)計(jì),在治療時(shí),能夠利用3D技術(shù)打印出患者的骨骼實(shí)物模型,根據(jù)骨骼模型對(duì)植入導(dǎo)板進(jìn)行精確塑形,再將塑形后的骨導(dǎo)板移植到骨骼中進(jìn)行骨骼的修復(fù)。
嵌入式系統(tǒng)傳輸圖像數(shù)據(jù)信息,需要通過(guò)Linux系統(tǒng)下的幀緩沖(framebuffer)結(jié)構(gòu)控制器來(lái)實(shí)現(xiàn)。因此framebuffer的相關(guān)知識(shí)對(duì)于本系統(tǒng)的實(shí)驗(yàn)十分重要,本研究主要完成framebuffer的驅(qū)動(dòng)程序設(shè)計(jì),完成控制系統(tǒng)中圖像的傳輸與顯示。
工作原理如圖1。
圖1 framebuffer 工作原理圖
1.1.1 FDM 3D打印圖像傳輸系統(tǒng)framebuffer 總體控制設(shè)計(jì)
本系統(tǒng)所使用的芯片為Atmega 2560-16AU(AVR 核心處理器8位16MHz,256KB Flash),集成了很多的外部設(shè)備來(lái)配合完成芯片控制功能,在linux系統(tǒng)下的源代碼中的linux/platform_device.h 頭文件中定義了platform_device數(shù)據(jù)結(jié)構(gòu)來(lái)管理描述這些外部設(shè)備。在系統(tǒng)啟動(dòng)時(shí),就可以將所有芯片的平臺(tái)設(shè)備加載,結(jié)構(gòu)體形如下:
1.1.2 FDM 3D打印圖像傳輸系統(tǒng)framebuffer 驅(qū)動(dòng)結(jié)構(gòu)設(shè)計(jì)
幀緩沖作為用戶(hù)與硬件之間的中間層,起到電腦顯卡的作用,應(yīng)用程序?qū)彌_的操作即可看作是對(duì)顯存的操作。framebuffer 啟動(dòng)后,需要我們對(duì)其linux/drivers/videos/下的其的驅(qū)動(dòng)程序進(jìn)行部分編寫(xiě),驅(qū)動(dòng)程序是應(yīng)用程序與外部設(shè)備之間的操作的接口,對(duì)應(yīng)我們所使用的Atmega 2560-16AU(AVR 核心處理器8 位16MHz,256KB Flash)芯片,才能實(shí)現(xiàn)具體的圖像顯示功能。framebuffer設(shè)備驅(qū)動(dòng)包括在如下兩個(gè)內(nèi)核文件中:
(1)linux/include/linux/fb.h
(2)linux/drivers/video/fbmem.c
fb.h中主要包括了framebuffer 驅(qū)動(dòng)程序中占主要地位的數(shù)據(jù)結(jié)構(gòu)。而fbmen.c 則是既為上層的應(yīng)用程序提供操作framebuffer設(shè)備的函數(shù)接口,讓基本操作與硬件設(shè)備無(wú)關(guān),又為底層的硬件設(shè)備提供了相應(yīng)的操作接口,但這些操作也不由fbmen.c 完成,而是由系統(tǒng)使用的芯片處理器來(lái)決定的,本文中,我們由Atm2560fb.c來(lái)實(shí)現(xiàn)這些操作,需要根據(jù)不同的LCD 控制器來(lái)實(shí)現(xiàn)相關(guān)的接口。圖2為framebuffer設(shè)備驅(qū)動(dòng)結(jié)構(gòu)。
圖2 framebuffer 驅(qū)動(dòng)結(jié)構(gòu)
1.1.3 FDM 3D打印圖像傳輸系統(tǒng)framebuffer 驅(qū)動(dòng)程序設(shè)計(jì)
1.1.2 中完成framebuffer 驅(qū)動(dòng)程序的設(shè)計(jì),才能使其正常工作,讓圖片正確的顯示。驅(qū)動(dòng)程序與開(kāi)發(fā)所使用的的硬件設(shè)備相關(guān)。所以,驅(qū)動(dòng)程序分為了兩層:標(biāo)準(zhǔn)驅(qū)動(dòng)和非標(biāo)準(zhǔn)驅(qū)動(dòng)。
由圖2可以看出,標(biāo)準(zhǔn)驅(qū)動(dòng)主要為應(yīng)用程序提供操作接口[4],主要操作在fbmem.c的file_operations 結(jié)構(gòu)里,而底層驅(qū)動(dòng)則是framebuffer 驅(qū)動(dòng)程序真正需要完成的功能,需要進(jìn)行相應(yīng)程序的編寫(xiě),來(lái)實(shí)現(xiàn)真正的圖片顯示。本系統(tǒng)中幀緩沖驅(qū)動(dòng)主要在drivers/video/Atm2560/Atm2560fb.c中,驅(qū)動(dòng)的全部信息在Atm2560fb_info_t中。
framebuffer的驅(qū)動(dòng)程序就需要編寫(xiě)Atm2560fb.c文件,主要包括以下幾個(gè)內(nèi)容:
(1)初始化fb_info中成員函數(shù)。
(2)底層驅(qū)動(dòng)需要與設(shè)備驅(qū)動(dòng)實(shí)現(xiàn)綁定,這一過(guò)程就是在底層驅(qū)動(dòng)的加載的過(guò)程中完成的,為了實(shí)現(xiàn)與方便綁定,每一個(gè)platform_device都定義了一個(gè)platform_driver。
本文采用黑龍江拓盟科技有限公司的TMKJ-ET系列FDM 3D打印機(jī)進(jìn)行圖像控制系統(tǒng)的操作實(shí)驗(yàn),將骨手術(shù)患者術(shù)前CT 掃描數(shù)據(jù)導(dǎo)入三維建模軟件中生成三維骨結(jié)構(gòu),如圖3所示。圖4對(duì)術(shù)前骨手術(shù)患者骨骼進(jìn)行復(fù)位后圖像還原對(duì)比,得到修復(fù)后的骨骼三維圖,利用3D打印機(jī)將術(shù)后骨三維模型打印成型,并對(duì)打印的模型進(jìn)行骨導(dǎo)板復(fù)原手術(shù),最后,將精準(zhǔn)的骨導(dǎo)板植入到患者骨骼中,完成骨手術(shù)的固定復(fù)原。
圖3 骨手術(shù)前及術(shù)后CT圖
圖4 骨手術(shù)前三維重建以及術(shù)后三維重建圖
通過(guò)手術(shù)證明,F(xiàn)DM 3D打印圖像控制系統(tǒng)運(yùn)行速度快,交互性高,性能穩(wěn)定,可以精確打印骨科手術(shù)患者的三維骨模型,保證了骨科手術(shù)安全性和可靠性,使基于嵌入式的FDM型3D打印圖像控制系統(tǒng)更好服務(wù)于廣大骨科疾病患者。
在本研究中,3D打印技術(shù)已經(jīng)用于打印骨骼及骨骼修復(fù)體等。在治療時(shí),能夠利用3D技術(shù)打印出患者的骨骼實(shí)物模型,根據(jù)骨骼模型對(duì)植入導(dǎo)板進(jìn)行精確塑形,再將塑形后的導(dǎo)板移植到骨手術(shù)中進(jìn)行骨骼的修復(fù)。以往的3D打印圖像控制系統(tǒng)集成復(fù)雜,界面交互感差且效率低。本研究系統(tǒng)的圖像控制模塊的framebuffer的驅(qū)動(dòng)程序,完成了framebuffer的驅(qū)動(dòng)程序設(shè)計(jì),通過(guò)系統(tǒng)測(cè)試結(jié)果表明,該圖像控制系統(tǒng)運(yùn)行操作簡(jiǎn)單,效率高且性能穩(wěn)定,可以精確打印骨科手術(shù)患者的三維骨模型,保證了醫(yī)生能夠進(jìn)行精準(zhǔn)的骨科手術(shù)。