import numpy as np def averagePooling(image, block_size): image_height, image_width = image.shape block_height, block_width = block_size num_blocks_height = image_height // block_height num_blocks_width = image_width // block_width averaged_image = np.zeros_like(image) for i in range(num_blocks_height): for j in range(num_blocks_width): row_start = i * block_height row_end = (i + 1) * block_height col_start = j * block_width col_end = (j + 1) * block_width block_mean = np.mean(image[row_start:row_end, col_start:col_end]) averaged_image[row_start:row_end, col_start:col_end] = block_mean return averaged_image def maxPooling(image, block_size): image_height, image_width = image.shape block_height, block_width = block_size num_blocks_height = image_height // block_height num_blocks_width = image_width // block_width maxed_image = np.zeros_like(image) for i in range(num_blocks_height): for j in range(num_blocks_width): row_start = i * block_height row_end = (i + 1) * block_height col_start = j * block_width col_end = (j + 1) * block_width block_max = np.max(image[row_start:row_end, col_start:col_end]) maxed_image[row_start:row_end, col_start:col_end] = block_max return maxed_image def xyOverlap(targetBoundingBox, otherBoundingBox): x_overlap = max(0, min(targetBoundingBox[0] + targetBoundingBox[2], otherBoundingBox[0] + otherBoundingBox[2]) - max(targetBoundingBox[0], otherBoundingBox[0])) y_overlap = max(0, min(targetBoundingBox[1] + targetBoundingBox[3], otherBoundingBox[1] + otherBoundingBox[3]) - max(targetBoundingBox[1], otherBoundingBox[1])) overlap_area = x_overlap * y_overlap target_area = targetBoundingBox[2] * targetBoundingBox[3] if (overlap_area / target_area) > 0.3: result = 1 else: result = 0 return result