根据布尔图像掩码值选择图像区域

时间:2018-01-15 08:47:32

标签: python image image-processing

我有一个rgb图像,例如

img_rgb[:,:,0] = [ 125 160; 130 125];
img_rgb[:,:,1] = [ 125 160; 130 125];
img_rgb[:,:,2] = [ 125 160; 130 125];

和一个掩码布尔图像,其大小等于img_rgb的大小,例如

mask[:,:] = [ 1 0; 0 1]

对于掩码的每个零值,我想在img-rgb中关联一个nan值,从而获得以下

img_rgb[:,:,0] = [ 125 nan; nan 125]
img_rgb[:,:,1] = [ 125 nan; nan 125]
img_rgb[:,:,2] = [ 125 nan; nan 125]

由于我的图像数组非常大(长度大小为10000px),我希望尽快做到这一点,从而避免双周期。在Matlab中我会使用逻辑运算符

img_rgb(repmat(mask,1,1,3)==0)=nan;

我怎样才能在python中做类似的事情? python v.2.7 提前致谢

1 个答案:

答案 0 :(得分:1)

使用numpy数组时,可以在python中使用类似于Matlab的布尔索引。

Broadcasting将为您处理repmat。所以你可以做到:

import numpy as np

img_rgb[mask == 0] = np.Nan