感覺系統/計算機模型/視網膜功能模擬
以下部分描述了使用計算機語言Python和影像和影片處理包OpenCV對視網膜神經節細胞活動進行的逼真模擬。在總結了對模擬重要的視網膜主要特徵之後,描述了所需軟體包的安裝。本節的其餘部分介紹了模擬和相應的引數。
當光線到達眼睛後部時,它會進入視網膜的細胞層。視網膜中檢測和響應光線的光感受器位於視網膜的最後部。有兩種型別的光感受器:桿狀細胞和錐狀細胞。桿狀細胞使我們能夠在昏暗的光線下看到,但不能感知顏色。另一方面,錐狀細胞使我們能夠在正常照明條件下感知顏色。在大多數視網膜中,桿狀細胞數量超過錐狀細胞。視網膜中提供最高視覺敏銳度的區域位於我們凝視的中心。當光線照射到光感受器時,它會與稱為感光色素的分子相互作用,從而開始一系列反應,用於傳播視覺訊號。 該訊號被傳遞到稱為雙極細胞的細胞,這些細胞連線光感受器和神經節細胞。雙極細胞將訊號傳遞給神經節細胞,神經節細胞在視神經盤稱為視神經的區域中大量離開眼睛。離開視網膜後,神經節細胞被稱為視神經。視神經將視覺資訊傳遞到大腦進行處理。視網膜中還有另外兩種型別的細胞需要提及:水平細胞和無長突細胞。水平細胞接收來自多個光感受器細胞的輸入。無長突細胞接收來自雙極細胞的訊號,並負責調節和整合雙極細胞和神經節細胞中的活動[1]。可以在這裡找到有關視網膜的更多說明。

視網膜細胞形成兩層細胞層:外叢狀層 (OPL) 和內叢狀層 (IPL)。每層都用特定濾波器建模。在構成視網膜輸出的 IPL 水平,可以識別出不同的資訊通道。我們在這裡關注已知的:專門用於細節提取的細小通道 (Parvo) 和專門用於運動資訊提取的粗大通道 (Magno)。在人類視網膜中,細小通道在中央凹 (中央視覺) 水平最為常見,而粗大通道在中央凹外 (周圍視覺) 中最為重要,這是由於專門細胞的相對變化[2]。有趣的是,細小通道訊號的到達時間比粗大通道訊號晚,如左側影像所示[3]。
為了瞭解 Magno 和 Parvo 細胞執行的功能,科學家對將資訊傳遞到大腦的通路進行了病變,並對動物由於病變而產生的表現進行了研究。當猴子外側膝狀核的細小通路層中的細胞被破壞時,在各種任務中的表現都會下降,例如顏色辨別和模式檢測[4]。最具資訊量的結果是,當粗大通路層中的神經元被破壞時,動物對快速閃爍的低空間頻率目標的敏感度降低。這種敏感度下降表明,粗大通路包含最佳資訊,可以提高我們執行需要高時間頻率資訊的任務的能力[3]。粗大通路神經元攜帶的資訊提供了影像中高時間頻率和低空間頻率成分的最佳資訊。當粗大通路訊號可用時,在運動任務和其他需要此資訊的任務中的表現會更好。這些訊號對於執行任務不是絕對必要的。可以透過簡單地增加刺激對比度來彌補運動任務中的表現缺陷;也就是說,可以透過提高細小通路資訊質量來彌補粗大通路資訊損失。因此,粗大通路包含對視覺任務(如運動感知)特別有用的資訊。此外,細小通路和粗大通路與阿爾茨海默病、帕金森病等神經系統疾病有關。更多資訊總結在[5]中。
以下模擬是使用 Python 中的 OpenCV 庫完成的。圖 1 顯示了著名 Lena 影像從 Magno 和細小通路層得到的輸出。我們可以看到,Parvo 細胞的輸出包含顏色和圖案資訊,而 Magno 細胞的輸出包含低空間頻率的輪廓。將視網膜生理學描述成數學模型對於促進視網膜植入物和視覺研究的發展至關重要。一些關於視網膜植入物的有趣文章見[6]和webvision。
以下部分詳細介紹了包、引數設定和演示。


此包目前託管在 GitHub 上,單擊此處檢視原始碼。此包支援Python 2.x 和 3.x。

