為了檢測毛細管中血液樣品的流速特征,本文介紹了一種基于現場可編程邏輯門陣列(FPGA)+線陣電荷耦合器件(CCD)+個人電腦(PC)端軟件結構的血液流速測量系統。在 TCD1703C 和 AD9826 器件數據手冊分析的基礎上,運用了 Verilog HDL 硬件描述語言對其驅動進行了設計和仿真驗證,并且在 FPGA 中同步進行了圖像信號的采集和血液樣品實時邊緣點信息的提取,然后對一系列離散位移量做差分運算得到每次掃描的血液樣品位移量,進而得出樣品的流速。最后,經過系統的仿真調試,對血液流速檢測系統的可行性進行了驗證;經過流速曲線的繪制與流速特性的分析,對測量血液流速的意義進行了分析。結果表明,該血液流速檢測系統具有簡便、測量耗時短等特點。
引用本文: 周厚明, 王若峰, 黨琦, 楊力, 王翔. 一種基于線陣電荷耦合器件的毛細管內血液流速檢測系統. 生物醫學工程學雜志, 2017, 34(6): 900-906. doi: 10.7507/1001-5515.201703045 復制
引言
血液黏度是表征血液流變特性的重要參數之一。臨床研究表明,許多疾病,如高血壓、心肌梗死等都會引起血液黏度值的改變[1]。目前用來測量血液黏度的儀器按原理大體分為兩類:壓力式血流變儀和旋轉式血流變儀[2-3]。但是,這兩種血流變儀都存在著耗時長、操作不便、血液離體誤差大的缺點。根據血液流變學知識,血液是一種非牛頓流體,其黏度越大,流速越低,這使得根據毛細管中血液的流速得到其黏度值大小具有了可能性。
因此,我們設計了一種實時提取毛細管中血液樣品流速的測量系統,系統需要完成模擬信號的采集、電信號的數字化、個人電腦(personal computer,PC)端流速曲線的顯示等功能。其中,信號采集采用線陣電荷耦合器件(charge-coupled device,CCD)[4],型號為 TCD1703C,電信號的數字化采用模數轉換器 AD9826。本系統以現場可編程邏輯門陣列(field-programmable gate array,FPGA)為核心[5],用于完成線陣 CCD、模數轉換器的驅動設計,實現 FPGA 與 PC 端的數據傳輸。
1 系統原理
本系統的結構框圖如圖 1 所示。

將毛細管水平放置于線陣 CCD 和平行光源之間,進行實驗時,在涂有疏水性涂層的載玻片上滴上待測樣品,然后將樣品底部接觸到毛細管的左端,在毛細現象的作用下,血樣被自然地吸入毛細管,且血條端點以某種變化的速度向前移動。
在血液樣品流動的過程中,線陣 CCD 以一定的周期 T 不斷地曝光,采集到的視頻信號經由 AD9826 轉化為數字信號,然后傳輸到 FPGA 中進行邊緣點的提取,最后傳入軟件平臺進行流速曲線的繪制。假設線陣 CCD 第 n 次曝光時,血條邊緣點對應的線陣 CCD 象元數為 Pn,則一系列 Pn 值實際上代表了樣品在毛細管中的離散位移,曝光周期 T 和象元的長度都是已知的,因此可以計算出離散位移 Pn 值,然后進行(Pn+1–Pn)的差分運算,即可得到離散的速度。從以上分析我們可以看出,線陣 CCD 的精度越高,曝光時間 T 越小,得到的流速越接近實際流速的情況。
2 系統設計
2.1 TCD1703C 驅動設計
TCD1703C 是一種高靈敏度、低暗電流的線陣 CCD[6],有 7 500 個象元。完成其驅動設計需要 SH、Q1、Q2、RS、CP 五路驅動時鐘的相互配合。根據數據手冊的時序要求對時鐘關系進一步分析,得到如圖 2 所示的時序設計圖。

0 位置即起始位置,處于 Q1 的上升沿。Q1 脈沖持續時間為 2 500 ns,在 Q1 上升沿 500 ns 后 SH 脈沖到來,SH 脈沖持續時間為 1 500 ns,此間,Q2、RS、CP 皆保持低電平。在第 2 500 ns 之后,Q1、Q2 開始執行頻率為 1 MHz、占空比為 50% 的時鐘循環。將 Q1 的前半個周期等分為 5 個區間,每個區間為 100 ns,則第 2 個區間 RS 脈沖到來、第 4 個區間 CP 脈沖到來。在第 2 500 ns 后,RS 和 CP 也開始執行頻率為 1 MHz 的時鐘循環。
若要上述設計得以實現,則基礎時鐘的周期不應大于 RS 和 CP 的脈沖寬度。為使代碼編寫簡便,將基礎時鐘設為 10 MHz。本設計所用開發板的時鐘頻率為 50 MHz,采用 FPGA 內部提供的鎖相環(phase-locked loop,PLL)直接得到 10 MHz 的基礎時鐘。根據以上分析,本文利用 Model 公司開發的仿真工具 Modelsim 進行驅動波形仿真[7],得到的仿真波形如圖 3 所示,可以看出所設計的五路驅動時鐘有著嚴格的時序關系,滿足線陣 CCD 正常工作的要求。

