2017-09-04 48 views
0

我試圖弄清楚如何在直方圖強度上對RGB.png文件進行二值化處理。ImageProcessing具有多個閾值來對skimage.io的imread進行二值化處理()

Example: smoothed RGB intensities with estimated thresholds for R,G,B

到目前爲止是這種情況,我可以申請閾值的一個強度範圍與<和>使用下面的代碼操作:(另外,如果我想知道爲什麼它不IMG < thres1爲階段1 ..)

from skimage.io import imread 
img=imread('example.png') 
#intensitys 
thres1 = 30 
thres2 = 80 
#calculate 
phase1 = img > thres1 
phase3 = img < thres2 

現在我試圖讓剛強度thres1thres2幾個之間的方法具像素DS例如爲:

phase2 = thres1 < img < thres2 
#also 
phase2 = thres1<img & img < thres2 
#and 
phase2 = thres1<img 
phase2 = thres2>phase2 

雖然這種操作它使我有以下ValueError異常: 具有多於一個元素的數組的真值是不明確的。使用a.any()或a.all() 我也嘗試用a.any()和a.all()來處理這種情況,因此我沒有得到有用的結果。

使用phase2 = np.logical_and(thres1 < img,img < thres2)錯誤地將階段3包括到階段2中;

phase2 = np.logical_and(thres1 < img,img > thres2)錯誤地將階段1包括到階段2中。

Example: plot of generated image arrays for phase2 = np.logical_and(thres1 < img,img > thres2)

有用來創建圖片,不止一個閾值參數來完成通過繪製兩個強度值之間的所有像素的可能性大嗎?

+1

你可以添加一個最小的示例,例如形狀爲((4,5,3)')的圖像數組,並向我們顯示所需的輸出? – Divakar

+0

'phase2 = np.logical_and(thres1

+0

得到它; 'phase2 =〜(np.logical_and(phase1,phase3))'感謝您的幫助! –

回答

0

在嘗試了很多東西之後,逆運算符爲我解決了這個問題。 好像這個工程作爲

「給我所有的像素,不包括在階段一,三期」

phase2 = ~(np.logical_and(phase1,phase3))

需要超過3個階段,我仍然不知道如何處理這個..