為了成功安裝和執行此包,我們強烈建議使用Anaconda。Anaconda 將減輕更新和安裝第三方包的許多問題。
- OpenCV3:用於影像和影片處理。安裝 OpenCV 有多種方法。首先,您可以按照OpenCV 網站上的線上文件進行操作,並從原始碼構建 OpenCV(在這種情況下,請確保您啟用了 Python 選項並構建了額外的模組)。Anaconda 使用者可以直接從二進位制檔案安裝該包您可以在 Linux 終端或 Windows 控制檯中鍵入上面的命令,Anaconda 將自動安裝此包。
conda install -c menpo opencv3=3.1.0
- PyQtGraph:用於設計和管理 GUI。我們建議您使用 Anaconda 的構建來安裝此包您可能不想直接從 PyPI 安裝此包,因為您需要注意一些棘手的問題。
conda install pyqtgraph
- 其他必需的包(如 numpy)可以透過 PyPI 安裝,並在包安裝期間進行檢查
如果您已安裝上述提到的包,則可以透過以下方式從 PyPI 獲取最新的穩定版本
pip install simretina
您應該確保您的計算機上安裝了Git。對於 Windows 使用者,請確保 Git 可執行檔案位於您的路徑中。
安裝OpenCV3和pyqtgraph後,可以透過以下方式安裝視網膜模擬包
pip install git+git://github.com/duguyue100/retina-simulation.git \
-r https://raw.githubusercontent.com/duguyue100/retina-simulation/master/requirements.txt
pip 獲取包的最新版本並自動安裝。
視網膜檢視器是整個軟體包的核心元件。它允許您使用不同的引數設定來操作視網膜模型。執行檢視器還可以驗證您的安裝。
假設您已根據上述說明成功安裝了軟體包,您可以在終端/控制檯中輸入以下命令:
retina_viewer.py
上面的命令不是檔名,而是一個命令。安裝完成後,該命令可以在您的終端/控制檯中搜索到。
對於 Windows 使用者,您的系統要麼立即啟動檢視器,要麼會詢問開啟檔案的程式,您應該從 Anaconda 安裝目錄中找到並選擇 python.exe 。如果它沒有響應,您可能需要開啟一個新的控制檯並再次輸入上述命令。
請注意,如果軟體包未檢測到 FFMPEG,則會在第一次使用時自動下載。

retina_viewer.py (如左側所示)當前分為 5 個面板。在頂部,有三個顯示器,從左到右依次顯示原始影像/影片、視網膜小細胞通路輸出和視網膜大細胞通路輸出。在左下角,是一些允許您以不同模式操作檢視器的功能。在中間下方,是一些定義視網膜小細胞通路在內層叢狀層 (IPL) 和外層叢狀層 (OPL) 的引數。在右下角,是一些定義視網膜大細胞通路在 IPL 的引數。
您可以在模擬過程中更改引數設定。但是由於視網膜模型也考慮了時間維度,因此在更改引數後需要短暫的適應。引數設定的詳細資訊將在下一節中介紹。
從右下角面板開始,首先需要選擇操作模式,檢視器提供 5 種模式
| 操作模式 | 描述 |
|---|---|
| 影像 | 從內建示例中選擇影像。檢視器包含 2 個影像示例:Lena 和 Dog。Lena 影像是標準測試影像,而 Dog 影像取自公開的影像識別資料集 Caltech-256。 |
| 影像 (外部) | 提供外部影像,支援常用的影像格式。您可以點選開啟影像/影片按鈕進行選擇。 |
| 影片 | 從內建示例中選擇 2 個影片示例:騎馬和太極。這些示例取自 UCF-101 動作識別資料集。 |
| 影片 (外部) | 此模式需要來自您系統的外部影片。您可以點選開啟影像/影片按鈕進行選擇。 |
| 網路攝像頭 | 如果您機器上裝有網路攝像頭,則檢視器將從網路攝像頭獲取影片流並進行處理。 |

