Wolfram 語言與計算型顯微鏡
█ 本文譯自 Wolfram 圖像處理部門經理 Shadi Ashnai 和演算法 R&D 顧問 Markus van Almsick,2017年9月29日的 Wolfram 博客文章:Computational Microscopy with the Wolfram Language
顯微鏡是四百年前發明的。但是今天,正如在許多其他領域一樣,與計算相關的顯微鏡正在掀起一場革命。我們一直在努力使Wolfram 語言成為計算顯微鏡這一新興領域的最終平台。
首先是從光學顯微鏡、X 射線顯微鏡,透射電子顯微鏡(TEM)、共焦激光掃描顯微鏡(CLSM)、雙光子激發或掃描電子顯微鏡(SEM)等等各種裝置得到圖像。然後進行處理來提升圖像品質,重建對象並進行測量、檢測、識別和分類。在上個月的顯微鏡和微量分析會議(http://microscopy.org/MandM/2017)上,我們使用蔡司(Zeiss)顯微鏡和ToupTek 數碼相機,展示了這一流程的各種示例。
圖像採集
使用Import將標準圖像文件格式轉換為Wolfram 語言(通過BioFormatsLink(https://github.com/WolframResearch/BioFormatsLink)可以訪問顯微鏡生成的更罕見的文件格式)。更酷的是,您還可以連接到顯微鏡,讓圖像直接進入CurrentImage。
圖像導入後,就可以使用Wolfram 語言的各種功能大顯身手了。
亮度均衡
通常,顯微鏡獲取的圖像表現出不均勻的照明。不均勻照明問題可以通過根據已知平面場調整圖像背景或通過對可見背景的照明進行建模來解決。BrightnessEqualize正可以達到此目的。
這是顯微鏡下糖晶體的原始圖像:
這是一個純粹的圖像調整:
這裡是使用經驗平面場亮度均衡的結果:
如果平面場圖像不可用,則構造一個。可以分割背景並用二階多項式對其照明進行建模:
顏色反褶積
顏色反褶積是將染色樣品的圖像轉換成染料吸收分布的技術。
這是使用蘇木精 C19 和 DAB(3,3-二氨基聯苯胺)的染色樣本:
每種染料的相應 RGB 顏色為:
獲得從染料濃度到 RGB 顏色的轉換矩陣:
計算從顏色到染料濃度的逆變換:
由於顏色吸收與染料濃度呈指數比例,因此可在色度強度對數範圍內進行實際的去混合。
顏色反褶積為蘇木精和 DAB 染料濃度:
染料濃度的假著色:
圖像查看和手動測量
查看大圖像,請使用DynamicImage,它是一個高效的圖像面板,用於縮放、平移、拖動和滾動核心內外的圖像:
GIF/1K
以下代碼是實現圓形對象半徑測量的自定義交互界面所需要的。您可以通過Alt+拖動或Command+拖動來移動疊加圓的位置和半徑。圓的半徑顯示在左上角:
GIF/1K
聚焦堆疊
為了克服顯微鏡的淺景深,您可以收集一個焦棧,即一個圖像堆棧,其中每個圖像具有不同的焦距。可以通過選擇性地取出堆棧中每個圖像的焦點區域將焦棧壓縮成單個圖像 。imageFocusCombine正具有這一功能。
這是ImageFocusCombine的重新實現以提取深度,並更進一步從焦棧重構 3D 模型。
將拉普拉斯濾波器的範數作為像素對焦與否的指示器。拉普拉斯濾波器拾取高傅立葉係數,如果圖像失焦,則首先被抑制:
然後對於每個像素,選擇展現最大拉普拉斯濾波器範數的層:
將所得到的二進位體積與焦棧相乘,並將所有圖層相加。這樣,您僅收集那些聚焦的像素值:
二進位體積 depthVol 包含每個像素的深度信息。將其轉換為二維深度圖:
深度信息相當嘈雜,並且對於所有像素位置來說並不能同等可靠。如果圖像區域處於焦點,則邊緣僅提供清晰的指示。因此,使用 focusResponse 總和作為深度圖的置信度指標:
考慮置信度大於 0.05 的的深度指標:
可以使用MedianFilter對深度值進行正則化,並通過FillingTransform關閉間隙:
使用對焦圖像作為其紋理,顯示 3D 深度圖:
機器學習示例:花粉分類
Wolfram 語言具有強大的機器學習功能,可以在顯微鏡下實現各種檢測、識別或分類應用。
這裡是一個六種花粉類型的小型數據集,我們想要對其進行分類:
通常情況下,需要一個巨大的數據集從頭開始訓練神經網路。然而,使用其他預訓練模型,我們可以使用這樣一個小數據集進行分類。
通過NetModel得到在ImageNet上訓練的 VGG-16 網路:
刪除在這個網路中執行特定分類的最後幾層。這將留下一個生成特徵向量的網路:
接下來,計算花粉數據集中所有圖像的特徵向量:
特徵向量處於 4k 維空間中。為了快速驗證特徵向量是否適合對數據進行分類,將特徵空間降低到三維,看起來花粉圖像按照類型分組效果不錯:
為了增加訓練集的大小並使其旋轉-反演不變,生成額外的數據:
使用該訓練數據,創建一個分類器:
在新的數據範例上測試分類器:
深度神經網路示例:檢測有絲分裂
先前的分類器依賴於一個預訓練的神經網路。如果有足夠的數據,可以從頭開始訓練一個神經網路,一個自動學習相關特徵並同時作為後續分類器的網路。
作為示例,我們來談談檢測細胞發生有絲分裂的情況。這是一個簡單的卷積神經網路,可以做到這一點:
訓練和測試的數據已從Tumor Proliferation Assessment Challenge 2016(http://tupac.tue-image.nl/) 中提取。我們將數據預處理成97*97圖像,環繞在所討論的實際細胞周圍。
使用大約四分之三的數據進行訓練,其餘用於測試:
再次,為了增加訓練集,執行圖像鏡像和旋轉:
計算分類器指標並驗證神經網路的有效性:
考慮到任務的挑戰性,錯誤率小於10%就可與病理學家相媲美了。
結束語
計算顯微鏡是一個新興領域,藉此文我們也可以對Wolfram 語言的廣泛功能略窺一斑。我們還將進一步擴展函數的應用範圍,為顯微鏡圖像分析提供權威的平台。
TAG:WOLFRAM |