2.2 AD9826 驅動設計
AD9826 的驅動設計包括模數轉換器內部寄存器的配置和采樣時序的設計。
AD9826 內部需要配置的寄存器有:配置寄存器,MUX 配置寄存器,PGA,Offset。其中,配置寄存器控制 AD9826 的工作模式和偏置電平,MUX 配置寄存器控制 AD9826 的采樣通道順序,PGA、Offset 分別控制著信號的增益和補償偏移。
按照要求配置好寄存器后,開始模數轉換器采樣時序的設計。AD9826 有兩種采樣模式:相關雙采樣模式[8]和 VOS 電平采樣模式。本設計的目的在于檢測兩種狀態(毛細管被遮擋狀態和未被遮擋狀態)的灰度值變化,不必要精確到象元點的真實灰度值,因此,我們采用 VOS 電平采樣模式,只對信號電平進行采集,這里選擇 8 位精度的灰度輸出。已知象元信號的頻率為 1 MHz,而且 CDSCLK1 的下降沿和 CDSCLK2 的上升沿必須處于 ADCCLK 為低的時間段,因此我們做出圖 4 的時序設計。


從圖 4 可以看出,ADCCLK 的頻率為 1 MHz,將其平分為 10 個等份,這樣設計簡單而且符合要求,單點采樣不會用到采樣脈沖 CDSCLK1,得到的采樣時序仿真圖如圖 5 所示。

2.3 邊緣點的提取
常用的 CCD 圖像邊緣點的檢測有浮動閾值法[9]和直線擬合法[10-11]等,但這兩種方法存在著受干擾大和存儲量大的缺點。本設計基于實時性和資源消耗低的考慮,提出了一種自適應的中值算法,具有一定的參考價值。

通過 Quartus 軟件的 Signaltap Ⅱ(邏輯分析儀)實際查看線陣 CCD 的輸出時,發現樣品邊緣的灰度值變化具有比較好的線性,即使采用直線擬合法,將漸變區灰度值擬合成一條直線,所得到的邊緣點距離漸變區的幾何中點也非常近。由于測量過程中光源的波動性、血液進樣的抖動、血液的流動等因素的影響,很難將漸變區的寬度確定為某一個值,同樣地,漸變區兩端的灰度值也不可能為確定值。因此,本文提出一種自適應的中值算法以求解決問題。
由圖 6 可以看到,漸變區寬度為 H–L,漸變區兩端的灰度值為 VL、VH,前面已經分析,每次掃描時它們都會發生微小的變化。現設置一存儲深度為 2M 的寄存器(即圖 7 中寬度為 2M 的窗口),CCD 輸出的灰度數據由窗口右側向左側移動,執行右側灰度值減去左側灰度值的運算,并進行二值化處理,可得
![]() |
設定一個閾值 VE,其值為
![]() |
![]() |
事實上(VH–VL)/2 是一個不確定的值,但是由于其變化幅度非常微小,完全可以確定一個有效值進行運算。對于血液樣品而言,除了可能出現的噪聲,在毛細管血液覆蓋區和未被遮擋區的 V 值是很小的(基本上小于 10),因此理論上 VE 值只要大于覆蓋區和未被遮擋區的 V 值、小于或等于(VH–VL)/2 都為有效。我們做此算法是為了提取漸變區內一系列滿足式(3)中 VR=1 的象元點的計數值,也就是圖 6 中滿足條件點的計數值 n。由于計數的位置為窗口的右側,不失對稱性,我們將計數值加上窗口寬度的和(n+2M)作為實際漸變區的寬度,取其中點作為邊緣點 Pi,可以看到,Pi 距離漸變區的幾何中心點非常接近。
如圖 6 所示,點 A 和點 Z 分別為第一個和最后一個滿足 VR=1 的象元點的位置,本算法自適應的意義在于:就血液樣品而言,每幀數據漸變區的斜率會出現微小幅度的減小或增大的可能性是存在的。假設出現斜率稍微變小的情況,那么點 A 會小幅度右移,而點 Z 會出現同樣幅度的左移,理論上說,由于其對稱性,中心點也就是邊緣點的位置是不變的。而對于漸變區寬度發生小幅度改變而言,A 和 Z 同樣可以自適應地進行調整,中心點位置也會適應漸變區寬度的變化而變化。當然,運算中的系統誤差是存在的,但是求速度的時候要做邊緣點(Pn+1–Pn)的差分運算,系統誤差就被抵消了。因此,得到的離散位移量是準確的。可以看到漸變區脈沖寬度為 n+2M,而低灰度區可能出現的高灰度噪聲的脈寬是比較小的,因此可以設置一個合適的閾值 N,忽略脈寬小于 N 的脈沖,達到去噪的目的。
利用 Quartus Ⅱ的 Signaltap Ⅱ對實際 CCD 輸出灰度值的提取來進行分析,如圖 7 所示。從 0 位置開始傳輸一幀 CCD 灰度圖像,漸變區左邊是血液樣品覆蓋區的 CCD 灰度值,灰度值較高(VOS 電平采樣);漸變區以右是亮區,灰度值較低,而且處于相同的低值。圖中,信號 rq 的脈沖寬度為圖 6 中二值化后的 n 值。可以看出,每一個漸變區都出現一個 rq 脈沖,而且沒有噪聲的干擾。rq 脈沖寬度 n 加上窗口寬度 2M 即為算法所得漸變區寬度(n+2M),編寫 Verilog HDL 代碼對其取中點即可得到邊緣點 P。從圖中可以看出,邊緣點 P 與 CCD 灰度值真實漸變區的幾何中點距離非常接近。

