12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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
|