mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-30 05:09:30 +08:00
add example for cicular hough transform
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
# Author: Francois Boulogne
|
||||
# License: GPL
|
||||
|
||||
"""
|
||||
========================
|
||||
Circular Hough Transform
|
||||
========================
|
||||
|
||||
|
||||
|
||||
"""
|
||||
|
||||
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.patches as mpatches
|
||||
|
||||
from skimage import data, filter
|
||||
from skimage.transform import hough_circle
|
||||
from skimage.feature import peak_local_max
|
||||
|
||||
# Load picture and detect edges
|
||||
image = data.coins()[0:95, 70:370]
|
||||
edges = filter.canny(filter.sobel(image), sigma=2.8)
|
||||
|
||||
|
||||
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
|
||||
ax.imshow(image, cmap=plt.cm.gray)
|
||||
|
||||
# Detect two radii
|
||||
radii = np.array([21, 25])
|
||||
hough_res = hough_circle(edges, radii)
|
||||
|
||||
for radius, h in zip(radii, hough_res):
|
||||
# For each radius, keep two circles
|
||||
maxima = peak_local_max(h, num_peaks=2)
|
||||
for maximum in maxima:
|
||||
center_x, center_y = maximum - radii.max()
|
||||
circ = mpatches.Circle((center_y, center_x), radius,
|
||||
fill=False, edgecolor='red', linewidth=2)
|
||||
ax.add_patch(circ)
|
||||
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user