最后,將得到的邊緣點數據經過緩存、串口通信傳輸到 PC 端軟件,進行血液樣品流速曲線的繪制。
3 軟件平臺設計及實驗結果分析
軟件平臺主要包括串口的設置和流速曲線的顯示。串口控件采用一種可視組件庫(Visual Component Library,VCL)串口控件 Victor,基于 C++ 開發。將串口設置為:COM1 口,波特率 9 600,無奇偶校驗,8 位數據位,1 個停止位。顯示流速曲線的控件利用 Steema Software 提供的 TeeChart 控件,該控件被 C++builder 提供在 VCL 中,具有強大完善的作圖功能。
每兩次曝光的時間間隔為 T,象元的長度 L 已知,從而可以計算出離散的速度 Vi:
![]() |
Vi 的單位為 m/s。把 L/T 定義為系數,對串口接收到的數據進行處理,每個數據都乘以該系數,壓入 speed,就可以得到轉換后的流速數據。

整個實驗的具體過程為:
(1)將內徑 0.5 mm、管長 100 mm 的毛細玻璃管水平放置于線陣 CCD 的象元上,并在玻璃管兩邊分別水平粘貼 2~3 片黑色膠帶(固定毛細管并防止光的散射)。然后打開光源,將系統上電,把代碼下載到開發板,FPGA 自動配置線陣 CCD 與 AD9826。
(2)打開軟件,完成串口各項參數的設置,然后點擊 Clear 按鈕清空無效數據,之后點擊 Continue 按鈕,開始接收 FPGA 發送的流速數據。在代碼編寫時,不接收實驗前流速為 0 的數據。
(3)將血液樣品滴在載玻片上(載玻片涂有均勻的疏水性涂層,用以保持血液樣品形狀完好,降低進樣誤差),然后水平移動載玻片使毛細管左端完全浸入樣品液珠內,在毛細現象的作用下,血液樣品將自然地向毛細管右端流動,同時,FPGA 不斷地向軟件平臺發送流速數據,當毛細管中的樣品不再流動時將不會接收到數據,此時點擊 Drawn 按鈕進行流速曲線的繪制。
(4)實驗完成后,點擊 File 按鈕,在其下拉菜單欄可以保存接收到的流速數據,用于對比分析。
根據以上實驗流程,得到血液樣品的流速曲線如圖 8 所示。

