-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathoutput_orientation.py
70 lines (63 loc) · 1.49 KB
/
output_orientation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import numpy as np
import random
def ENN_orientation(I):
D = np.zeros((28, 28))
for i in range(28):
for j in range(28):
col_sum = np.sum(I[:, i])
row_sum = np.sum(I[j, :])
if col_sum > row_sum:
D[i,j] = 1
elif col_sum < row_sum:
D[i,j] = -1
S1 = np.zeros(28)
for i in range(28):
row_sum = np.sum(D[i, :])
offrow_sum = (np.sum(D) - np.sum(D[i, :]))
if offrow_sum < -29:
S1[i] = 1
elif offrow_sum > -27:
S1[i] = -1
elif offrow_sum == -27:
if np.all(D[i, :]==1):
S1[i] = 1
elif not np.all(D[i, :]==1):
S1[i] = -1
elif offrow_sum == -28:
if row_sum > 0:
S1[i] = 1
elif row_sum < 0:
S1[i] = -1
elif offrow_sum == -29:
if not np.all(D[i, :]==-1):
S1[i] = 1
elif np.all(D[i, :]==-1):
S1[i] = -1
S2 = np.zeros(28)
for i in range(28):
offcol_sum = (np.sum(D) - np.sum(D[:, i]))
col_sum = np.sum(D[:, i])
if offcol_sum < 27:
S2[i] = -1
elif offcol_sum > 29:
S2[i] = 1
elif offcol_sum == 29:
if np.all(D[:, i]==1):
S2[i] = -1
elif not np.all(D[:, i]==1):
S2[i] = 1
elif offcol_sum == 28:
if col_sum > 0:
S2[i] = -1
elif col_sum < 0:
S2[i] = 1
elif offcol_sum == 27:
if not np.all(D[:, i]==-1):
S2[i] = -1
elif np.all(D[:, i]==-1):
S2[i] = 1
C1 = 0.206*np.sum(S1) - 0.206*np.sum(S2)
C2 = 0.206*np.sum(S2) - 0.206*np.sum(S1)
C = [C1, C2]
results = np.where(C==np.max(C))[0]
return random.choice(results)