У меня есть массив beb формы (3,8), он представляет три строки по 8 бит (1 или 0), массив copiv формы (3,8, 2) который представляет в основном 8 первых пикселей изображения только с зелеными и синими значениями RGB. И у меня есть маска , массив логической формы (3,8). Значением массива маски является True, если значения Green и Blue имеют разную четность, и False, если они имеют одинаковую четность. Вот как они выглядят (beb, mask и copiv соответственно):
beb = np.array([[0,0,0,0,0,0,1,0],[0,1,1,0,0,0,0,1],[0,1,1,0,1,0,0,0]]) #shape (3,8)
mask = np.array([[True, False, True, True, True, False, False, True],
[True, False, True, True, True, False, False, True],
[True, False, True, True, True, False, False, True]]) #shape (3,8)
copiv = np.array([
[[138, 207],[133, 201],[133, 202],[134, 203],[133, 202],[133, 203],[134, 206],[133, 204]],
[[139, 208],[133, 201],[133, 202],[134, 203],[133, 202],[133, 203],[134, 206],[134, 205]],
[[139, 208],[133, 201],[133, 202],[135, 204],[133, 202],[133, 203],[135, 207], [134, 205]]]) # shape (3,8,2)
Я хочу увеличить или уменьшить второе значение массива copiv (так что значение Blue, которое является вторым значением, первое значение - это значение Грина) в зависимости от этих условий:
-Когда бит массива beb равен 0, а значения зеленого и синего одинаковы (например, [1 3] или [6 8], означает, что в массиве copiv он будет возвращать False, b c с той же четностью) мы ничего не делаем.
-При бите массив beb снова равен 0, но на этот раз соотношение зеленого и синего отличается (например, [4 3], это означает, что в массиве copiv он будет возвращать значение True), тогда в этом случае: если Blue - четное значение, мы увеличиваем Blue, если Blue - нечетное значение, мы уменьшаем Blue.
- Когда бит beb равен 1, а если Green и Blue - Истинно в массиве copiv : мы ничего не делаем
-А когда бит beb равен 1 и t Hat Green и Blue возвращают False, поэтому они имеют разное соотношение: если Blue четное, мы увеличиваем его, если оно нечетное, мы уменьшаем его.
Вот мой код, но декремент не работает:
print("COPIV BEOFRE : \n", copiv)
for i in range(beb.shape[0]):
for j in range(beb.shape[1]):
if (beb[i][j] == 0):
for y in range(mask.shape[0]):
for z in range(mask.shape[1]):
for x in range(copiv.shape[0]):
for w in range(copiv.shape[1]):
if (mask[y,z] == True and copiv[x,w,1:3] % 2 == 0):
copiv[x,w,1:3] += 1
elif (copiv[x,w,1:3] % 2 != 0):
copiv[x,w,1:3] -= 1
elif (beb[i][j] == 1):
if(mask[y,z] == False and copiv[x,w,1:3] % 2 == 0):
copiv[x,w,1:3] += 1 #increment B
elif (copiv[x,w,1:3] % 2 != 0):
copiv[x,w,1:3] -= 1 #decrement B
print("\nCOPIV AFTER : \n", copiv)