為了更好地對比分析不同黏度樣品的流動特性,將采集到的人體血液樣品經過離心處理(1 000 r/m,10 min)后,分別配制成 30% 紅細胞壓積(hematocrit,Hct)、40%Hct、50%Hct 的血液樣品,然后與紅墨水、0.03 g/10 mL 的黃原膠溶液進行多次對比實驗。為了保證實驗的準確性,樣品體積固定為 300 μL。將多次實驗的數據保存為 txt 文件導入 Excel 中,得到的流速與時間關系圖如圖 9 所示,流速與位移關系圖如圖 10 所示。
根據泊肅葉定律
![]() |
流量 Q 的定義式為
![]() |
兩式聯立得
![]() |
其中,Q 為樣品的體積流量,η 為樣品的黏度,L 為毛細管中血液樣品的長度,?p 為毛細管兩端壓強差。可以根據式(7)計算流速 v=0.021 m/s 時的血樣黏度值,2 號、3 號、4 號、5 號所對應的 L 值如圖 10 所示,1 號紅墨水最小流速大于 0.021 m/s,這里取 0.04 m/s 進行計算。由于牛頓流體是非牛頓流體的特例[12],用此方法計算的非牛頓流體的黏度值具有一定的參考意義。
在保證血樣自然流動的前提下,毛細管兩端壓強差的監測具有一定的復雜性,因此,我們采用張力來衡量毛細管兩端壓強差。毛細管是水平放置的,不存在重力因素,張力 F 滿足
![]() |
則壓強差
![]() |
其中 r 為毛細管半徑,大小為 0.25 mm,γ 為流體的張力系數,θ 為毛細管中液面與管壁的夾角。由于實驗室條件有限,這里用水的等效壓強來代替 ?p,25℃ 時水的張力系數為 7.21×10–2 N·m–1,則 ?p 的大小為 542 Pa。
為了更好地進行實驗分析,采用英國馬爾文儀器公司的 Bohlin Gemini HR Nano 型高級旋轉流變儀分別對五組樣品進行黏度的測量,再加上基于式(7)計算的黏度參考值,得到的結果見表 1。

毛細管比線陣 CCD 的有效長度稍長,液體完全遮擋住 CCD 有效象元時 FPGA 是不會發送數據的,因此,流速曲線的末端實則代表了液體已經流過線陣 CCD 的有效象元。結合圖 9、圖 10、表 1 可以得出以下結論:
(1)從表中可以看出,黏度(低切、高切)最低的是 1 號紅墨水,黏度最高的是 5 號黃原膠溶液,30%Hct、40%Hct、50%Hct 血樣的黏度在 1 號和 5 號的范圍內依次增大,黏度關系對應到圖 9 中的流速曲線,可以看出樣品的流速隨著黏度的增大依次減小,不同紅細胞壓積的血液樣品的流速范圍處于 1 號和 5 號內,表明血液的黏度值存在著上下界限。
(2)黏度的大小與液體流速的相關性同樣可以映射到液體流過同樣位移所用的時間,高黏度樣品所用的時間應該大于低黏度樣品的耗時,這同樣可以從圖 9 中得到印證。
(3)從牛頓流體和非牛頓流體的特性來看,血液作為一種非牛頓流體,是剪切稀化的,也就是血液黏度是隨著切變率的增大而減小的,對應到流速與時間的關系上,從圖 9 可以看出,其曲線圖不是線性的,而是近似指數型。
(4)從表 1 中的黏度計算值來看,1 號紅墨水的黏度計算值為 1.99 mPa·s,雖然比 4.64 s–1、215 s–1切變率下的儀器測量值稍大,但在 2.15 s–1的切變率下,1 號紅墨水的儀器測量值為 2.22 mPa·s,可見依據流速計算的黏度值處于儀器測量值的正常范圍內。以 1 號紅墨水的黏度計算值為參考,2 號樣品到 5 號樣品在 0.021 m/s 時的黏度計算值都處于儀器實測高、低切值的范圍內,且 2 號樣品到 5 號樣品在同一流速 0.021 m/s 時的黏度值是依次增大的,即在同一切變率下的黏度值是依次增大的。可以看出,基于流速計算的不同樣品的黏度值滿足樣品本身的流變特性,且與儀器實測值在一定程度上是吻合的。
通過以上分析,可以看出本設計具有一定的合理性,達到了預計的目標。然而,流速曲線并不平滑,這與很多因素有關,比如光源的不穩定、毛細管內徑的不均勻、毛細管的水平程度、毛細管的輕微震動等;0 時刻時的流速并不為 0,這是由于毛細管進樣端一小段長度并未被計算在內。由于實驗室條件有限,以上因素完全可以用更加精密的器件和更加穩定的光源得到良好的改善。
4 討論與結論
本文基于 FPGA+線陣 CCD 的構架系統,提出了一種毛細管內血液樣品流速實時監測的方案。對于邊緣點的檢測,提出了一種自適應的中值算法,從前面分析可以看到,該邊緣點檢測算法不僅可以自適應漸變區小幅度的變化,而且對噪聲有著較好的抑制效果。
從系統整體來看,血液樣品流過全部象元的時間不會超過 5 s,加上樣品進樣和系統計算的時間,整個測量流程應在 15 s 以內。如果該方案進一步豐富成黏度的測量,與表 2 展示的內容對比,可以預見:它與傳統的血流變儀相比,具有系統簡單、測量耗時少、實時性強的特點,而且測量過程需要的血液樣品非常少,完全有可能實現在體測量的理想目標。根據血液流變學的泊肅葉定律和卡森模型[13]等理論,加上工業技術和更加精密的儀器補償,還可能在軟件平臺實現血液的黏度顯示,我們正在朝著這個方向努力。

