2015-08-31 65 views
0

我正在組裝OpenCV腳本以分析免疫組織化學染色的心臟組織。我們的染色過程使得在其質膜中表達某些蛋白質的細胞類型具有在光學顯微鏡下可見的顏料,我們用它來拍攝圖像。在顯微鏡研究中圍繞異質紋理組織繪製邊界

到目前爲止,我已經成功地使用OpenCV社區提供的經常引用的顏色分割腳本的修改版本(http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html),根據顏色範圍將圖像分割到不同的圖層。

原始圖像的屏幕截圖: Original Image of heart tissue

B細胞層顯示: AP Pigment layer

此時,我想計算B細胞的面積與未染色的組織的比例。此操作提示基於顏色範圍提取背景單元層: tissue background

顯然,這些結果還有很多不足之處。

有沒有人有如何解決這個問題的想法?再次,我想分割背景組織(透明)層,不幸的是,它很像海綿般的紋理。我的目標是創建一個代表未染色組織區域的面具。似乎需要模糊技術來填補組織中的空白,但這種方法所帶來的準確性損失是顯而易見的。

+0

使用像jpg這樣的格式會引入壓縮失真,並且它們可能會影響您的方法的準確性。 – dhanushka

+0

TIF怎麼樣?你能提供一個壓縮神器的評論嗎? –

+0

檢查[this](https://en.wikipedia.org/wiki/Compression_artifact)wiki頁面。我認爲任何無損壓縮都可以。 – dhanushka

回答

2

在示例圖像中,通道看起來高度相關。如果對圖像應用去相關拉伸,您應該可以看到更多細節。 Here在我的博客文章中我已經實現了C++中的解相關伸展(不幸的是不是Python)。

在博客我做了以下來分割單元區域使用的示例代碼:

  • dstretch的CIE實驗室圖像與以下targetMean和tergetSigma。

    float mu[3] = {128.0f, 128.0f, 128.0f}; 
    float sd[3] = {128.0f, 5.0f, 5.0f}; 
    Mat mean = Mat(3, 1, CV_32F, mu); 
    Mat sigma = Mat(3, 1, CV_32F, sd); 
    
  • 將dstretched CIE Lab圖像轉換回BGR。
  • 使用3x3矩形結構元素腐蝕此BGR圖像一次。
  • 應用k均值聚類這個侵蝕的圖像,其中k = 2

我不知道這個細分有多好。我認爲通過爲上述參數(平均值,西格瑪,結構元素大小和圖像被侵蝕的次數)嘗試不同的值可以得到更好的分割。

以下圖像不是以原始尺度

原件: original dstretched CIE實驗室轉換回BGR: dstretched-cielab 侵蝕: eroded k均值,其中k = 2: labels

+0

謝謝@dhanushka! –

+0

你是否建議在Python環境中實現你的C++代碼的任何特定手段?用Cython? –

+0

@DavidShaked我很抱歉,我沒有太多的接觸Python。可以用Python編寫代碼更容易,正如你所看到的,C++中沒有太多的代碼。我在搜索Python實現時發現[this](https://github.com/lukassparrow/decorrstretch)。話雖如此,如果您發現一個帖子(問題或答案)在stackoverflow中有用,請考慮對其進行投票。如果您的問題的答案可以接受,請考慮接受答案。這就是這個生態系統通常的作用。 :) – dhanushka