我有一個像素值爲0或255的256×256像素2D蒙版,以及匹配的灰度圖像。兩者都有形狀(256,256)。將2D numpy蒙版應用於灰度圖像
我想在灰度圖像上應用蒙版,因此生成的圖像只包含原始灰度圖像中的像素,其中相應的蒙版值爲255(應保留原始灰度像素值)。
我不使用
img_clean = img_grayscale[mask]
,因爲它增加了一個新的層面的陣列(如numpy的的文檔中提到)能夠做到這一點。
我該如何解決這個問題?
我有一個像素值爲0或255的256×256像素2D蒙版,以及匹配的灰度圖像。兩者都有形狀(256,256)。將2D numpy蒙版應用於灰度圖像
我想在灰度圖像上應用蒙版,因此生成的圖像只包含原始灰度圖像中的像素,其中相應的蒙版值爲255(應保留原始灰度像素值)。
我不使用
img_clean = img_grayscale[mask]
,因爲它增加了一個新的層面的陣列(如numpy的的文檔中提到)能夠做到這一點。
我該如何解決這個問題?
我想這應該做
np.where(mask == 255, img_grayscale, 0)
見https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html的文檔工作。
只是一個小小的評論,但是如果'img_grayscale'的數據類型不同於'uint8'或'img_grayscale'的強度範圍大於255,這是行不通的。在大多數情況下,灰度圖像在0-255範圍內爲uint8,但爲了以防萬一,值得添加註釋(例如,我傾向於在0-1範圍內使用float32圖像)。 –
我想補充一個選項,第三和修改灰度圖像就地:
img_grayscale[mask == 255] = 0
PS:你可以創建一個副本,如果你不想就地修改。
你是什麼意思'只包含來自原始灰度圖像的像素? – ikkuh
生成的圖像應該是原始圖像的複製品,**除了原始圖像中具有相應的「0」的像素的**以外,對於這些像素,生成的圖像值應爲「0」 – pepe
In這種情況按位與應該工作:'img_clean = img_grayscale&mask' – ikkuh