引言
血液黏度是表征血液流變特性的重要參數之一。臨床研究表明,許多疾病,如高血壓、心肌梗死等都會引起血液黏度值的改變[1]。目前用來測量血液黏度的儀器按原理大體分為兩類:壓力式血流變儀和旋轉式血流變儀[2-3]。但是,這兩種血流變儀都存在著耗時長、操作不便、血液離體誤差大的缺點。根據血液流變學知識,血液是一種非牛頓流體,其黏度越大,流速越低,這使得根據毛細管中血液的流速得到其黏度值大小具有了可能性。
因此,我們設計了一種實時提取毛細管中血液樣品流速的測量系統,系統需要完成模擬信號的采集、電信號的數字化、個人電腦(personal computer,PC)端流速曲線的顯示等功能。其中,信號采集采用線陣電荷耦合器件(charge-coupled device,CCD)[4],型號為 TCD1703C,電信號的數字化采用模數轉換器 AD9826。本系統以現場可編程邏輯門陣列(field-programmable gate array,FPGA)為核心[5],用于完成線陣 CCD、模數轉換器的驅動設計,實現 FPGA 與 PC 端的數據傳輸。
1 系統原理
本系統的結構框圖如圖 1 所示。

將毛細管水平放置于線陣 CCD 和平行光源之間,進行實驗時,在涂有疏水性涂層的載玻片上滴上待測樣品,然后將樣品底部接觸到毛細管的左端,在毛細現象的作用下,血樣被自然地吸入毛細管,且血條端點以某種變化的速度向前移動。
在血液樣品流動的過程中,線陣 CCD 以一定的周期 T 不斷地曝光,采集到的視頻信號經由 AD9826 轉化為數字信號,然后傳輸到 FPGA 中進行邊緣點的提取,最后傳入軟件平臺進行流速曲線的繪制。假設線陣 CCD 第 n 次曝光時,血條邊緣點對應的線陣 CCD 象元數為 Pn,則一系列 Pn 值實際上代表了樣品在毛細管中的離散位移,曝光周期 T 和象元的長度都是已知的,因此可以計算出離散位移 Pn 值,然后進行(Pn+1–Pn)的差分運算,即可得到離散的速度。從以上分析我們可以看出,線陣 CCD 的精度越高,曝光時間 T 越小,得到的流速越接近實際流速的情況。
2 系統設計
2.1 TCD1703C 驅動設計
TCD1703C 是一種高靈敏度、低暗電流的線陣 CCD[6],有 7 500 個象元。完成其驅動設計需要 SH、Q1、Q2、RS、CP 五路驅動時鐘的相互配合。根據數據手冊的時序要求對時鐘關系進一步分析,得到如圖 2 所示的時序設計圖。

0 位置即起始位置,處于 Q1 的上升沿。Q1 脈沖持續時間為 2 500 ns,在 Q1 上升沿 500 ns 后 SH 脈沖到來,SH 脈沖持續時間為 1 500 ns,此間,Q2、RS、CP 皆保持低電平。在第 2 500 ns 之后,Q1、Q2 開始執行頻率為 1 MHz、占空比為 50% 的時鐘循環。將 Q1 的前半個周期等分為 5 個區間,每個區間為 100 ns,則第 2 個區間 RS 脈沖到來、第 4 個區間 CP 脈沖到來。在第 2 500 ns 后,RS 和 CP 也開始執行頻率為 1 MHz 的時鐘循環。
若要上述設計得以實現,則基礎時鐘的周期不應大于 RS 和 CP 的脈沖寬度。為使代碼編寫簡便,將基礎時鐘設為 10 MHz。本設計所用開發板的時鐘頻率為 50 MHz,采用 FPGA 內部提供的鎖相環(phase-locked loop,PLL)直接得到 10 MHz 的基礎時鐘。根據以上分析,本文利用 Model 公司開發的仿真工具 Modelsim 進行驅動波形仿真[7],得到的仿真波形如圖 3 所示,可以看出所設計的五路驅動時鐘有著嚴格的時序關系,滿足線陣 CCD 正常工作的要求。

