2012-07-05 53 views
1

在我的項目中,我必須將用普通相機(jpeg)拍攝的ECG圖像數字化。例如,我有以下的相機拍攝的圖像: 我使用C#實現這個如何從掃描的心電圖像中獲取數值?

enter image description here

然後我這個圖像轉換爲灰度圖像,然後應用門檻,單獨從電網波動。 最後從圖像中刪除不必要的東西,並最終輸出是這樣

enter image description here

現在我想提取採用了像素數的segments.what之間是最好的方式做這將在下面進行圖像上提值那?

enter image description here

主要的東西,我想有兩個Q波之間QR波和長度的高度。(像素值)

如何實現波紋管代碼來獲取這些值並將其存儲在陣列

public void black(Bitmap bmp) 
{ 
      Color[,] results = new Color[bmp.Width, bmp.Height]; 
      for (int i = 0; i < bmp.Height; i++) 
      { 
       for (int j = 0; j < bmp.Width; j++) 
       { 
        Color col = bmp.GetPixel(j, i); 
        if (col.R == 0) 
        { 
         results[j, i] = bmp.GetPixel(j, i); 

        } 
      } 
     } 
} 

回答

2

有關該問題的理論(即無源代碼)概述,請閱讀Syeda-Mahmood, Beymer, and Wang "Shaped-based Matching of ECG Recordings的第III部分。

基本上,你的黑色圖像是一個數據點陣列:x軸只是圖像的寬度(以像素爲單位),y軸是通過平均每個x軸上黑色像素的y位置獲得的,位置(如果黑線只有一個像素高,則不需要)。

爲了使數據更易於管理,您可以通過從圖像中選擇每第n個x位置進行縮減採樣。你可能想要堅持一個標準的心電採樣率,以確保你不會錯過重要的數據;現代心電圖硬件通常以1000Hz採樣,而麻省理工學院Physionet QRS數據庫中的數據爲250Hz或360Hz。使用這些速率之一意味着讀取掃描圖像中每秒數據(25毫米)的1000,250或360像素。