import numpy as np def circular_kernel(r): kernel = np.zeros((r*2+1, r*2+1)) for row in range(kernel.shape[0]): for col in range(kernel.shape[1]): x, y = col,(r*2)-row if r**2>= (x-r)**2+(y-r)**2: kernel[row][col] = 1 return kernel def circular_kernel_pair(r_a, factor): m = circular_kernel(r_a) r_i = r_a//factor n = circular_kernel(r_i) m[r_a-r_i:r_a+1+r_i, r_a-r_i:r_a+1+r_i] -= n n[r_i, r_i] = 0 m[r_a, r_a] = 0 return (m, n)