陸恩澤,林志松,朱濱△,邢軍芬
(1.上海應(yīng)用技術(shù)學(xué)院 電氣與電子工程學(xué)院,上海 201418;2.上海百傲科技股份有限公司 上海 201418)
生物芯片技術(shù)是近些年產(chǎn)生的一項(xiàng)生物高新技術(shù),它以載玻片,塑料片或者硅片為介質(zhì),上面固定了大量按特定方式和手段排列的核酸片段作為探針,探針代表了特定的基因信息[1-2]。其主要用于疾病的檢測預(yù)防,用藥指導(dǎo),食品安全檢測等領(lǐng)域[3]。目前市場上的生物芯片根據(jù)探針標(biāo)記方法可分為兩大類:熒光標(biāo)記生物芯片和顯色標(biāo)記生物芯片,由于顯色標(biāo)記芯片的原料易得、制作成本低,并且顯色芯片檢測設(shè)備價格低廉、穩(wěn)定性好,顯色生物芯片逐漸成為市場主流。生物芯片與生物靶標(biāo)進(jìn)行反應(yīng)后,可以獲得人體內(nèi)生物靶標(biāo)的各種信息并以圖像呈現(xiàn),生物芯片識讀儀對圖像進(jìn)行采集、分析、處理,并輸出人體內(nèi)生物靶標(biāo)的各種信息。
目前同類型顯色生物芯片識圖像讀儀配套軟件存在一些缺陷,比如上海百傲科技生產(chǎn)的第二代生物芯片識讀儀是將掃描得到的圖片通過USB數(shù)據(jù)線傳輸?shù)絇C端,再使用Visual C++編寫的圖像處理程序?qū)D片進(jìn)行分析,然而單獨(dú)使用Visual C++編寫圖像處理程序,代碼較為復(fù)雜。而且對于微陣列圖像信號點(diǎn)的識別和定位,還需以人工手動操作的方式進(jìn)行。這無疑降低了工作效率,一定程度上制約了顯色生物芯片產(chǎn)品的發(fā)展。而且現(xiàn)有的顯色生物芯片識讀儀軟件,缺乏對于原始數(shù)據(jù)的記錄保存。鑒于此,我們開發(fā)了一套新型顯色生物芯片識讀儀配套軟件。本軟件在Linux嵌入式系統(tǒng)下使用,配置了opencv的eclipse編寫圖像處理程序。opencv是開源發(fā)型的計(jì)算機(jī)視覺庫,支持Windows和Linux操作系統(tǒng),具有優(yōu)化代碼,統(tǒng)一結(jié)構(gòu)和強(qiáng)大的圖像和矩陣運(yùn)算能力,減少圖像處理算法難度[4]。
前期已自主研制了基于CCD的顯色生物芯片識讀儀,在此基礎(chǔ)上設(shè)計(jì)本研究所報道的識讀配套軟件,配套軟件由分析軟件和判型軟件構(gòu)成。芯片識讀儀通過CCD工業(yè)相機(jī)拍攝生物芯片生成原始圖像,圖像以BMP格式存儲。每張芯片貼有CODE128條形碼,條形碼代表芯片圖像的陣列信息,識讀儀掃描條碼信息傳遞給分析軟件,分析軟件對圖像進(jìn)行處理分析。本圖像分析軟件是在CCD相機(jī)中運(yùn)行的,直接在識讀儀內(nèi)部對生物芯片圖像進(jìn)行處理分析,最終輸出相關(guān)基因信號點(diǎn)的強(qiáng)度值。識讀儀與PC端通過有線以太網(wǎng)連接進(jìn)行數(shù)據(jù)傳遞。分析數(shù)據(jù)傳遞到PC端,根據(jù)生物芯片產(chǎn)品的類型以及獲得的信號值進(jìn)行基因判型。軟件的硬件拓?fù)浣Y(jié)構(gòu)見圖1。
圖1 軟件硬件拓?fù)浣Y(jié)構(gòu)圖
圖像分析軟件主要是實(shí)現(xiàn)基因信號點(diǎn)的精準(zhǔn)讀值[5]。從軟件功能上來講,本研究設(shè)計(jì)的圖像分析軟件思路是對原始圖像進(jìn)行預(yù)處理,從而完成信號點(diǎn)識別和坐標(biāo)信息提取,最終根據(jù)坐標(biāo)信息讀取原始圖像信號點(diǎn)真實(shí)值。軟件還應(yīng)具備信息存儲功能,以及實(shí)現(xiàn)軟件與PC端的通信。見圖2。
圖2 圖像分析軟件架構(gòu)
圖像預(yù)處理是為了實(shí)現(xiàn)信號點(diǎn)準(zhǔn)確定位。生物芯片是通過高精度的點(diǎn)樣儀制備的,因此,信號點(diǎn)的區(qū)域位置和機(jī)械尺寸是固定的。本軟件先對原始圖像(圖3)裁剪取出成像ROI區(qū)域,ROI區(qū)域的提取減少了圖像處理工作量。接著使用亮度歸一化方法增強(qiáng)信號點(diǎn)與背景的對比度,有效提高了輪廓識別效果。亮度進(jìn)行歸一化采用直方圖均衡法,本研究使用了opencv中的cvEqualizeHist函數(shù)用于此操作。接著對歸一化后的圖像進(jìn)行反色二值化,由于生物芯片圖像的每個信號點(diǎn)強(qiáng)度值不一,且受背景光源的影響導(dǎo)致背景不均勻,在此采用局部自適應(yīng)閾值法對反色后的圖像進(jìn)行二值化,閾值由局部鄰域塊高斯加權(quán)得出。根據(jù)本生物芯片圖像信號點(diǎn)大小,通過反復(fù)實(shí)驗(yàn),設(shè)定局部鄰域塊大小為15。
圖3 顯色生物芯片圖像
生物芯片圖像的噪聲主要來源于芯片制備過程中灰塵的污染,雜交的實(shí)驗(yàn)污染,待檢測樣品中核酸,蛋白質(zhì),細(xì)胞或組織碎片的干擾,以及識讀儀使用過程中的污染[6]。圖像的噪聲影響信號點(diǎn)的識別和定位,因此圖像去噪至關(guān)重要。根據(jù)顯色生物芯片圖像噪聲特點(diǎn),本軟件使用數(shù)學(xué)形態(tài)學(xué)運(yùn)算[7]對圖像進(jìn)行去噪,運(yùn)算方法為開運(yùn)算,內(nèi)核的形狀為圓形。圖4為對圖3預(yù)處理后的效果圖。
圖4 預(yù)處理后二值化圖像
本研究在圖像預(yù)處理中使用亮度歸一化,增強(qiáng)了前后景對比度,因此,信號點(diǎn)識別中主要使用輪廓搜索的方法。使用Canny邊緣檢測算法進(jìn)行邊緣檢測,同時使用opencv提供的cvFindContours()函數(shù)搜尋信號點(diǎn)輪廓。形態(tài)學(xué)去噪并不能完全消除噪聲的影響,圖4中依然會存在噪點(diǎn)。軟件在輪廓搜索時勢必會取到灰塵輪廓,導(dǎo)致對信號點(diǎn)的坐標(biāo)定位錯誤。通過大量生物芯片圖像分析可見,灰塵輪廓遠(yuǎn)小于信號點(diǎn)輪廓,且噪點(diǎn)所處的位置不在陣列位置上(見圖4)。本軟件搭建了配置文件處理模塊,文件中設(shè)置了信號點(diǎn)識別與信號點(diǎn)取值所需的配置參數(shù)。軟件對所有輪廓進(jìn)行搜索排序,篩選出輪廓大小符合設(shè)定閾值的信號點(diǎn)。對于每個輪廓中心位置,使用opencv中的cvBoundingRect()計(jì)算出該輪廓的外接矩形記為rect,該矩形的位置和長寬分別為rect.x,rect.y,rect.width和rect.height,則輪廓中心坐標(biāo)公式為(rect.x+rect.width/2, rect.y-rect.height/2)。
本軟件運(yùn)行的識讀儀在掃描過程中自動讀取芯片條碼信息,其代表芯片圖像的陣列信息。本軟件根據(jù)條碼信息實(shí)現(xiàn)信號點(diǎn)自動定位代替人工輸入陣列信息的步驟,有效避免自動定位的錯誤。見圖3,本軟件處理的所有生物芯片圖像均存在最左邊3列標(biāo)志列,而其他列探針區(qū)域信號點(diǎn)不一定顯色,而熒光生物芯片探針區(qū)域均有強(qiáng)度值不一的熒光點(diǎn)。在本設(shè)計(jì)中,軟件先確定三列質(zhì)控點(diǎn)位置,再定位其他信號點(diǎn)。若采用文獻(xiàn)[8]所示的基于圖像投影定位方法,當(dāng)存在大面積未消除背景噪聲時會定位失敗。而本軟件算法會對找到的每個點(diǎn)輪廓遍歷搜索鄰居點(diǎn),根據(jù)點(diǎn)的坐標(biāo)值判斷是否為某種間距的點(diǎn)陣,再找點(diǎn)陣中的最左列和最上行,最后確定標(biāo)志列區(qū)域位置,再根據(jù)配置文件預(yù)設(shè)行列間距生成虛擬定位網(wǎng)格。對其他確定位置點(diǎn)陣各列各行點(diǎn)的分別計(jì)算橫縱坐標(biāo)值和虛擬定位網(wǎng)格線坐標(biāo)值的差值,按誤差最小來擬合某行和某列的垂直線和水平直線,實(shí)現(xiàn)對虛擬網(wǎng)格線坐標(biāo)的修正。按照此算法實(shí)現(xiàn)的信號點(diǎn)識別和定位效果見圖5。
圖5 信號點(diǎn)識別和定位結(jié)果
本軟件對信號點(diǎn)區(qū)域透光率值從大到小排序,根據(jù)配置文件設(shè)定的正常透光率范圍閾值參數(shù),剔除超過正常透光范圍的像素點(diǎn),計(jì)算其余像素點(diǎn)透光率的平均值,作為該信號點(diǎn)區(qū)域的透光率,從而能排除灰塵噪點(diǎn)干擾準(zhǔn)確取值。在選取背景值上,軟件對框定背景范圍內(nèi)所有像素點(diǎn)的透光率值,將其從小到大排序,取透光率最大的5%的像素點(diǎn)平均值做為全局背景值。再使用同樣方法對每個信號點(diǎn)所在大小為15像素局部塊區(qū)域計(jì)算得出局部背景值。比較局部背景值與全局背景值的差異,當(dāng)受到噪聲影響差值大于閾值時,選擇全局背景值進(jìn)行計(jì)算。實(shí)際輸出信號值計(jì)算公式如下:
式中v代表輸出信號值,f為前景信號值,bj為局部背景值,bq為全局背景值,th為本軟件設(shè)定的差值閾值。
數(shù)據(jù)輸出模塊將所有的信號點(diǎn)位置和取值信息輸出到Linux系統(tǒng)下搭建的samba服務(wù)器的共享文件夾中,同時輸出原始圖像,格式為BMP。PC端軟件根據(jù)識讀儀的IP地址通過網(wǎng)上鄰居獲取相關(guān)數(shù)據(jù)文件。
配置文件使用LUA腳本,其中定義了信號點(diǎn)定位與取值所需的相關(guān)配置參數(shù),本軟件在進(jìn)行一系列圖像處理分析過程中均會調(diào)用此配置文件。Lua腳本可以很容易的被C/C++ 代碼調(diào)用,也可以反過來調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中可以被廣泛應(yīng)用。不僅作為擴(kuò)展腳本,也可以作為普通的配置文件,代替XML,ini等文件格式,并且更容易理解和維護(hù)。
設(shè)備讀取的信號值最終傳送到PC端基因判型軟件,基因判型軟件根據(jù)芯片的類型,將信號值填入相應(yīng)內(nèi)嵌公式的excel模板表格,自動計(jì)算各探針點(diǎn)信號比值,通過與實(shí)驗(yàn)統(tǒng)計(jì)確定的純合/雜合基因判定閾值[9]進(jìn)行比較分析,判定所檢測各基因類型并自動以表格形式輸出結(jié)果。
本圖像軟件使用ANSI C語言開發(fā),使用GCC編譯器,程序開發(fā)IDE工具為Eclipse,開發(fā)環(huán)境為Linux。使用C語言開發(fā)能保證在大數(shù)據(jù)量的圖像處理工作中,保持比較高的運(yùn)行效率。本軟件在圖像處理過程中還調(diào)用了opencv庫函數(shù)?;蚺行蛙浖赪indows環(huán)境下使用Visual C++開發(fā)。
在本實(shí)驗(yàn)中,分別用批準(zhǔn)上市的BE-2.0生物芯片識讀儀(滬食藥監(jiān)械(準(zhǔn))字2012第2400062號)軟件和本文設(shè)計(jì)的生物芯片識讀儀軟件對來自臨床實(shí)驗(yàn)室的三種(CYP2C19、MTHFR、ALDH2)顯色型基因芯片產(chǎn)品各200張進(jìn)行檢測,將檢測結(jié)果按照kappa檢驗(yàn)法[10]分析。分別得到4組kappa系數(shù),以此評價軟件性能的一致性,結(jié)果如下:
(1)CYP2C19檢測結(jié)果
對于636位點(diǎn),兩者均檢出的有195例,兩者檢測結(jié)果100%相同,其中GG型178例,AG型17例,AA型0例,kappa系數(shù)為1。對于681位點(diǎn)[9],兩者均檢出的有197例,兩者檢測結(jié)果100%相同,其中GG型89例,AG型92例,AA型16例,kappa系數(shù)為1。
(2)MTHFR檢測結(jié)果
兩者均檢出的有188例,兩者檢測結(jié)果100%相同,其中CC型49例,CT型89例,TT型50例,kappa系數(shù)為1。
(3)ALDH2檢測結(jié)果
兩者均檢出的有190例,兩者檢測結(jié)果100%相同,其中Glu504Glu型129例,Glu504Lys型55例,TT型6例,kappa系數(shù)為1。
表1是二者檢出率的比較。本研究設(shè)計(jì)的軟件檢出率略優(yōu)于已上市產(chǎn)品BE-2.0生物芯片識讀儀軟件。判型的準(zhǔn)確性從側(cè)面論證本軟件的信號點(diǎn)識別定位以及讀值準(zhǔn)確性,因此,本研究設(shè)計(jì)的軟件是可靠的。
表1 檢出率對比
本軟件系統(tǒng)分為嵌入式圖像分析軟件和PC端判型軟件,嵌入式軟件通過讀取條碼信息實(shí)現(xiàn)了在識讀儀掃描過程中自動輸出相關(guān)數(shù)據(jù),PC端軟件通過調(diào)取掃描數(shù)據(jù)直接輸出檢測結(jié)果。這一配套軟件數(shù)據(jù)輸出準(zhǔn)確,使用方便,分析效率高,可在以玻璃材質(zhì)為載體的顯色生物芯片識讀儀上推廣使用,并為顯色生物芯片圖像分析軟件設(shè)計(jì)提供思路。