2.2 AD9826 驅動設計
AD9826 的驅動設計包括模數轉換器內部寄存器的配置和采樣時序的設計。
AD9826 內部需要配置的寄存器有:配置寄存器,MUX 配置寄存器,PGA,Offset。其中,配置寄存器控制 AD9826 的工作模式和偏置電平,MUX 配置寄存器控制 AD9826 的采樣通道順序,PGA、Offset 分別控制著信號的增益和補償偏移。
按照要求配置好寄存器后,開始模數轉換器采樣時序的設計。AD9826 有兩種采樣模式:相關雙采樣模式[8]和 VOS 電平采樣模式。本設計的目的在于檢測兩種狀態(毛細管被遮擋狀態和未被遮擋狀態)的灰度值變化,不必要精確到象元點的真實灰度值,因此,我們采用 VOS 電平采樣模式,只對信號電平進行采集,這里選擇 8 位精度的灰度輸出。已知象元信號的頻率為 1 MHz,而且 CDSCLK1 的下降沿和 CDSCLK2 的上升沿必須處于 ADCCLK 為低的時間段,因此我們做出圖 4 的時序設計。


從圖 4 可以看出,ADCCLK 的頻率為 1 MHz,將其平分為 10 個等份,這樣設計簡單而且符合要求,單點采樣不會用到采樣脈沖 CDSCLK1,得到的采樣時序仿真圖如圖 5 所示。

2.3 邊緣點的提取
常用的 CCD 圖像邊緣點的檢測有浮動閾值法[9]和直線擬合法[10-11]等,但這兩種方法存在著受干擾大和存儲量大的缺點。本設計基于實時性和資源消耗低的考慮,提出了一種自適應的中值算法,具有一定的參考價值。

通過 Quartus 軟件的 Signaltap Ⅱ(邏輯分析儀)實際查看線陣 CCD 的輸出時,發現樣品邊緣的灰度值變化具有比較好的線性,即使采用直線擬合法,將漸變區灰度值擬合成一條直線,所得到的邊緣點距離漸變區的幾何中點也非常近。由于測量過程中光源的波動性、血液進樣的抖動、血液的流動等因素的影響,很難將漸變區的寬度確定為某一個值,同樣地,漸變區兩端的灰度值也不可能為確定值。因此,本文提出一種自適應的中值算法以求解決問題。
由圖 6 可以看到,漸變區寬度為 H–L,漸變區兩端的灰度值為 VL、VH,前面已經分析,每次掃描時它們都會發生微小的變化。現設置一存儲深度為 2M 的寄存器(即圖 7 中寬度為 2M 的窗口),CCD 輸出的灰度數據由窗口右側向左側移動,執行右側灰度值減去左側灰度值的運算,并進行二值化處理,可得
![]() |
設定一個閾值 VE,其值為
![]() |
![]() |
事實上(VH–VL)/2 是一個不確定的值,但是由于其變化幅度非常微小,完全可以確定一個有效值進行運算。對于血液樣品而言,除了可能出現的噪聲,在毛細管血液覆蓋區和未被遮擋區的 V 值是很小的(基本上小于 10),因此理論上 VE 值只要大于覆蓋區和未被遮擋區的 V 值、小于或等于(VH–VL)/2 都為有效。我們做此算法是為了提取漸變區內一系列滿足式(3)中 VR=1 的象元點的計數值,也就是圖 6 中滿足條件點的計數值 n。由于計數的位置為窗口的右側,不失對稱性,我們將計數值加上窗口寬度的和(n+2M)作為實際漸變區的寬度,取其中點作為邊緣點 Pi,可以看到,Pi 距離漸變區的幾何中心點非常接近。
如圖 6 所示,點 A 和點 Z 分別為第一個和最后一個滿足 VR=1 的象元點的位置,本算法自適應的意義在于:就血液樣品而言,每幀數據漸變區的斜率會出現微小幅度的減小或增大的可能性是存在的。假設出現斜率稍微變小的情況,那么點 A 會小幅度右移,而點 Z 會出現同樣幅度的左移,理論上說,由于其對稱性,中心點也就是邊緣點的位置是不變的。而對于漸變區寬度發生小幅度改變而言,A 和 Z 同樣可以自適應地進行調整,中心點位置也會適應漸變區寬度的變化而變化。當然,運算中的系統誤差是存在的,但是求速度的時候要做邊緣點(Pn+1–Pn)的差分運算,系統誤差就被抵消了。因此,得到的離散位移量是準確的。可以看到漸變區脈沖寬度為 n+2M,而低灰度區可能出現的高灰度噪聲的脈寬是比較小的,因此可以設置一個合適的閾值 N,忽略脈寬小于 N 的脈沖,達到去噪的目的。
利用 Quartus Ⅱ的 Signaltap Ⅱ對實際 CCD 輸出灰度值的提取來進行分析,如圖 7 所示。從 0 位置開始傳輸一幀 CCD 灰度圖像,漸變區左邊是血液樣品覆蓋區的 CCD 灰度值,灰度值較高(VOS 電平采樣);漸變區以右是亮區,灰度值較低,而且處于相同的低值。圖中,信號 rq 的脈沖寬度為圖 6 中二值化后的 n 值。可以看出,每一個漸變區都出現一個 rq 脈沖,而且沒有噪聲的干擾。rq 脈沖寬度 n 加上窗口寬度 2M 即為算法所得漸變區寬度(n+2M),編寫 Verilog HDL 代碼對其取中點即可得到邊緣點 P。從圖中可以看出,邊緣點 P 與 CCD 灰度值真實漸變區的幾何中點距離非常接近。

