mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-29 20:02:22 +08:00
74 lines
2.7 KiB
Python
74 lines
2.7 KiB
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from numpy.testing import assert_equal, assert_raises
|
|
|
|
from skimage.feature.util import (FeatureDetector, DescriptorExtractor,
|
|
_prepare_grayscale_input_2D,
|
|
_mask_border_keypoints, plot_matches)
|
|
|
|
|
|
def test_feature_detector():
|
|
assert_raises(NotImplementedError, FeatureDetector().detect, None)
|
|
|
|
|
|
def test_descriptor_extractor():
|
|
assert_raises(NotImplementedError, DescriptorExtractor().extract,
|
|
None, None)
|
|
|
|
|
|
def test_prepare_grayscale_input_2D():
|
|
assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 3, 3)))
|
|
assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 1)))
|
|
assert_raises(ValueError, _prepare_grayscale_input_2D, np.zeros((3, 1, 1)))
|
|
img = _prepare_grayscale_input_2D(np.zeros((3, 3)))
|
|
img = _prepare_grayscale_input_2D(np.zeros((3, 3, 1)))
|
|
img = _prepare_grayscale_input_2D(np.zeros((1, 3, 3)))
|
|
|
|
|
|
def test_mask_border_keypoints():
|
|
keypoints = np.array([[0, 0], [1, 1], [2, 2], [3, 3], [4, 4]])
|
|
assert_equal(_mask_border_keypoints((10, 10), keypoints, 0),
|
|
[1, 1, 1, 1, 1])
|
|
assert_equal(_mask_border_keypoints((10, 10), keypoints, 2),
|
|
[0, 0, 1, 1, 1])
|
|
assert_equal(_mask_border_keypoints((4, 4), keypoints, 2),
|
|
[0, 0, 1, 0, 0])
|
|
assert_equal(_mask_border_keypoints((10, 10), keypoints, 5),
|
|
[0, 0, 0, 0, 0])
|
|
assert_equal(_mask_border_keypoints((10, 10), keypoints, 4),
|
|
[0, 0, 0, 0, 1])
|
|
|
|
|
|
def test_plot_matches():
|
|
fig, ax = plt.subplots(nrows=1, ncols=1)
|
|
|
|
shapes = (((10, 10), (10, 10)),
|
|
((10, 10), (12, 10)),
|
|
((10, 10), (10, 12)),
|
|
((10, 10), (12, 12)),
|
|
((12, 10), (10, 10)),
|
|
((10, 12), (10, 10)),
|
|
((12, 12), (10, 10)))
|
|
|
|
keypoints1 = 10 * np.random.rand(10, 2)
|
|
keypoints2 = 10 * np.random.rand(10, 2)
|
|
idxs1 = np.random.randint(10, size=10)
|
|
idxs2 = np.random.randint(10, size=10)
|
|
matches = np.column_stack((idxs1, idxs2))
|
|
|
|
for shape1, shape2 in shapes:
|
|
img1 = np.zeros(shape1)
|
|
img2 = np.zeros(shape2)
|
|
plot_matches(ax, img1, img2, keypoints1, keypoints2, matches)
|
|
plot_matches(ax, img1, img2, keypoints1, keypoints2, matches,
|
|
only_matches=True)
|
|
plot_matches(ax, img1, img2, keypoints1, keypoints2, matches,
|
|
keypoints_color='r')
|
|
plot_matches(ax, img1, img2, keypoints1, keypoints2, matches,
|
|
matches_color='r')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
from numpy import testing
|
|
testing.run_module_suite()
|