File size: 3,578 Bytes
60acf32
 
07b21c4
 
 
cc9b4d3
 
9f580f1
 
07b21c4
9f580f1
60acf32
 
 
07b21c4
60acf32
 
 
cf60c45
60acf32
 
07b21c4
60acf32
07b21c4
 
 
 
 
 
9f580f1
07b21c4
 
 
 
 
 
 
 
 
cf60c45
07b21c4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60acf32
 
 
07b21c4
cf60c45
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
70
71
72
73
74
import numpy as np

# from Data_Generation.Shape_Generation_Functions import basic_box, diagonal_box_split, horizontal_vertical_box_split, \
#     back_slash_box, forward_slash_box, back_slash_plus_box, forward_slash_plus_box, hot_dog_box, hamburger_box, \
#     x_hamburger_box, x_hot_dog_box, x_plus_box
from Data_Generation.Piecewise_Box_Functions import basic_box_array, back_slash_array, forward_slash_array, hamburger_array, hot_dog_array
# from Piecewise_Box_Functions import basic_box_array, back_slash_array, forward_slash_array, hamburger_array, hot_dog_array
import matplotlib.pyplot as plt




########################################################################################################################
# Make the data using all the code in Shape_Generation_Functions.py
def make_boxes(image_size, densities):
    """
    :param image_size: [int] - the pixel height and width of the generated arrays
    :param densities: [list] - of the values of each of the active pixels in each shape
    :return: [list[tuple]] - [Array, Density, Thickness of each strut type]
    """

    matrix = []

    # Establish the maximum thickness for each type of strut
    max_vert = int(np.ceil(1 / 2 * image_size) - 2)
    max_diag = int(image_size - 3)
    max_basic = int(np.ceil(1 / 2 * image_size) - 1)

    # Adds different density values
    for i in range(len(densities)):
        for j in range(1, max_basic):  # basic box loop, always want a border
            basic_box_thickness = j
            array_1 = basic_box_array(image_size, basic_box_thickness)
            if np.unique([array_1]).all() > 0:  # Checks if there is a solid figure
                break

            for k in range(0, max_vert):
                hamburger_box_thickness = k
                array_2 = hamburger_array(image_size, hamburger_box_thickness) + array_1
                array_2 = np.array(array_2 > 0, dtype=int)  # Keep all values 0/1
                if np.unique([array_2]).all() > 0:
                    break

                for l in range(0, max_vert):
                    hot_dog_box_thickness = l
                    array_3 = hot_dog_array(image_size, hot_dog_box_thickness) + array_2
                    array_3 = np.array(array_3 > 0, dtype=int)
                    if np.unique([array_3]).all() > 0:
                        break

                    for m in range(0, max_diag):
                        forward_slash_box_thickness = m
                        array_4 = forward_slash_array(image_size, forward_slash_box_thickness) + array_3
                        array_4 = np.array(array_4 > 0, dtype=int)
                        if np.unique([array_4]).all() > 0:
                            break

                        for n in range(0, max_diag):
                            back_slash_box_thickness = n
                            array_5 = back_slash_array(image_size, back_slash_box_thickness) + array_4
                            array_5 = np.array(array_5 > 0, dtype=int)
                            if np.unique([array_5]).all() > 0:
                                break
                            the_tuple = (array_5*densities[i], densities[i], basic_box_thickness,
                                         forward_slash_box_thickness, back_slash_box_thickness,
                                         hot_dog_box_thickness, hamburger_box_thickness)
                            matrix.append(the_tuple)

    return matrix


########################################################################################################################