Bắt đầu ngayBắt đầu miễn phí

Phát hiện biên (2)

Phát hiện biên có thể được thực hiện theo nhiều trục rồi gộp lại thành một giá trị biên duy nhất. Với ảnh 2D, các "bản đồ biên" theo phương ngang và dọc có thể được kết hợp bằng định lý Pythagoras:

$$z = \sqrt{x^2 + y^2}$$

Một bộ phát hiện biên phổ biến là bộ lọc Sobel. Bộ lọc Sobel gán trọng số cao hơn cho các điểm ảnh ở giữa của bộ phát hiện:

weights = [[ 1,  2,  1], 
           [ 0,  0,  0],
           [-1, -2, -1]]

Trong bài này, hãy cải thiện kết quả phát hiện trước đó bằng cách gộp kết quả của hai ảnh đã lọc Sobel thành một bản đồ biên tổng hợp.

Bài tập này là một phần của khóa học

Phân tích ảnh Y sinh học bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Áp dụng ndi.sobel() lên im theo trục thứ nhất và thứ hai.
  • Tính độ lớn biên tổng thể bằng định lý Pythagoras. Dùng np.sqrt()np.square().
  • Hiển thị ảnh độ lớn. Dùng thang màu xám và đặt vmax75.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Apply Sobel filter along both axes
sobel_ax0 = ndi.sobel(____, axis=____)
sobel_ax1 = ____

# Calculate edge magnitude 
edges = ____

# Plot edge magnitude
plt.imshow(____, ____, ____)
format_and_render_plot()
Chỉnh sửa và Chạy Mã