2015-06-16 143 views
1

我有一個三維彩色圖像im(形狀512 512 3)和一個二維數組掩模(512 512)。我想通過掩碼註釋該彩色圖像:由二維數組索引三維數組

im = im[mask>threshold] + im[mask<threshold] * 0.2 + (255,0,0) * [mask<threshold]. 

如何有效地使用Python編寫此代碼?

回答

1

這工作:

mask3 = numpy.dstack(mask,mask,mask) 
im = im * (mask3>threshold) + im * (mask3<threshold) * 0.2 
im[:,:,0] += 255 * (mask<threshold) 

它依賴於一個事實,即真正的數值爲1,假爲0

它可能不是最清晰的還是最有效的,但它會仍然可能比通過布爾數組進行索引要快得多,例如im[ mask3 < threshold ] *= 0.2,除非索引具有非常少的真值,無論如何)。