最后,將得到的邊緣點數據經過緩存、串口通信傳輸到 PC 端軟件,進行血液樣品流速曲線的繪制。
3 軟件平臺設計及實驗結果分析
軟件平臺主要包括串口的設置和流速曲線的顯示。串口控件采用一種可視組件庫(Visual Component Library,VCL)串口控件 Victor,基于 C++ 開發。將串口設置為:COM1 口,波特率 9 600,無奇偶校驗,8 位數據位,1 個停止位。顯示流速曲線的控件利用 Steema Software 提供的 TeeChart 控件,該控件被 C++builder 提供在 VCL 中,具有強大完善的作圖功能。
每兩次曝光的時間間隔為 T,象元的長度 L 已知,從而可以計算出離散的速度 Vi:
![]() |
Vi 的單位為 m/s。把 L/T 定義為系數,對串口接收到的數據進行處理,每個數據都乘以該系數,壓入 speed,就可以得到轉換后的流速數據。

整個實驗的具體過程為:
(1)將內徑 0.5 mm、管長 100 mm 的毛細玻璃管水平放置于線陣 CCD 的象元上,并在玻璃管兩邊分別水平粘貼 2~3 片黑色膠帶(固定毛細管并防止光的散射)。然后打開光源,將系統上電,把代碼下載到開發板,FPGA 自動配置線陣 CCD 與 AD9826。
(2)打開軟件,完成串口各項參數的設置,然后點擊 Clear 按鈕清空無效數據,之后點擊 Continue 按鈕,開始接收 FPGA 發送的流速數據。在代碼編寫時,不接收實驗前流速為 0 的數據。
(3)將血液樣品滴在載玻片上(載玻片涂有均勻的疏水性涂層,用以保持血液樣品形狀完好,降低進樣誤差),然后水平移動載玻片使毛細管左端完全浸入樣品液珠內,在毛細現象的作用下,血液樣品將自然地向毛細管右端流動,同時,FPGA 不斷地向軟件平臺發送流速數據,當毛細管中的樣品不再流動時將不會接收到數據,此時點擊 Drawn 按鈕進行流速曲線的繪制。
(4)實驗完成后,點擊 File 按鈕,在其下拉菜單欄可以保存接收到的流速數據,用于對比分析。
根據以上實驗流程,得到血液樣品的流速曲線如圖 8 所示。

為了更好地對比分析不同黏度樣品的流動特性,將采集到的人體血液樣品經過離心處理(1 000 r/m,10 min)后,分別配制成 30% 紅細胞壓積(hematocrit,Hct)、40%Hct、50%Hct 的血液樣品,然后與紅墨水、0.03 g/10 mL 的黃原膠溶液進行多次對比實驗。為了保證實驗的準確性,樣品體積固定為 300 μL。將多次實驗的數據保存為 txt 文件導入 Excel 中,得到的流速與時間關系圖如圖 9 所示,流速與位移關系圖如圖 10 所示。
根據泊肅葉定律
![]() |
流量 Q 的定義式為
![]() |
兩式聯立得
![]() |
其中,Q 為樣品的體積流量,η 為樣品的黏度,L 為毛細管中血液樣品的長度,?p 為毛細管兩端壓強差。可以根據式(7)計算流速 v=0.021 m/s 時的血樣黏度值,2 號、3 號、4 號、5 號所對應的 L 值如圖 10 所示,1 號紅墨水最小流速大于 0.021 m/s,這里取 0.04 m/s 進行計算。由于牛頓流體是非牛頓流體的特例[12],用此方法計算的非牛頓流體的黏度值具有一定的參考意義。
在保證血樣自然流動的前提下,毛細管兩端壓強差的監測具有一定的復雜性,因此,我們采用張力來衡量毛細管兩端壓強差。毛細管是水平放置的,不存在重力因素,張力 F 滿足
![]() |
則壓強差
![]() |
其中 r 為毛細管半徑,大小為 0.25 mm,γ 為流體的張力系數,θ 為毛細管中液面與管壁的夾角。由于實驗室條件有限,這里用水的等效壓強來代替 ?p,25℃ 時水的張力系數為 7.21×10–2 N·m–1,則 ?p 的大小為 542 Pa。
為了更好地進行實驗分析,采用英國馬爾文儀器公司的 Bohlin Gemini HR Nano 型高級旋轉流變儀分別對五組樣品進行黏度的測量,再加上基于式(7)計算的黏度參考值,得到的結果見表 1。

