检查图像中绿色和蓝色值的奇偶性
Check the parity of the Green and Blue values into an image
我有一个形状为 (9,8,2) 的数组 ver,它是我从图像中提取的。
我要搜索的是遍历该数组的像素,检查绿色和蓝色值是否具有不同的奇偶校验,如果是,则将结果 True 放入列表中,然后对每一行做同样的事情。
ver = im_arr[:9,:8,1:3]
这里我使用了图像的前 9 行,前 8 个像素,并且我提取了只有绿色和蓝色值的列。
我现在知道如何使用这样的二维数组了:
cf = cf[:,1:3]
jou = (cf.sum(1)%2).astype(bool)
但在这种情况下,对于 3D 数组,我真的不知道该怎么做,我尝试了三个 for 循环,但它不起作用:
for i in range(ver.shape[0]):
for y in range(ver.shape[1]):
for z in range(ver.shape[2]):
juju[i,y,z] = (ver.sum(1)%2).astype(bool)
import numpy as np
image = np.random.randint(0, 255, (100, 100, 3))
subset = image[:9, :8, 1:]
mask = ~np.all(np.remainder(subset, 2) == 0, axis=-1)
此代码生成随机图像并提取子集。然后它检查数组中所有数字的余数是否可以被 2 整除。 np.all 调用检查最后一个维度是否所有值都为真,如果是 returns 则为真,否则为假。为了得到你想要的面具,我只是用 ~
否定结果
编辑以添加一个解决方案,检查维度上的两个值是相等还是奇数。
import numpy as np
image = np.random.randint(0, 255, (100, 100, 3))
subset = image[:9, :8, 1:]
even = np.remainder(subset, 2) == 0
mask = ~np.equal(even[..., 0], even[..., 1])
如果将绿色和蓝色通道的LSB屏蔽并相加,只能得到:
0 + 0 = 0
0 + 1 = 1 <--- THIS
1 + 0 = 1 <--- THIS
1 + 1 = 2
因此,您想确定它们相加为 1 的位置,即它们不同:
mask = np.sum((ver & 1), axis=-1) == 1
我有一个形状为 (9,8,2) 的数组 ver,它是我从图像中提取的。 我要搜索的是遍历该数组的像素,检查绿色和蓝色值是否具有不同的奇偶校验,如果是,则将结果 True 放入列表中,然后对每一行做同样的事情。
ver = im_arr[:9,:8,1:3]
这里我使用了图像的前 9 行,前 8 个像素,并且我提取了只有绿色和蓝色值的列。 我现在知道如何使用这样的二维数组了:
cf = cf[:,1:3]
jou = (cf.sum(1)%2).astype(bool)
但在这种情况下,对于 3D 数组,我真的不知道该怎么做,我尝试了三个 for 循环,但它不起作用:
for i in range(ver.shape[0]):
for y in range(ver.shape[1]):
for z in range(ver.shape[2]):
juju[i,y,z] = (ver.sum(1)%2).astype(bool)
import numpy as np
image = np.random.randint(0, 255, (100, 100, 3))
subset = image[:9, :8, 1:]
mask = ~np.all(np.remainder(subset, 2) == 0, axis=-1)
此代码生成随机图像并提取子集。然后它检查数组中所有数字的余数是否可以被 2 整除。 np.all 调用检查最后一个维度是否所有值都为真,如果是 returns 则为真,否则为假。为了得到你想要的面具,我只是用 ~
否定结果编辑以添加一个解决方案,检查维度上的两个值是相等还是奇数。
import numpy as np
image = np.random.randint(0, 255, (100, 100, 3))
subset = image[:9, :8, 1:]
even = np.remainder(subset, 2) == 0
mask = ~np.equal(even[..., 0], even[..., 1])
如果将绿色和蓝色通道的LSB屏蔽并相加,只能得到:
0 + 0 = 0
0 + 1 = 1 <--- THIS
1 + 0 = 1 <--- THIS
1 + 1 = 2
因此,您想确定它们相加为 1 的位置,即它们不同:
mask = np.sum((ver & 1), axis=-1) == 1