袁彬峰,汪之又,黃彩霞,羅 宇
(1.國防科技大學(xué) 計(jì)算機(jī)學(xué)院,湖南 長沙 410073;2.長沙學(xué)院 電子信息與電氣工程學(xué)院,湖南 長沙 410022;3.長沙學(xué)院 計(jì)算機(jī)工程與應(yīng)用數(shù)學(xué)學(xué)院,湖南 長沙 410022)
表面等離子共振成像(surface plasmon resonance imaging,SPRI)是基于表面等離子共振(surface plasmon resonance,SPR)的光學(xué)成像技術(shù),可基于生物芯片表面折射率的變化測定待測溶液中特定物質(zhì)的濃度[1]。其測定原理可以被描述為:在SPRI實(shí)驗(yàn)中放置在生物芯片表面的蛋白分子與待測溶液蛋白分子之間的結(jié)合會引起生物芯片表面折射率的變化[2]并被相機(jī)拍攝記錄。因此判斷待測溶液中是否含有某種物質(zhì),只需要查找相機(jī)記錄的SPRI視頻中是否存在亮度變化區(qū)域,并定位該區(qū)域?qū)?yīng)放置的蛋白分子。
由于表面等離子共振成像(SPRI)檢測技術(shù)具有無需標(biāo)記、靈敏度高、專屬性強(qiáng)、消耗樣品少的特點(diǎn)[3],目前已廣泛用于食品安全[4]、環(huán)境監(jiān)測[5]、藥物研究[6]等領(lǐng)域。當(dāng)前SPRI技術(shù)在結(jié)合微點(diǎn)陣技術(shù)后,可同時(shí)、原位、實(shí)時(shí)觀測成千上萬個(gè)無標(biāo)記樣點(diǎn)[1]。若利用傳統(tǒng)的人工識別蛋白點(diǎn)方法工作量大且準(zhǔn)確度低。目前已有成熟的商業(yè)化軟件用于半自動定位生物芯片上的蛋白點(diǎn),例如Array Pro,GenePix Pro,MicroVigene,Dapple and Mapix等等[7]。這些商業(yè)軟件中通常用橢圓檢測算法直接提取SPRI視頻圖像中的蛋白點(diǎn)[8],或者在人工干預(yù)下先將SPRI視頻圖像按網(wǎng)格劃分,然后在每個(gè)網(wǎng)格內(nèi)檢測蛋白點(diǎn)[9]。這些商業(yè)化軟件工具使用方便但對輸入數(shù)據(jù)的格式和使用范圍有嚴(yán)格要求,且不能全自動識別與定位蛋白點(diǎn)。商業(yè)軟件中使用的定位算法處理步驟繁瑣,時(shí)間開銷大,不支持在性能受限的嵌入式設(shè)備上運(yùn)行。
在SPRI實(shí)驗(yàn)中發(fā)現(xiàn)從生物芯片制備工具中導(dǎo)出的陣列打印效果圖為生物芯片的掃描圖,并且利用CCD相機(jī)拍攝的SPRI視頻是對生物芯片上蛋白點(diǎn)的放置區(qū)域的記錄,因此陣列打印效果圖中放置蛋白陣列區(qū)域與CCD相機(jī)拍攝的SPRI視頻是對生物芯片上放置蛋白點(diǎn)區(qū)域的不同成像,陣列打印效果圖與SPRI視頻每幀圖像中的蛋白點(diǎn)之間可能存在空間映射關(guān)系。結(jié)合重映射的思想,該文提出了基于重映射的自動找點(diǎn)方法。該方法需要先定位陣列打印效果圖上的蛋白點(diǎn),然后將打印效果圖中蛋白點(diǎn)的坐標(biāo)映射為SPRI視頻中目標(biāo)蛋白點(diǎn)的坐標(biāo)。由于陣列打印效果圖成像清晰,相較于成像圖噪音干擾較少,且只需通過一次映射即可得到目標(biāo)蛋白點(diǎn)坐標(biāo)。因此基于重映射的SPRI視頻自動找點(diǎn)算法運(yùn)行時(shí)間短,且無需人工干預(yù),支持在嵌入式設(shè)備上運(yùn)行。在測試實(shí)驗(yàn)中,時(shí)長為50分鐘,幀率為1幀每秒,排列大小為48×48的SPRI視頻需要214秒定位并提取每個(gè)蛋白點(diǎn)區(qū)域的灰度值。
生物芯片的制備過程可以被簡述為:將與待測物質(zhì)發(fā)生反應(yīng)的蛋白溶液從試劑盒中吸取,并按陣列形式固定在特定金屬芯片上[10-11]。完成生物芯片的制備后對生物芯片進(jìn)行掃描,可得到如圖1(a)所示的芯片的陣列打印效果圖。在SPRI實(shí)驗(yàn)前需要將生物芯片固定在流通池的下方,并將生物芯片上的蛋白陣列區(qū)域放置在CCD相機(jī)的成像區(qū)域內(nèi),圖1(a)中蛋白陣列外圍正方形黑框代表成像區(qū)域。實(shí)驗(yàn)開始后利用單色光源照射生物芯片,激發(fā)表面等離子共振現(xiàn)象并將待測溶液通入流通池。在激發(fā)表面等離子共振現(xiàn)象后,若通入溶液與芯片上放置蛋白分子發(fā)生反應(yīng)則會引起生物芯片折射率變化并被CCD相機(jī)記錄。圖1(a)中的黑色正方形成像區(qū)域在CCD記錄成像后會被拉伸、壓縮為圖1(b)所示的矩形圖像。
圖1 實(shí)現(xiàn)原理
在SPRI實(shí)驗(yàn)中,由CCD相機(jī)拍攝圖像(圖1(b))通常為灰度圖且含有大量噪音。圖1(b)中噪聲主要分為兩種:空間噪聲和時(shí)間噪聲??臻g噪聲是指由于光源分布不均勻造成的成像面上光強(qiáng)分布不均勻的情況。成像視頻常常出現(xiàn)中間亮高,四周亮度低的狀況[12]。時(shí)間噪聲包括高頻隨機(jī)噪聲和長期基線漂移。隨機(jī)噪聲主要是由于光源波動、光電探測器熱燥引起,基線漂移通常由環(huán)境溫度變化,光源波動和探測器熱噪聲等引起[12]。以上噪音都會影響基于圖1(b)進(jìn)行自動定位算法的準(zhǔn)確度,導(dǎo)致自動定位算法的準(zhǔn)確度與CCD相機(jī)的成像質(zhì)量相關(guān),當(dāng)成像質(zhì)量較低時(shí)定位蛋白點(diǎn)的準(zhǔn)確度降低。
通過在多次SPRI實(shí)驗(yàn)中對比陣列打印效果圖與成像視頻中蛋白點(diǎn)的成像后發(fā)現(xiàn),生物芯片上同一個(gè)蛋白點(diǎn)在不同成像圖上的圓心坐標(biāo),寬和高之間存在映射關(guān)系。具體來說,成像視頻中蛋白點(diǎn)相對于打印效果圖中蛋白點(diǎn)的寬度會被拉伸,高度會被壓縮,圓心坐標(biāo)之間存在線性變換。具體的映射參數(shù)取決于當(dāng)前CCD相機(jī)的拍攝參數(shù)。
該文提出的自動找點(diǎn)算法使用C++在Ubuntu上利用Qtcreator開發(fā),開發(fā)過程中使用opencv3.6依賴庫[13-15],用于截取圖像、邊緣檢測等圖像處理操作。為驗(yàn)證自動定位算法的性能,在樹莓派4b(Cortex-A72 1.5 GHz處理器,4 GB)基于Debian的Linux操作系統(tǒng)Raspbian lite(2019-07-10)上運(yùn)行測試。
該文提出了基于陣列打印效果圖的自動找點(diǎn)算法,該算法不直接對拍攝視頻(圖1(b))進(jìn)行處理,而是先對陣列打印效果圖進(jìn)行識別,然后將在效果圖上的蛋白點(diǎn)坐標(biāo)映射為成像視頻中蛋白點(diǎn)的坐標(biāo)?;谝陨纤悸罚谥赜成涞淖詣幼R別方法的處理過程可分為六步,處理流程如圖2所示。第一步截取陣列打印效果圖中的成像區(qū)域。第二步對截取的圖像進(jìn)行邊緣檢測。第三步將上一步中提取的邊緣擬合為橢圓形狀并過濾噪音。第四步將第三步中擬合的橢圓組織為橢圓陣列。第五步需要輸入CCD成像圖,并將上一步中橢圓坐標(biāo)映射為CCD成像圖中目標(biāo)蛋白點(diǎn)坐標(biāo)。第六步修正坐標(biāo)映射后的橢圓點(diǎn)坐標(biāo),使映射后的橢圓與CCD圖像中的蛋白點(diǎn)重合。該方法中需要輸入的陣列打印效果圖與CCD成像圖分別對應(yīng)圖1(a)與圖1(b)。
圖2 算法處理流程
在這一步中需要截取陣列打印效果圖中的視頻成像區(qū)域即圖1(a)中的黑色邊框區(qū)域。由于陣列打印效果圖是對生物芯片的掃描,且在制備生物芯片時(shí)必須確定成像區(qū)域的起始點(diǎn)與截止點(diǎn)坐標(biāo),因此可以使用成像區(qū)域的起始點(diǎn)與截止點(diǎn)坐標(biāo)截取陣列打印效果圖中的視頻成像陣列區(qū)域。
在這一步中需要對陣列打印效果圖的截圖進(jìn)行邊緣檢測,然后將提取的蛋白點(diǎn)邊緣擬合為橢圓形狀。常規(guī)邊緣檢測可以使用邊緣算子或其他方法[16-17]。但對于邊緣不清晰的蛋白點(diǎn)成像,可以使用改進(jìn)的Canny邊緣算子進(jìn)行邊緣檢測[18-20]。最后可使用opencv庫中的fitelipse方法將之前檢測的蛋白點(diǎn)邊緣擬合為橢圓。
陣列識別的目標(biāo)是輸出橢圓矩陣,矩陣中每一個(gè)元素代表一個(gè)橢圓,記錄了對應(yīng)橢圓的大小、圓心坐標(biāo)等信息。為達(dá)到該目標(biāo),需要先猜測陣列大小,然后修正上一步中擬合的橢圓,去除非目標(biāo)橢圓,并將目標(biāo)橢圓按陣列方式組織。最后檢查當(dāng)前陣列是否與蛋白點(diǎn)的排列大小相同,若不相同則需要通過陣列修正操作補(bǔ)全缺失橢圓。
2.3.1 構(gòu)建陣列與過濾
為構(gòu)建陣列,首先需要將上一步中擬合橢圓點(diǎn)按圓心縱坐標(biāo)分組。可依據(jù)兩個(gè)橢圓點(diǎn)圓心的縱坐標(biāo)之間的差值來判斷兩個(gè)橢圓是否處于同一行。若差值接近于0,則說明這兩個(gè)橢圓點(diǎn)位于同一行?;谝陨纤悸房蓪⑸弦徊街袛M合的橢圓點(diǎn)按行分組,最后分組的數(shù)量即為陣列的行數(shù)。
完成按行分組后,則需要對每組內(nèi)的橢圓進(jìn)行初步過濾。初步過濾中需要過濾的錯(cuò)誤橢圓可以被分為兩類:第一類是擬合陣列打印圖中小黑點(diǎn)噪音得到的橢圓,這類橢圓面積遠(yuǎn)小于正常橢圓且接近于0,可以通過設(shè)置面積的閾值進(jìn)行過濾。第二類是蛋白點(diǎn)邊緣不清晰導(dǎo)致擬合一個(gè)蛋白點(diǎn)的邊緣得到的多個(gè)橢圓。為過濾這類橢圓,需要對組內(nèi)橢圓按圓心的橫坐標(biāo)排序。若兩個(gè)橢圓圓心橫坐標(biāo)相近,則可判定這兩個(gè)橢圓為同一個(gè)蛋白點(diǎn)的不同擬合結(jié)果,則只需要保留其中一個(gè)。
完成以上構(gòu)建操作后可以得到橢圓陣列,陣列中每個(gè)元素表示一個(gè)橢圓。但該陣列的列數(shù)還未確定,每行中的橢圓數(shù)量可能不一致。為求橢圓陣列的列數(shù)需要統(tǒng)計(jì)陣列中每行的橢圓數(shù)量并排序,選擇重復(fù)次數(shù)最多的數(shù)量作為當(dāng)前陣列的列數(shù)。
橢圓陣列構(gòu)建完成后,還需要對陣列內(nèi)橢圓進(jìn)行第二次過濾。第二次過濾的目標(biāo)是去除擬合錯(cuò)誤導(dǎo)致的偏大橢圓。這類橢圓是因?yàn)樵跀M合時(shí)錯(cuò)誤將多個(gè)蛋白點(diǎn)擬合為一個(gè)橢圓點(diǎn)造成的,對于這類橢圓點(diǎn)可以通過設(shè)立橢圓的寬度的上限[imageWidth/cols]和高度上限[imageHeight/rows]進(jìn)行過濾。imageWidth與imageHeight為CCD視頻圖像的寬度與高度,rows與cols為之前步驟中確立的橢圓陣列的行數(shù)與列數(shù)。
2.3.2 陣列修正
構(gòu)建橢圓陣列后需要檢查當(dāng)前陣列大小與2.3.1節(jié)中計(jì)算得到的陣列模式是否一致。若發(fā)現(xiàn)某行缺失橢圓,則可以通過橢圓圓心之間的距離差定位缺失橢圓點(diǎn)編號。在正常情況下,各個(gè)橢圓圓心之間的距離是固定的,但會在某個(gè)小范圍內(nèi)波動。如果兩個(gè)橢圓點(diǎn)中心之間的差距過大,則可以判定兩個(gè)橢圓點(diǎn)之間可能存在遺漏橢圓點(diǎn)。如圖3所示,ΔX5與ΔX8明顯大于ΔX1,ΔX2等正常間隔之間的距離。由此可以判斷5號與6號橢圓之間,8號橢圓與9號橢圓之間存在缺失橢圓。
圖3 補(bǔ)全橢圓
定位缺失橢圓點(diǎn)的編號后,可以依據(jù)缺失橢圓點(diǎn)左右兩側(cè)的橢圓點(diǎn)補(bǔ)全缺失橢圓點(diǎn)的大小和圓心坐標(biāo)。如圖3所示,5號橢圓與6號橢圓之間缺失橢圓點(diǎn)A的寬度等于5號橢圓點(diǎn)與6號橢圓寬度的平均值,同理可計(jì)算缺失橢圓點(diǎn)A的高度和圓心Y軸坐標(biāo)。缺失橢圓點(diǎn)A圓心的X軸坐標(biāo)等于5號橢圓圓心的X軸坐標(biāo)加上ΔX1,ΔX2,ΔX3,ΔX4的平均值。補(bǔ)全A號橢圓后,按照之前定義的步驟依次補(bǔ)全B和C號橢圓。
其中,offsetx、offsety已在圖1中標(biāo)注,表示蛋白陣列中左上角蛋白點(diǎn)距離起始點(diǎn)在橫軸和縱軸上的差值。ratex、ratey表示CCD成像圖相對于打印效果圖在橫軸和縱軸上的壓縮比。以上參數(shù)的取值和CCD相機(jī)參數(shù)相關(guān),在SPRI實(shí)驗(yàn)中保證拍攝參數(shù)不變則以上參數(shù)不變。
映射后的橢圓點(diǎn)可能與CCD成像圖中的蛋白點(diǎn)輪廓不能完全吻合。為此需要對映射后的橢圓點(diǎn)進(jìn)行自動校正。在實(shí)驗(yàn)中CCD相機(jī)采集灰度圖像,因此在成像圖中目標(biāo)蛋白點(diǎn)呈現(xiàn)白色。在理想情況下,映射后的橢圓點(diǎn)與蛋白點(diǎn)輪廓重合,橢圓點(diǎn)所在區(qū)域內(nèi)為白色,橢圓點(diǎn)的重心與圓心重合。當(dāng)映射效果不理想時(shí),重心與圓心之間的差值代表應(yīng)該修正的方向。此時(shí)用重心替換橢圓點(diǎn)圓心便可得到修正后的橢圓點(diǎn)。橢圓點(diǎn)的重心計(jì)算公式如下:
其中,xc與yc表示重心的橫坐標(biāo)與縱坐標(biāo),M00表示圖像的0階矩,M10與M01表示圖像的一階矩,其計(jì)算方式如下所示:
其中,V(i,j)表示圖像V像素點(diǎn)(i,j)處的灰度值。
在自動校準(zhǔn)后,可以將灰度圖轉(zhuǎn)換為二值化圖,然后使用橢圓點(diǎn)區(qū)域內(nèi)白色像素點(diǎn)數(shù)量與該區(qū)域內(nèi)像素點(diǎn)數(shù)量的比值衡量橢圓點(diǎn)的定位準(zhǔn)確度。在理想情況下白色像素點(diǎn)數(shù)量應(yīng)該約等于該區(qū)域內(nèi)像素點(diǎn)數(shù)量,比值接近于1說明定位準(zhǔn)確度高,比值接近于0說明當(dāng)前準(zhǔn)確度低。
通過實(shí)驗(yàn)驗(yàn)證,使用文中的自動找點(diǎn)方法可以準(zhǔn)確定位視頻成像圖中的每個(gè)蛋白點(diǎn)。圖4左側(cè)是對48×48排列模式的成像視頻使用本算法識別后的局部截圖。圖中白圈代表預(yù)測的蛋白點(diǎn)位置,橢圓形白斑為蛋白點(diǎn)的成像。對比后可以發(fā)現(xiàn)白圈基本能圈中每個(gè)蛋白點(diǎn)。
在SPRI實(shí)驗(yàn)中,由于相機(jī)的曝光與聚焦設(shè)置會導(dǎo)致CCD相機(jī)在實(shí)驗(yàn)開始的一段時(shí)間內(nèi)拍攝圖像接近于空白。此時(shí)若使用傳統(tǒng)的自動定位方法將不能定位蛋白點(diǎn)。但由于本方法是對打印效果圖進(jìn)行分析,然后將分析結(jié)果映射變換到CCD成像圖中。通過這種模型,只要保證映射關(guān)系準(zhǔn)確,可以消除視頻圖像質(zhì)量低、雜音多的影響。例如在圖4右圖中成像圖亮度太高使蛋白點(diǎn)輪廓不清晰的前提下,也能定位每個(gè)蛋白點(diǎn)的位置。
圖4 找點(diǎn)結(jié)果
為驗(yàn)證自動找點(diǎn)算法的性能,該文提出的自動找點(diǎn)算法在樹莓派4b的硬件設(shè)備上運(yùn)行測試。對于時(shí)長為50分鐘,幀率為1幀每秒,排列大小為48×48的SPRI視頻,需要花費(fèi)214秒定位所有蛋白點(diǎn)的位置并提取每幀圖像中每個(gè)蛋白點(diǎn)區(qū)域的平均灰度值。
使用自動找點(diǎn)算法定位的蛋白點(diǎn)為目標(biāo)蛋白點(diǎn)的成像。圖5是利用自動找點(diǎn)算法識別的一個(gè)蛋白點(diǎn)在SPRI實(shí)驗(yàn)中反應(yīng)強(qiáng)度的變化曲線。圖中橫軸是時(shí)間編號(圖像幀的編號),縱軸是該蛋白點(diǎn)的反應(yīng)強(qiáng)度(蛋白點(diǎn)成像區(qū)域內(nèi)的平均值灰度值減去本次實(shí)驗(yàn)的空白信號)。在一次完整SPRI實(shí)驗(yàn)中會依次通入清洗液,生理鹽水,甘油,清洗液,生理鹽水,測試溶液。不同的溶液會導(dǎo)致該蛋白點(diǎn)的放置區(qū)域內(nèi)出現(xiàn)不同的反應(yīng)強(qiáng)度。通入清洗液時(shí)會破壞蛋白質(zhì)分子之間的結(jié)合導(dǎo)致蛋白點(diǎn)放置區(qū)域內(nèi)的折射率降低,反應(yīng)強(qiáng)度降低。生理鹽水是緩沖劑,通入生理鹽水時(shí)當(dāng)前蛋白點(diǎn)的反應(yīng)強(qiáng)度代表本次實(shí)驗(yàn)的空白信號。通入甘油時(shí)蛋白點(diǎn)的折射率達(dá)到最高,通入甘油用于測試和校準(zhǔn)實(shí)驗(yàn)。在實(shí)驗(yàn)最后會通入樣品溶液,若發(fā)生蛋白分子間的結(jié)合反應(yīng)則會導(dǎo)致折射率明顯提高,使用此時(shí)的強(qiáng)度值與通入生理鹽水時(shí)強(qiáng)度值之間的差值對照查表,可得樣品溶液中與該蛋白點(diǎn)發(fā)生反應(yīng)物質(zhì)的濃度含量。最終該蛋白點(diǎn)在一輪實(shí)驗(yàn)中的強(qiáng)度值變化如圖5所示。
圖5 局部強(qiáng)度變化曲線
該文對如何定位SPRI視頻中的蛋白點(diǎn)提出了一種新的解決思路。該算法不直接對含有較多噪音的SPRI視頻進(jìn)行分析,而是通過生物芯片的打印效果圖間接提取生物蛋白點(diǎn)坐標(biāo)。因此能適應(yīng)各種蛋白點(diǎn)的排列模式,適用于噪音較多并且模式固定的SPRI視頻分析,并且支持移植到嵌入式設(shè)備內(nèi)運(yùn)行。但是該算法的時(shí)間開銷存在優(yōu)化空間,這也是今后的研究方向。