|
import matplotlib.pyplot as plt |
|
import numpy as np |
|
from scipy import signal |
|
|
|
|
|
def basic_box_array(image_size, thickness): |
|
A = np.ones((int(image_size), int(image_size))) |
|
A[1:-1, 1:-1] = 0 |
|
A = add_thickness(A, thickness) |
|
return A |
|
|
|
|
|
def back_slash_array(image_size, thickness): |
|
A = np.zeros((int(image_size), int(image_size))) |
|
np.fill_diagonal(A, 1) |
|
A = add_thickness(A, thickness) |
|
return A |
|
|
|
|
|
def forward_slash_array(image_size, thickness): |
|
A = np.zeros((int(image_size), int(image_size))) |
|
np.fill_diagonal(np.fliplr(A), 1) |
|
A = add_thickness(A, thickness) |
|
return A |
|
|
|
|
|
def hot_dog_array(image_size, thickness): |
|
|
|
A = np.zeros((int(image_size), int(image_size))) |
|
A[:, np.floor((image_size - 1) / 2).astype(int)] = 1 |
|
A[:, np.ceil((image_size - 1) / 2).astype(int)] = 1 |
|
A = add_thickness(A, thickness) |
|
return A |
|
|
|
|
|
def hamburger_array(image_size, thickness): |
|
|
|
A = np.zeros((int(image_size), int(image_size))) |
|
A[np.floor((image_size - 1) / 2).astype(int), :] = 1 |
|
A[np.ceil((image_size - 1) / 2).astype(int), :] = 1 |
|
A = add_thickness(A, thickness) |
|
return A |
|
|
|
|
|
def add_thickness(array_original, thickness): |
|
A = array_original |
|
if thickness == 0: |
|
A[A > 0] = 0 |
|
else: |
|
filter_size = 2*thickness - 1 |
|
filter = np.zeros((filter_size, filter_size)) |
|
filter[np.floor((filter_size - 1) / 2).astype(int), :] = filter[:, np.floor((filter_size - 1) / 2).astype(int)] =1 |
|
filter[np.ceil((filter_size - 1) / 2).astype(int), :] = filter[:, np.ceil((filter_size - 1) / 2).astype(int)] = 1 |
|
convolution = signal.convolve2d(A, filter, mode='same') |
|
A = np.where(convolution <= 1, convolution, 1) |
|
return A |
|
|
|
|
|
basic = basic_box_array(10, 1) |
|
densitys = [0.25,0,75,1] |
|
|
|
|
|
multiple = np.array([basic]*4, order='C') |
|
|
|
|
|
|
|
|
|
|
|
print(multiple) |
|
print(np.shape(multiple)) |
|
multiple = np.multiply(densitys, multiple) |
|
print(np.shape(multiple)) |
|
|
|
plt.imshow((multiple[0])) |
|
plt.show() |
|
|
|
|
|
|