2011-04-01 56 views
10

我有一個很簡單的圖像處理應用程序。卸下非紅色調色像素

我試圖去除 不涉及紅色調的像素。

到目前爲止基本代碼似乎達到我想要的。

 private void removeUnRedCellsBtn_Click(object sender, EventArgs e) 
     { 
      byte threshold = Convert.ToByte(diffTxtBox.Text); 
      byte r, g, b; 
      for (int i = 0; i < m_Bitmap.Width; i++) 
      { 
       for (int j = 0; j < m_Bitmap.Height; j++) 
       { 
        r = im_matrix[i, j].R; 
        g = im_matrix[i, j].G; 
        b = im_matrix[i, j].B; 
        if ((r - b) < threshold || (r - g) < threshold) 
        { 
         m_Bitmap.SetPixel(i, j, Color.White); 
        } 

       } 
      } 
      pictureArea_PictureBox.Image = m_Bitmap; 
     } 

基本上如果(紅色和藍色)或(紅色和綠色)的差小於閾值它設置像素爲白色。

我的結果似乎是有前途 但是我想知道是否有確定 一個 更好的解決方案像素是否在 涉及紅色調的。

我給的75的閾值的結果是beforeafter

任何算法或思想將非常理解的。

在此先感謝

matlab imtool

+0

我認爲術語「紅色調」是有點主觀的,但我估計這將是足夠的檢查的紅色量超過某一閾值beeing。 – Jan 2011-04-01 13:52:38

+0

那麼我應該只檢查一個像素的r值? – cgon 2011-04-01 14:00:46

+0

那是什麼時,我想用像素「紅色基調」 – Jan 2011-04-01 14:04:34

回答

7

如果轉換RGB值到不同的色彩空間,如HSL或HSV你可能有更多的運氣。查看維基百科上的this link。將像素轉換爲其中一個顏色空間應該可以幫助您隔離色調,這正是您最關心的問題。

+0

.NET代碼:http://blogs.msdn.com/b /cjacks/archive/2006/04/12/575476.aspx – 2011-04-01 14:56:06

+0

我正在嘗試。謝謝。 – cgon 2011-04-01 14:59:29

+2

即使在新的色彩空間中,您也需要考慮飽和度和亮度 - 僅靠色調來判斷是不夠的。 – 2011-04-01 17:41:06

相關問題