2017-08-10 28 views
1

我有一個像素值爲0或255的256×256像素2D蒙版,以及匹配的灰度圖像。兩者都有形狀(256,256)。將2D numpy蒙版應用於灰度圖像

我想在灰度圖像上應用蒙版,因此生成的圖像只包含原始灰度圖像中的像素,其中相應的蒙版值爲255(應保留原始灰度像素值)。

我不使用

img_clean = img_grayscale[mask] 

,因爲它增加了一個新的層面的陣列(如numpy的的文檔中提到)能夠做到這一點。

我該如何解決這個問題?

+0

你是什麼意思'只包含來自原始灰度圖像的像素? – ikkuh

+0

生成的圖像應該是原始圖像的複製品,**除了原始圖像中具有相應的「0」的像素的**以外,對於這些像素,生成的圖像值應爲「0」 – pepe

+1

In這種情況按位與應該工作:'img_clean = img_grayscale&mask' – ikkuh

回答

2

bitwise AND可用於以像素值設置爲0其中所述掩模是0

img_clean = img_grayscale & mask 

作爲掩模包含任一0255值要麼保持相同或設置爲0根據您的要求。

+0

只是一個小小的評論,但是如果'img_grayscale'的數據類型不同於'uint8'或'img_grayscale'的強度範圍大於255,這是行不通的。在大多數情況下,灰度圖像在0-255範圍內爲uint8,但爲了以防萬一,值得添加註釋(例如,我傾向於在0-1範圍內使用float32圖像)。 –

1

我想補充一個選項,第三和修改灰度圖像就地

img_grayscale[mask == 255] = 0 

PS:你可以創建一個副本,如果你不想就地修改。