mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-28 15:57:07 +08:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
"""
|
|
=========================
|
|
CenSurE Feature Detection
|
|
=========================
|
|
|
|
In this example we detect and plot the CenSurE (Center Surround Extrema)
|
|
features at various scales using Difference of Boxes, Octagon and Star shaped
|
|
bi-level filters.
|
|
|
|
"""
|
|
|
|
from skimage.feature import keypoints_censure
|
|
from skimage.data import lena
|
|
from skimage.color import rgb2gray
|
|
import matplotlib.pyplot as plt
|
|
|
|
# Initializing the parameters for Censure keypoints
|
|
img = lena()
|
|
gray_img = rgb2gray(img)
|
|
min_scale = 2
|
|
max_scale = 6
|
|
non_max_threshold = 0.15
|
|
line_threshold = 10
|
|
|
|
|
|
_, ax = plt.subplots(nrows=(max_scale - min_scale - 1), ncols=3,
|
|
figsize=(6, 6))
|
|
plt.subplots_adjust(wspace=0.02, hspace=0.02, top=0.94,
|
|
bottom=0.02, left=0.06, right=0.98)
|
|
|
|
# Detecting Censure keypoints for the following filters
|
|
for col, mode in enumerate(['dob', 'octagon', 'star']):
|
|
|
|
ax[0, col].set_title(mode.upper(), fontsize=12)
|
|
|
|
keypoints, scales = keypoints_censure(gray_img, min_scale, max_scale,
|
|
mode, non_max_threshold,
|
|
line_threshold)
|
|
|
|
# Plotting Censure features at all the scales
|
|
for row, scale in enumerate(range(min_scale + 1, max_scale)):
|
|
mask = scales == scale
|
|
x = keypoints[mask, 1]
|
|
y = keypoints[mask, 0]
|
|
s = 0.5 * 2 ** (scale + min_scale + 1)
|
|
ax[row, col].imshow(img)
|
|
ax[row, col].scatter(x, y, s, facecolors='none', edgecolors='b')
|
|
ax[row, col].set_xticks([])
|
|
ax[row, col].set_yticks([])
|
|
ax[row, col].axis((0, img.shape[1], img.shape[0], 0))
|
|
if col == 0:
|
|
ax[row, col].set_ylabel('Scale %d' % scale, fontsize=12)
|
|
|
|
plt.show()
|