在本節中,我們將簡要回顧[7]中提出的視網膜模型。右側顯示了一個概念圖。首先,輸入幀的光照度被光感受器歸一化,然後由外層叢狀層 (OPL) 和內層叢狀層 (IPL) 處理。IPL 層的輸出進入兩個通道:視網膜小細胞通路用於提取細節,視網膜大細胞通路用於運動分析。
以下公式用於將輸入亮度 調整為調整後的亮度 ,範圍為 ,其中 表示影像中允許的最大畫素值(在本例中,8 點陣圖像為 255。如果影像使用不同的編碼方案,則該值可能不同),這基於光感受器能夠根據其鄰域的亮度調整其靈敏度的事實。
其中 是一個靜態壓縮引數, 是一個與光感受器鄰域的區域性亮度 線性相關的壓縮引數。 是透過對影像應用空間低通濾波器計算的,這是透過實現水平細胞網路實現的。
該模型增強了暗區對比度的可見度,同時保持了亮區的對比度。
外叢狀層
[edit | edit source]OPL 模型描述了水平細胞對起源於光感受器的訊號的影響。OPL 層可以用一個不可分離的時空濾波器建模,其中 是空間頻率, 是時間頻率,該濾波器由以下特徵:
其中
上面兩個方程可以看作兩個低通時空濾波器,它們模擬了光感受器網路 和水平細胞網路 。網路 的輸出只包含影像的極低空間頻率,它被用作區域性亮度 。 是濾波器 的增益, 是濾波器 的增益。 和 是時間常數,它們允許將時間噪聲最小化。 和 是空間濾波常數,其中 設定高截止頻率, 設定低截止頻率。
和 之間的差異可以用兩個運算元 BipON 和 BipOFF 來表示,它們分別給出 和 影像之間差異的正負部分。這模擬了雙極細胞的作用,它將 OPL 輸出分成兩個通道:ON 和 OFF。OPL 濾波器可以去除時空噪聲並增強輪廓。
細小細胞通道的節細胞 (細小細胞) 接收來自 OPL 的 BipON 和 BipOFF 輸出的輪廓資訊。
在這裡,我們可以對 BipON 和 BipOFF 輸出應用與光感受器相同的區域性適應定律,從而進一步增強輪廓資訊。這些經過適應的輸出最終組合在一起並作為細小細胞通路輸出傳送出去。
在 IPL 的大細胞通道上,無長突細胞充當高通時間濾波器。
其中 是離散時間步長,而 是濾波器的時常數(在預設配置中為 2 個時間步長)。此濾波器可增強空間和時間發生變化的區域。
無長突細胞 () 連線到雙極細胞(BipON 和 BipOFF)以及到 "傘形"神經節細胞。與 Parvo 通道一樣,神經節細胞執行區域性對比度壓縮,但也充當空間低通濾波器。結果是輪廓資訊的時域高通濾波,該資訊經過平滑和增強(透過低通濾波器和區域性對比度壓縮)。因此,只有低空間頻率的移動輪廓會被提取和增強(特別是垂直於運動方向的輪廓)。
引數和設定摘要
[edit | edit source]以下引數設定主要來自最初的 視網膜模型,該模型在 OpenCV 中開發。請注意,此處的引數與 [7] 中使用的設定有很大不同。但是,微調的引數設定會產生比論文中聲稱的更好的視覺化效果。
IPL 和 OPL 處的視網膜小細胞通路引數
[edit | edit source]| 引數 | 預設設定 | 生物“現實”設定 | 描述 |
|---|---|---|---|
| 顏色模式 | 顏色 | 顏色 | 指定是否將幀處理為彩色影像或灰度影像。 |
| 規範化輸出 | 是 | 是 | 如果是,則 Parvo 輸出的結果將在 0 到 255 之間進行重新縮放。 |
| 感光細胞區域性適應靈敏度 () | 0.75 | 0.89 | 感光細胞靈敏度範圍為 0~1,如果值增加,則對數壓縮效果更強。 |
| 感光細胞時間常數 () |
0.9 | 0.9 | 用於裁剪高時間頻率(噪聲、快速運動等),單位為幀。雖然從邏輯上來說它應該是整數,但它也可以使用浮點設定。 |
| 感光細胞空間常數 () | 0.53 | 0.53 | 用於裁剪高空間頻率(噪聲、粗輪廓等),單位為畫素。雖然從邏輯上來說它應該是整數,但它也可以使用浮點設定,因為預設值為 0.53。 |
| 水平細胞增益 () | 0.01 | 0.3 | 水平細胞網路的增益,如果為 0,則輸出的平均值為零,如果該值接近 1,則亮度不會被過濾。 |
| 水平細胞時間常數 () |
0.5 | 0.5 | 用於裁剪低時間頻率(區域性亮度變化),單位為幀。它還可以接收浮點數設定。 |
| 水平細胞空間常數 () | 7 | 7 | 用於裁剪低空間頻率(區域性亮度),單位為畫素。該值也用於在計算神經節細胞級別的區域性對比度適應時計算區域性對比度。 |
| 神經節細胞靈敏度 () | 0.75 | 0.89 | 神經節細胞區域性適應輸出的壓縮強度,最佳結果的範圍為 0.6 到 1,更高的值會增加更多低值靈敏度,並且輸出會更快飽和。 |
IPL 處的視網膜大細胞通路引數
[edit | edit source]| 引數 | 預設設定 | 生物“現實”設定 | 描述 |
|---|---|---|---|
| 規範化輸出 | 是 | 是 | 如果是,則 Magno 輸出的結果將在 0 到 255 之間進行重新縮放(推薦),如果你選擇否,你可能什麼也看不見。 |
| 區域性對比度的低通濾波器增益 IPL 級別的適應 ( () |
0 | 0 | 對於神經節細胞區域性適應,通常為 0。 |
| 用於 IPL 級別的區域性對比度適應的低通濾波器時間常數 ( |
0 | 0 | 對於神經節細胞區域性適應,單位為幀,通常響應為 0(即時響應)。 |
| 用於
區域性對比度適應在 IPL 水平( |
7 | 7 | 對於神經節細胞的區域性適應,單位為畫素。 |
| 無長突細胞的時間截止頻率() | 2 | 2 | 大細胞通路一階高通濾波器的時常數,單位為幀。 |
| V0 壓縮引數() | 0.95 | 0.95 | 神經節細胞區域性適應的壓縮強度,最佳結果的範圍為 0.6 到 1,較高的值會增加更多低值敏感度,並且輸出更快地飽和。 |
| 區域性適應積分的時間常數() | 0 | 0 | 用於區域性適應計算的區域性“運動平均值”區域性計算中涉及的低通濾波器的時常數。 |
| 區域性適應積分的空間常數() | 7 | 7 | 用於區域性適應計算的區域性“運動平均值”區域性計算中涉及的低通濾波器的空間常數。 |
中央模擬元件是視網膜模擬檢視器。此檢視器採用直接方法編寫,其中我們編寫了一個靜態 GUI 介面,並在引數或幀發生更改時強制更新整個視窗。
GUI 完全使用pyqtgraph和pyqt編寫,如果您熟悉Qt 框架,您實際上可以設計您想要的 GUI,然後將其匯出到 XML 標註描述檔案,然後您也可以使用pyqt將描述轉換為 Python 類。在這裡,我們手寫了整個 GUI,因此,如果您檢視程式碼,您會發現大部分程式碼都在配置圖形模組。
程式碼中最重要的部分是指令碼中的更新函式,更新函式與 GUI 視窗掛鉤,並在需要時強制其更新。在每一步中,更新函式都會根據配置檢查配置是否透過比較來自前一步的配置字典而更改,然後決定程式是否重新初始化資料來源和視網膜模型。更新函式始終會生成一個符合當前配置的幀。然後,此幀由給定的視網膜模型處理並顯示。
- ↑ Helga Kolb. 視網膜的工作原理。美國科學家,91(1):28{35, 2003
- ↑ D.M. Dacey,視覺系統中的高階處理,在:Ciba 基金會研討會,第 184 卷,Wiley,奇切斯特,1994 年,第 12-34 頁。
- ↑ a b Wandell,Brian A;視覺基礎。1995 年。
- ↑ Pasternak,Tatiana,和 William H. Merigan。“猴子顳上溝損傷後的運動感知。” 大腦皮層 4.3 (1994): 247-259。
- ↑ Yoonessi,Ali,和 Ahmad Yoonessi。“大細胞、小細胞和 K 細胞通路的功能評估;當前狀態和未來的臨床應用。”眼科與視覺研究雜誌 6,第 2 期(2011 年):119-126。哈佛
- ↑ Dagnelie,G.(2012 年)。視網膜植入:多學科領域的出現。神經病學現狀,25(1), 67-75。
- ↑ a b A. Benoit,A. Caplier,B. Durette,J. Herault,使用人類視覺系統建模進行生物啟發的低階影像處理,計算機視覺與影像理解,第 114 卷,第 7 期,2010 年 7 月,第 758-773 頁,ISSN 1077-3142,http://dx.doi.org/10.1016/j.cviu.2010.01.011。