2014-09-03 48 views
0

我正在分析圖像以查找圖像中的棕色物體。我爲圖像設定閾值,並將最黑暗的部分視爲棕色細胞。然而,取決於圖像的質量有時不能被識別。 OpenCV Python有沒有解決這個問題的方法,例如預處理灰度圖像並定義該特定圖像的棕色方法?使用opencv處理不同質量的圖像

,我使用發現褐色小點的代碼如下:

def countBrownDots(imageFile): im = cv2.imread(imageFile) #changing color space gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) gray = increaseBrighntness(gray) l1,thresh = cv2.threshold(gray,10,255,cv2.THRESH_BINARY_INV) thresh = ndimage.gaussian_filter(thresh, 16) l2,thresh = cv2.threshold(thresh,70,255,cv2.THRESH_BINARY) thresh = ndimage.gaussian_filter(thresh, 16) cv2.imshow("thresh22",thresh) rmax = pymorph.regmax(thresh) nim = pymorph.overlay(thresh, rmax) seeds,nr_nuclei = ndimage.label(rmax) cv2.imshow("original",im) cv2.imshow("browns",nim)

這裏是一個輸入圖像例如:

enter image description here

+3

你好,首先你應該看看HSV空間,在這個空間找到特定的顏色更容易。其次,你應該展示你的問題的圖像,以幫助我們理解問題。 – biquette 2014-09-03 12:25:04

+0

圖片在這裏:http://i.stack.imgur.com/vmjqu.jpg – 2014-09-03 12:41:59

+0

基於biquette的說法,你也應該建立一個直方圖出Hue圖像,看看是否拍攝圖像區域在給定範圍內的色調值已經可以解決問題。注意:有時你可以通過查找所有不是你正在尋找的東西來解決問題。 – Antonio 2014-09-03 12:48:20

回答

0

看一看在HSV色彩空間中的圖像,這裏是並排堆疊的3架飛機

enter image description here

雖然人們已經建議基於色調進行分割,但實際上在飽和度和價值平面中存在更多的區分性信息。對於這個特定的圖像,你可能會得到一個更好的結果與灰度(即數值平面)比色相。但是,這是沒有理由丟棄顏色信息。

作爲概念驗證(使用瘸子)的色彩分割,我只是隨機選擇了一個褐色的斑點,改變了所有的顏色小於60的顏色距離該點爲綠色得到這個:

enter image description here

如果你玩的參數有點你可能會得到你想要的。然後編寫代碼。 我試圖預處理mean shift filtering來突出顯示圖像,但這並沒有真正的幫助。

+0

我可以統計對象的數量改變爲灰度和使用閾值這個特定的圖像,但是當圖像改變它不起作用。我必須根據圖像操作參數。我想爲所有類型的圖像做一些通用的事情。那是可能的嗎? – 2014-09-04 08:07:32

+0

手動調整多個圖像的參數,然後使用這些圖像來訓練分類器。 OpenCV有一個可供選擇的編號,請參閱http://docs.opencv.org/modules/ml/doc/ml.html。我可能會選擇支持向量機,因爲如果有什麼工作要做,但起初它有點痛苦。 – Bull 2014-09-04 09:02:05