def test_constrain_landmarks(): breaking_bad = mio.import_builtin_asset('breakingbad.jpg').as_masked() breaking_bad = breaking_bad.crop_to_landmarks(boundary=20) breaking_bad = breaking_bad.resize([50, 50]) breaking_bad.constrain_mask_to_landmarks() hog_b = hog(breaking_bad, mode='sparse') x = np.where(hog_b.landmarks['PTS'].lms.points[:, 0] > hog_b.shape[1] - 1) y = np.where(hog_b.landmarks['PTS'].lms.points[:, 0] > hog_b.shape[0] - 1) assert_allclose(len(x[0]) + len(y[0]), 12) hog_b = hog(breaking_bad, mode='sparse') hog_b.constrain_landmarks_to_bounds() x = np.where(hog_b.landmarks['PTS'].lms.points[:, 0] > hog_b.shape[1] - 1) y = np.where(hog_b.landmarks['PTS'].lms.points[:, 0] > hog_b.shape[0] - 1) assert_allclose(len(x[0]) + len(y[0]), 0)
def test_windowiterator_hog_no_padding(): n_cases = 5 image_width = np.random.randint(50, 250, [n_cases, 1]) image_height = np.random.randint(50, 250, [n_cases, 1]) window_step_horizontal = np.random.randint(1, 10, [n_cases, 1]) window_step_vertical = np.random.randint(1, 10, [n_cases, 1]) window_width = np.random.randint(3, 20, [n_cases, 1]) window_height = np.random.randint(3, 20, [n_cases, 1]) for i in range(n_cases): image = MaskedImage(np.random.randn(1, image_height[i, 0], image_width[i, 0])) hog_img = hog(image, mode='dense', cell_size=3, block_size=1, window_height=window_height[i, 0], window_width=window_width[i, 0], window_unit='pixels', window_step_vertical=window_step_vertical[i, 0], window_step_horizontal=window_step_horizontal[i, 0], window_step_unit='pixels', padding=False) n_windows_horizontal = len(range(window_width[i, 0] - 1, image_width[i, 0], window_step_horizontal[i, 0])) n_windows_vertical = len(range(window_height[i, 0] - 1, image_height[i, 0], window_step_vertical[i, 0])) assert_allclose(hog_img.shape, (n_windows_vertical, n_windows_horizontal))
def test_windowiterator_hog_no_padding(): n_cases = 5 image_width = np.random.randint(50, 250, [n_cases, 1]) image_height = np.random.randint(50, 250, [n_cases, 1]) window_step_horizontal = np.random.randint(1, 10, [n_cases, 1]) window_step_vertical = np.random.randint(1, 10, [n_cases, 1]) window_width = np.random.randint(3, 20, [n_cases, 1]) window_height = np.random.randint(3, 20, [n_cases, 1]) for i in range(n_cases): image = MaskedImage( np.random.randn(1, image_height[i, 0], image_width[i, 0])) hog_img = hog(image, mode='dense', cell_size=3, block_size=1, window_height=window_height[i, 0], window_width=window_width[i, 0], window_unit='pixels', window_step_vertical=window_step_vertical[i, 0], window_step_horizontal=window_step_horizontal[i, 0], window_step_unit='pixels', padding=False) n_windows_horizontal = len( range(window_width[i, 0] - 1, image_width[i, 0], window_step_horizontal[i, 0])) n_windows_vertical = len( range(window_height[i, 0] - 1, image_height[i, 0], window_step_vertical[i, 0])) assert_allclose(hog_img.shape, (n_windows_vertical, n_windows_horizontal))
def test_hog_channels_zhuramanan(): n_cases = 3 cell_size = np.random.randint(2, 10, [n_cases]) channels = np.random.randint(1, 4, [n_cases]) for i in range(n_cases): image = MaskedImage(np.random.randn(channels[i], 40, 40)) win_width = np.random.randint(3 * cell_size[i], 40, 1) win_height = np.random.randint(3 * cell_size[i], 40, 1) hog_img = hog(image, mode='dense', algorithm='zhuramanan', cell_size=cell_size[i], window_height=win_height[0], window_width=win_width[0], window_unit='pixels', window_step_vertical=3, window_step_horizontal=3, window_step_unit='pixels', padding=True, verbose=True) length_per_block = 31 n_blocks_horizontal = np.floor((win_width[0] / cell_size[i]) + 0.5) - 2 n_blocks_vertical = np.floor((win_height[0] / cell_size[i]) + 0.5) - 2 n_channels = n_blocks_horizontal * n_blocks_vertical * length_per_block assert_allclose(hog_img.n_channels, n_channels)
def test_hog_channels_dalaltriggs(): n_cases = 3 cell_size = np.random.randint(1, 10, [n_cases, 1]) block_size = np.random.randint(1, 3, [n_cases, 1]) num_bins = np.random.randint(7, 9, [n_cases, 1]) channels = np.random.randint(1, 4, [n_cases, 1]) for i in range(n_cases): image = MaskedImage(np.random.randn(channels[i, 0], 40, 40)) block_size_pixels = cell_size[i, 0] * block_size[i, 0] window_width = np.random.randint(block_size_pixels, 40, 1) window_height = np.random.randint(block_size_pixels, 40, 1) hog_img = hog(image, mode='dense', algorithm='dalaltriggs', cell_size=cell_size[i, 0], block_size=block_size[i, 0], num_bins=num_bins[i, 0], window_height=window_height[0], window_width=window_width[0], window_unit='pixels', window_step_vertical=3, window_step_horizontal=3, window_step_unit='pixels', padding=True) length_per_block = block_size[i, 0] * block_size[i, 0] * num_bins[i, 0] n_blocks_horizontal = len( range(block_size_pixels - 1, window_width[0], cell_size[i, 0])) n_blocks_vertical = len( range(block_size_pixels - 1, window_height[0], cell_size[i, 0])) n_channels = n_blocks_horizontal * n_blocks_vertical * length_per_block assert_allclose(hog_img.n_channels, n_channels)
def test_hog_channels_zhuramanan(): n_cases = 3 cell_size = np.random.randint(2, 10, [n_cases]) channels = np.random.randint(1, 4, [n_cases]) for i in range(n_cases): image = MaskedImage(np.random.randn(channels[i], 40, 40)) win_width = np.random.randint(3 * cell_size[i], 40, 1) win_height = np.random.randint(3 * cell_size[i], 40, 1) hog_img = hog( image, mode="dense", algorithm="zhuramanan", cell_size=cell_size[i], window_height=win_height[0], window_width=win_width[0], window_unit="pixels", window_step_vertical=3, window_step_horizontal=3, window_step_unit="pixels", padding=True, verbose=True, ) length_per_block = 31 n_blocks_horizontal = np.floor((win_width[0] / cell_size[i]) + 0.5) - 2 n_blocks_vertical = np.floor((win_height[0] / cell_size[i]) + 0.5) - 2 n_channels = n_blocks_horizontal * n_blocks_vertical * length_per_block assert_allclose(hog_img.n_channels, n_channels)
def test_hog_channels_dalaltriggs(): n_cases = 3 cell_size = np.random.randint(1, 10, [n_cases, 1]) block_size = np.random.randint(1, 3, [n_cases, 1]) num_bins = np.random.randint(7, 9, [n_cases, 1]) channels = np.random.randint(1, 4, [n_cases, 1]) for i in range(n_cases): image = MaskedImage(np.random.randn(channels[i, 0], 40, 40)) block_size_pixels = cell_size[i, 0] * block_size[i, 0] window_width = np.random.randint(block_size_pixels, 40, 1) window_height = np.random.randint(block_size_pixels, 40, 1) hog_img = hog( image, mode="dense", algorithm="dalaltriggs", cell_size=cell_size[i, 0], block_size=block_size[i, 0], num_bins=num_bins[i, 0], window_height=window_height[0], window_width=window_width[0], window_unit="pixels", window_step_vertical=3, window_step_horizontal=3, window_step_unit="pixels", padding=True, ) length_per_block = block_size[i, 0] * block_size[i, 0] * num_bins[i, 0] n_blocks_horizontal = len(range(block_size_pixels - 1, window_width[0], cell_size[i, 0])) n_blocks_vertical = len(range(block_size_pixels - 1, window_height[0], cell_size[i, 0])) n_channels = n_blocks_horizontal * n_blocks_vertical * length_per_block assert_allclose(hog_img.n_channels, n_channels)
def blue_peter(): import menpo.io as mio import h5it from menpo.visualize.image import glyph from menpo.feature import hog import matplotlib.pyplot as plt # Loading the pre-built HOG AAM import cPickle as pickle with open('/Users/pts08/hog_lfpw_aam.pkl', 'rb') as f: hog_aam = pickle.load(f) #hog_aam = h5it.load('/Users/pts08/sparse_hog.hdf5') print('Here is one I made earlier!') bp = mio.import_image('blue_peter.jpg') hog_blue_peter = hog(bp) plt.figure() plt.subplot(121) bp.view() plt.axis('off') plt.gcf().set_size_inches(11, 11) plt.title('RGB') plt.subplot(122) glyph(hog_blue_peter).view() plt.axis('off') plt.gcf().set_size_inches(11, 11) plt.title('HOG') return hog_aam
def test_imagewindowiterator_hog_padding(): n_cases = 5 image_width = np.random.randint(50, 250, [n_cases, 1]) image_height = np.random.randint(50, 250, [n_cases, 1]) window_step_horizontal = np.random.randint(1, 10, [n_cases, 1]) window_step_vertical = np.random.randint(1, 10, [n_cases, 1]) for i in range(n_cases): image = MaskedImage(np.random.randn(1, image_height[i, 0], image_width[i, 0])) hog_im = hog(image, mode='dense', window_step_vertical=window_step_vertical[i, 0], window_step_horizontal=window_step_horizontal[i, 0], window_step_unit='pixels', padding=True) n_windows_horizontal = len(range(0, image_width[i, 0], window_step_horizontal[i, 0])) n_windows_vertical = len(range(0, image_height[i, 0], window_step_vertical[i, 0])) assert_allclose(hog_im.shape, (n_windows_vertical, n_windows_horizontal))
def test_hog_channels_zhuramanan(): n_cases = 3 cell_size = np.random.randint(2, 10, [n_cases, 1]) channels = np.random.randint(1, 4, [n_cases, 1]) for i in range(n_cases): image = MaskedImage(np.random.randn(40, 40, channels[i, 0])) window_width = np.random.randint(3 * cell_size[i, 0], 40, 1) window_height = np.random.randint(3 * cell_size[i, 0], 40, 1) hog_img = hog(image, mode='dense', algorithm='zhuramanan', cell_size=cell_size[i, 0], window_height=window_height[0], window_width=window_width[0], window_unit='pixels', window_step_vertical=3, window_step_horizontal=3, window_step_unit='pixels', padding=True) length_per_block = 31 n_blocks_horizontal = round(np.float(window_width[0]) / np.float(cell_size[i, 0])) - 2 n_blocks_vertical = round(np.float(window_height[0]) / np.float(cell_size[i, 0])) - 2 n_channels = n_blocks_horizontal * n_blocks_vertical * length_per_block assert_allclose(hog_img.n_channels, n_channels)
def hog_svs_shape(pc, xr, yr, groups=None): store_image = hog(svs_shape(pc, xr, yr, groups)) return store_image
def float32_hog(x): return hog(x).astype(np.float32)