• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    工業(yè)CT系統(tǒng)軟件架構(gòu)基礎(chǔ)

    2016-05-14 04:35:11趙飛謝里陽李佳張子騫
    關(guān)鍵詞:數(shù)據(jù)類型編程語言

    趙飛 謝里陽 李佳 張子騫

    摘要:工業(yè)CT掃描成像包含了試件運動掃描與投影數(shù)據(jù)重建計算兩個重要步驟。這就要求工業(yè)CT掃描成像系統(tǒng)軟件必須即能靈活地控制硬件,又能高效地處理數(shù)據(jù)。因此,工業(yè)CT掃描成像系統(tǒng)軟件架構(gòu)的設(shè)計應(yīng)滿足此要求。據(jù)此,本文針對編程語言環(huán)境與處理數(shù)據(jù)類型的選擇以及硬件的虛擬方法等軟件架構(gòu)基礎(chǔ)性問題進(jìn)行了詳細(xì)討論。得出了以C語言作為編程語言、選擇整型數(shù)據(jù)和浮點型數(shù)據(jù)進(jìn)行處理以及利用C語言中的條件預(yù)編譯語句進(jìn)行硬件虛擬的結(jié)論。

    關(guān)鍵詞:工業(yè)CT 軟件架構(gòu) 編程語言 數(shù)據(jù)類型 虛擬硬件

    中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:B 文章編號:1007-9416(2016)05-0000-00

    Abstract: Industrial Computed Tomography (ICT) includes two important steps: scan of the moving specimens and reconstruction from the projection data. That means the software of ICT system must be flexible to control the hardware and efficient to process the data. Therefore, the design of the software architecture for ICT system should meet the requirements above. According to this, the fundamental issues of the software architecture are discussed in this paper: the programming language environment, the processing data type selection and the methods for hardware virtualization. And the conclusions are: using C language as the programming language of ICT system, choosing integer and floating-point type as the processing data types and hardware virtualization by the precompiled statements of C language.

    Key words: industrial computed tomography, software architecture, programming language, data type, hardware virtualization

    1 引言

    工業(yè)CT掃描成像系統(tǒng)是一種精密復(fù)雜的光學(xué)成像系統(tǒng),其掃描成像過程包含了試件運動掃描與投影數(shù)據(jù)重建計算兩個重要步驟。這就要求其管理者(軟件)高效地處理數(shù)據(jù),并且靈活地控制硬件。所有語言都有其技術(shù)瓶頸,一般說來,低級語言的編程效率較低但運行效率較高,高級語言編程效率較高而運行效率較低,各高級語言的庫又側(cè)重不同的應(yīng)用。整型數(shù)據(jù)由于占用空間較小,其存儲和傳輸?shù)某杀据^低,且有利于圖像灰度統(tǒng)計運算及顯示;但很多投影數(shù)據(jù)重建算法又要求數(shù)據(jù)為浮點型。工業(yè)CT掃描成像系統(tǒng)中涉及較多硬件,由于設(shè)備供貨周期和調(diào)試場地等因素的影響,調(diào)試軟件的計算機(jī)通常無法同某些(或全部)硬件設(shè)備連接,虛擬硬件技術(shù)可以讓計算機(jī)在調(diào)試某個硬件或算法軟件時,得到其它所有硬件的虛擬的合理反饋信息。因此,必須合理選擇編程的語言環(huán)境與所處理的數(shù)據(jù)類型,并適當(dāng)進(jìn)行硬件虛擬。

    2 選擇編程語言

    機(jī)器語言是唯一不需要翻譯而直接被計算機(jī)識別的程序設(shè)計語言[1],它是最低級的編程語言,可實現(xiàn)對計算機(jī)所有的操作,所有其它的語言都要由編譯器編譯成機(jī)器語言才能運行。匯編語言是機(jī)器語言的助記符,它將機(jī)器語言用有意義的英文字母縮寫替代,可讀性較好。它的級別、實現(xiàn)操作、運行效率均與機(jī)器語言相同,但也要編譯器將其編譯成機(jī)器語言才能運行。

    除了匯編語言和機(jī)器語言,其它的編程工具都是高級語言。從匯編語言開始有庫的概念,用戶也可以自定義子函數(shù),只不過高級語言中的庫針對更具體的處理對象。

    LabView的庫中有很多控制硬件的專業(yè)控件[2,3],便于快速生成硬件控制代碼,且按鈕美觀,是控制硬件的良好編程工具,但其處理數(shù)據(jù)的速度很慢。與之相反,F(xiàn)ortran(Formula Translate的縮寫[4])是數(shù)值計算的良好工具,其語法和數(shù)據(jù)結(jié)構(gòu)運算(如直接對數(shù)組和復(fù)數(shù)進(jìn)行運算)都是為便于數(shù)值計算而專門設(shè)計[5],能夠高效地實現(xiàn)CT所需的投影數(shù)據(jù)重建的運算,但它控制硬件能力很差。

    控制硬件和數(shù)據(jù)處理效率都很高的高級語言是C語言(含C++和Visual C++[6])。它是高級語言中的最低級的編程語言,具有如下特點:

    有強(qiáng)大的監(jiān)控和調(diào)試環(huán)境,控制硬件的能力僅次于匯編語言;

    (2)能夠?qū)崿F(xiàn)LabView的所有功能,它的代碼編寫速度相對較慢;

    (3)數(shù)據(jù)處理能力僅次于Fortran和Matlab,必要時可嵌入?yún)R編語言,速度即可與Fortran 相媲美,文獻(xiàn)[7~9]詳細(xì)闡述了C語言中嵌入?yún)R編語言的方法。

    Matlab與其說是一種編程語言,不如說是數(shù)值計算的實驗終端,也有人稱它為第四代計算機(jī)語言(前三代分別指機(jī)器語言、匯編語言和高級語言)[10]。早期的Matlab是用Fortran編寫的,1984年的Matlab版本已經(jīng)用C語言作了完全的改寫[11]。它結(jié)合了C/C++數(shù)學(xué)庫和圖形庫[10],全部由世界一流專家用C或者匯編語言編制,是世界一流水平的數(shù)值計算函數(shù)庫[12],運行效率極高。它提供了一個終端平臺,供使用者運行它的數(shù)學(xué)庫。如果在matlab平臺上逐次運行幾條語句,其速度尚可以達(dá)到C語言水平;但如果要多條語句循環(huán)跳轉(zhuǎn),速度極慢。但它的代碼編寫效率極高,便于數(shù)據(jù)可視化,很適于實驗室多變的實驗條件和數(shù)據(jù)的分析處理。

    由于Matlab的底核代碼就是基于C語言的,其數(shù)學(xué)庫易于做出與C語言的接口,便于C語言調(diào)用。文獻(xiàn)[13~15]詳細(xì)闡述了C語言調(diào)用Matlab庫的方法。CT投影數(shù)據(jù)的計算機(jī)仿真精度依賴于隨機(jī)數(shù)發(fā)生器的質(zhì)量。有人開發(fā)C語言本身的實用數(shù)學(xué)庫,但一般不適于大數(shù)據(jù)量的CT仿真。如文獻(xiàn)[16]提供的正態(tài)分布隨機(jī)序列,它的有效周期僅為5萬左右,以它為噪聲做大數(shù)據(jù)量的CT模擬重建,結(jié)果中有由噪聲的周期性引起的周期性花紋。Matlab的庫函數(shù)是由大型企業(yè)的多個專業(yè)人才合作開發(fā)的實用庫,被世界各國廣泛使用和驗證,具有更高的運行效率和可靠性。C語言調(diào)用Matlab庫,可提高C語言數(shù)值算法的編程效率。

    上述各種編程語言的特性如表1所示:低級語言的編程效率低,運行效率高,功能強(qiáng)大;高級語言的編程效率高,運行效率一般不低,其函數(shù)庫通常側(cè)重某一方面的功能。所有語言都有其技術(shù)瓶頸,按照CT系統(tǒng)的要求,C語言的綜合性能較好,但也需要其它語言的協(xié)助。

    3 數(shù)據(jù)類型

    本文中數(shù)據(jù)類型主要是指數(shù)據(jù)值在內(nèi)存中存放的格式(不包括指針、字符和自定義結(jié)構(gòu)體等):按小數(shù)點的位置可分為整型和浮點型。其中,浮點型數(shù)據(jù)按占用空間的大小可分為單精度和雙精度。整型數(shù)據(jù)按占用空間的大小可分為超短、短、長和超長等,按表示的范圍又可分為帶符號整型和無符號整型[17]。

    數(shù)據(jù)類型的不同將導(dǎo)致占用空間和運算速度的不同。CT掃描系統(tǒng)通常需要兩種精度的數(shù)據(jù):掃描投影數(shù)據(jù)一般由實際信號經(jīng)A/D轉(zhuǎn)換而成無符號整型數(shù)據(jù),通常由無符號短整型即可表示,目的在于減小存儲空間和便于快速處理;由于用投影數(shù)據(jù)重建后的數(shù)據(jù)通常為浮點型,一般用單精度浮點型表示即可。

    投影數(shù)據(jù)和重建后的數(shù)據(jù),通常需要進(jìn)行相同的圖像處理、顯示和保存等操作。C語言雖然不是強(qiáng)類型語言,但隨著它的發(fā)展,其類型檢查機(jī)制已經(jīng)得到了加強(qiáng)[18]。當(dāng)變量被聲明或者常量被寫出時,就已經(jīng)固定了它的數(shù)據(jù)類型,而且它本身無法更改。數(shù)據(jù)處理中,有些是可以統(tǒng)一處理的,但效率會降低。

    以下通過數(shù)據(jù)的灰度直方圖統(tǒng)計運算具體說明,如表2所示。其中:nA、nB和nX為無符號短整型變量;fX、fA、fB和fC為單精度浮點型變量;nH[·]、nH1[·]和fH[·]都是無符號長整型變量,它們要求其序號必須為整型變量;(UINT)(·)表示將目標(biāo)變量的輸出值強(qiáng)制轉(zhuǎn)換成無符號長整型,但不改變目標(biāo)變量本身的類型。nH1是對nH的內(nèi)存移位,結(jié)果使nH1[nX]與nH[nX?nA]代表同一內(nèi)存值,因此,投影數(shù)據(jù)統(tǒng)計結(jié)果存放變量可等效成nH1[nA]~nH1[nB]。但由于fA/fC的計算結(jié)果不一定是整數(shù),故無法做類似的等效。

    由表2知,與重建后的數(shù)據(jù)相比:處理投影數(shù)據(jù)的算法簡單,且計算速度快。若數(shù)據(jù)處理采用不同的算法,則對很多函數(shù)必須寫出兩套代碼,增加了編程的工作量;也可以利用C語言的模板關(guān)鍵字“template”[19],將兩個函數(shù)統(tǒng)一用重建數(shù)據(jù)的算法計算,對于投影數(shù)據(jù)的計算又浪費了時間。

    有一種折中的辦法,將所有浮點類型的數(shù)據(jù)fX都利用下式轉(zhuǎn)換成整型數(shù)據(jù)nX:

    (1)

    其中,fscale=65535/(fmax?fmin),fmin和fmax是整幅圖像中的灰度最值,65535是無符號短整型數(shù)據(jù)可表示的最大值。在內(nèi)存中只要保存數(shù)據(jù)nX和fmin、fscale的值,就可以在數(shù)據(jù)處理之后,通過下式恢復(fù)成目標(biāo)區(qū)域中的數(shù)據(jù):

    (2)

    此時,可對數(shù)據(jù)nX進(jìn)行統(tǒng)一的數(shù)據(jù)處理。由于計算機(jī)數(shù)據(jù)的離散表示,即使沒有經(jīng)過任何處理,經(jīng)由式(1)和式(2)變換之后,數(shù)據(jù)都有精度損失。因而,fX1與fX通常無法完全一致。

    上述方法在計算速度、代碼編寫效率和精度方面各有利弊,組建軟件架構(gòu)的時,要根據(jù)實際情況做出合理的選擇。

    4 硬件虛擬方法

    如前所述,工業(yè)CT掃描系統(tǒng)中涉及較多硬件,與計算機(jī)直接打交道的硬件主要有:運動控制器,圖像采集卡,探測器的命令處理器和射線機(jī)的控制器。這些硬件需要接收計算機(jī)的命令,并返回信息。由于設(shè)備供貨周期和調(diào)試場地等因素的影響,調(diào)試軟件的計算機(jī)通常無法同某些(或全部)硬件設(shè)備連接,因而在調(diào)試過程中得不到相應(yīng)的反饋信息。在C語言平臺下,只要利用條件預(yù)編譯語句(#define、#ifdef、#else和#endif),即可通過一條簡單的命令,在真實硬件和模擬的仿真硬件之間隨意切換[20]。

    需要強(qiáng)調(diào),仿真的信息一定要逼真,如:(1)采集完成的信息與采集開始命令之間必須延時;(2)采集到的各圖像之間要有一定的灰度變化;(3)運動到位信息與運動開始命令之間也要有延時,且延時要在一定范圍內(nèi)波動。

    以便于各硬件的分別調(diào)試,及后續(xù)的處理程序和多線程并行的修改。

    5 結(jié)語

    依據(jù)工業(yè)CT掃描成像系統(tǒng)對軟件數(shù)據(jù)處理的高效性與硬件控制的靈活性要求,本文針對軟件架構(gòu)中的編程語言環(huán)境與處理數(shù)據(jù)類型的選擇以及硬件的虛擬方法等基礎(chǔ)問題進(jìn)行了詳細(xì)討論。得出了以下結(jié)論:以C語言作為編程語言可兼顧軟件數(shù)據(jù)處理的高效性與硬件控制的靈活性,并可虛擬硬件;C語言編程效率較低,通過調(diào)用其它語言的函數(shù)庫可獲得一定的提高;選擇整型數(shù)據(jù)和浮點型數(shù)據(jù)進(jìn)行處理可提高CT系統(tǒng)的運行效率。

    參考文獻(xiàn)

    [1]姚愛國,杜瑞穎,譚成予.計算機(jī)導(dǎo)論[M].武漢:武漢大學(xué)出版社,2003.

    [2]鄧焱,王磊,傅琦 等.LabVIEW 7.1測試技術(shù)與儀器應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.

    [3]張凱,周陬,郭棟.LabVIEW虛擬儀器工程設(shè)計與開發(fā)[M].北京:國防工業(yè)出版社,2004.

    [4]錢樂秋,陳增榮,朱揚勇.FORTRAN語言程序設(shè)計與數(shù)值計算[M].上海:復(fù)旦大學(xué)出版社,1997.

    [5]鄧巍巍,王越男.Visual FORTRAN編程指南[M].北京:人民郵電出版社,2000.

    [6]宋愛榮.工業(yè)控制系統(tǒng)的C語言[J].機(jī)電工程.1999,(3):43.

    [7]邢敏.C語言與匯編語言的接口[J].通化師范學(xué)院學(xué)報.2002,23(5):33-35.

    [8]郭詠梅.C語言程序與匯編語言程序的接口分析[J].電腦學(xué)習(xí).2002,(1):30-31.

    [9]李月娥,樊秀梅.C與匯編程序接口方法的研究[J].山西大學(xué)學(xué)報(自然科學(xué)版),1997,20(1):45-48.

    [10]飛思科技產(chǎn)品研發(fā)中心.MATLAB6.5應(yīng)用接口編程[M].北京:電子工業(yè)出版社,2003.

    [11]余嘯海.Matlab接口技術(shù)與應(yīng)用[M].北京:國防工業(yè)出版社,2004.

    [12]鄭智琴.Simulink電子通信仿真與應(yīng)用[M].北京:國防工業(yè)出版社,2004.

    [13]況昌鵬,馮麗娟.VC中使用Matlab C++數(shù)學(xué)函數(shù)庫[J].電腦學(xué)習(xí),2001,(6):36-37.

    [14]劉志儉,潘獻(xiàn)飛,連軍想.MATLAB外部程序接口(6.x)[M].北京:科學(xué)出版社,2002.

    [15]蔣忠進(jìn),林君,陳祖斌.在Visual C++中調(diào)用MATLAB以實現(xiàn)數(shù)學(xué)算法[J].計算機(jī)應(yīng)用研究,2004,(5):89-91.

    [16]徐士良.C常用算法程序集(第二版)[M].北京:清華大學(xué)出版社,1996.

    [17]孫經(jīng)鈺,鄺孔武.C語言與數(shù)據(jù)結(jié)構(gòu)[M].北京:北京航空航天大學(xué)出版社,2001.

    [18]徐寶文,李幫清,劉杰 等.Brian W. Kernighan,Dennis M. Ritchie. C程序設(shè)計語言(第二版)[M].北京:機(jī)械工業(yè)出版社,2001.

    [19]Gregory Satir,Doug Brown.C++語言核心[M].張銘澤.北京:中國電力出版社,2001.

    [20]李一波,張森悅,孫玉霞 等.新概念C語言[M].沈陽:東北大學(xué)出版社,2004.

    猜你喜歡
    數(shù)據(jù)類型編程語言
    基于JavaScript編程語言之 閉包技術(shù)在焦點輪播上的應(yīng)用
    中國新通信(2022年3期)2022-04-11 22:20:58
    壓力-體積轉(zhuǎn)換在CFC編程語言中的實現(xiàn)解析
    詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
    如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
    Java編程語言的特點與應(yīng)用
    常用計算機(jī)編程語言的分析及選用技巧
    電子測試(2018年18期)2018-11-14 02:30:52
    淺談不同編程語言對計算機(jī)軟件開發(fā)的影響
    電子制作(2018年1期)2018-04-04 01:48:36
    S7—400PLC系統(tǒng)時間設(shè)置方法及在煉鋼廠中的應(yīng)用
    面向?qū)ο骔eb開發(fā)編程語言的的評估方法
    范疇數(shù)據(jù)類型上的子類型*
    平昌县| 荥经县| 沂南县| 民勤县| 阳泉市| 乐平市| 西昌市| 林西县| 辽阳市| 获嘉县| 岗巴县| 托里县| 温泉县| 资阳市| 合江县| 房山区| 兴业县| 斗六市| 库伦旗| 宜城市| 朝阳县| 阳山县| 河源市| 五寨县| 怀仁县| 京山县| 贵溪市| 房产| 尼木县| 大足县| 措勤县| 独山县| 新绛县| 清水河县| 高州市| 嵊州市| 泰和县| 赤壁市| 阿合奇县| 丹棱县| 墨脱县|