Scikit-learn, thường gọi là sklearn, là thư viện Python dùng triển khai thuật toán học máy. Là thư viện mã nguồn mở, dùng miễn phí. Xây dựng trên NumPy, SciPy, Matplotlib.
Phương pháp 'marching squares' (vuông tiến quân) dùng để tìm đường viền trong hình ảnh. Hàm find_contours trong lớp measure của thư viện skimage được dùng. Trong này, giá trị trong mảng được nội suy tuyến tính. Cách này độ chính xác đường viền trong hình ảnh đầu ra tốt hơn. Nếu đường viền trong hình ảnh giao nhau, đường viền mở, ngược lại thì khép kín.
Hãy hiểu cách tìm đường viền hình ảnh bằng scikit-learn:
Ví dụ
import numpy as np
import matplotlib.pyplot as plt
from skimage import measure
x, y = np.ogrid[-6.7:np.pi:215j, -1.2:np.pi:215j]
r = np.sin(np.exp((np.sin(x)**3 + np.cos(y)**2)))
contours = measure.find_contours(r, 0.8)
fig, ax = plt.subplots()
ax.imshow(r, cmap=plt.cm.gray)
for contour in contours:
ax.plot(contour[:, 1], contour[:, 0], linewidth=2)
ax.axis('image')
ax.set_xticks([])
ax.set_yticks([])
plt.show()
Đầu ra

Giải thích
- Nhập các gói thư viện cần thiết.
- Tạo dữ liệu với gói NumPy.
- Dùng hàm
find_contoursxác định đường viền hình ảnh. - Dùng
subplothiển thị hình gốc và hình có đường viền trên console.
Lưu ý quan trọng: Ví dụ dùng skimage.measure.find_contours (thư viện scikit-image), không phải scikit-learn (sklearn). scikit-learn không có module xử lý hình ảnh. scikit-image (skimage) là thư viện riêng cho xử lý ảnh.
Tham số quan trọng: find_contours(array, level) - level là giá trị ngưỡng (iso-value) để tìm đường viền.