毛細管比線陣 CCD 的有效長度稍長,液體完全遮擋住 CCD 有效象元時 FPGA 是不會發送數據的,因此,流速曲線的末端實則代表了液體已經流過線陣 CCD 的有效象元。結合圖 9、圖 10、表 1 可以得出以下結論:
(1)從表中可以看出,黏度(低切、高切)最低的是 1 號紅墨水,黏度最高的是 5 號黃原膠溶液,30%Hct、40%Hct、50%Hct 血樣的黏度在 1 號和 5 號的范圍內依次增大,黏度關系對應到圖 9 中的流速曲線,可以看出樣品的流速隨著黏度的增大依次減小,不同紅細胞壓積的血液樣品的流速范圍處于 1 號和 5 號內,表明血液的黏度值存在著上下界限。
(2)黏度的大小與液體流速的相關性同樣可以映射到液體流過同樣位移所用的時間,高黏度樣品所用的時間應該大于低黏度樣品的耗時,這同樣可以從圖 9 中得到印證。
(3)從牛頓流體和非牛頓流體的特性來看,血液作為一種非牛頓流體,是剪切稀化的,也就是血液黏度是隨著切變率的增大而減小的,對應到流速與時間的關系上,從圖 9 可以看出,其曲線圖不是線性的,而是近似指數型。
(4)從表 1 中的黏度計算值來看,1 號紅墨水的黏度計算值為 1.99 mPa·s,雖然比 4.64 s–1、215 s–1切變率下的儀器測量值稍大,但在 2.15 s–1的切變率下,1 號紅墨水的儀器測量值為 2.22 mPa·s,可見依據流速計算的黏度值處于儀器測量值的正常范圍內。以 1 號紅墨水的黏度計算值為參考,2 號樣品到 5 號樣品在 0.021 m/s 時的黏度計算值都處于儀器實測高、低切值的范圍內,且 2 號樣品到 5 號樣品在同一流速 0.021 m/s 時的黏度值是依次增大的,即在同一切變率下的黏度值是依次增大的。可以看出,基于流速計算的不同樣品的黏度值滿足樣品本身的流變特性,且與儀器實測值在一定程度上是吻合的。
通過以上分析,可以看出本設計具有一定的合理性,達到了預計的目標。然而,流速曲線并不平滑,這與很多因素有關,比如光源的不穩定、毛細管內徑的不均勻、毛細管的水平程度、毛細管的輕微震動等;0 時刻時的流速并不為 0,這是由于毛細管進樣端一小段長度并未被計算在內。由于實驗室條件有限,以上因素完全可以用更加精密的器件和更加穩定的光源得到良好的改善。
4 討論與結論
本文基于 FPGA+線陣 CCD 的構架系統,提出了一種毛細管內血液樣品流速實時監測的方案。對于邊緣點的檢測,提出了一種自適應的中值算法,從前面分析可以看到,該邊緣點檢測算法不僅可以自適應漸變區小幅度的變化,而且對噪聲有著較好的抑制效果。
從系統整體來看,血液樣品流過全部象元的時間不會超過 5 s,加上樣品進樣和系統計算的時間,整個測量流程應在 15 s 以內。如果該方案進一步豐富成黏度的測量,與表 2 展示的內容對比,可以預見:它與傳統的血流變儀相比,具有系統簡單、測量耗時少、實時性強的特點,而且測量過程需要的血液樣品非常少,完全有可能實現在體測量的理想目標。根據血液流變學的泊肅葉定律和卡森模型[13]等理論,加上工業技術和更加精密的儀器補償,還可能在軟件平臺實現血液的黏度顯示,我們正在朝著這個方向努力。
