เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ตรวจจับขอบ (2)

การตรวจจับขอบสามารถทำได้ตามหลายแกน แล้วนำผลลัพธ์มารวมกันเป็นค่าขอบเดียว สำหรับภาพ 2D "แผนที่ขอบ" แนวนอนและแนวตั้งสามารถรวมกันได้โดยใช้ทฤษฎีบทพีทาโกรัส:

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

ตัวกรองขอบที่นิยมใช้กันมากคือ Sobel filter ซึ่งให้น้ำหนักพิเศษแก่พิกเซลตรงกลางของตัวตรวจจับ:

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

ในแบบฝึกหัดนี้ ให้พัฒนาการตรวจจับขอบจากครั้งก่อนให้ดีขึ้น โดยนำผลลัพธ์จากภาพที่ผ่านฟิลเตอร์ Sobel สองแกนมารวมกันเป็นแผนที่ขอบแบบผสม

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใช้ ndi.sobel() กับ im ตามแกนที่หนึ่งและแกนที่สอง
  • คำนวณขนาดของขอบโดยรวมโดยใช้ทฤษฎีบทพีทาโกรัส โดยใช้ np.sqrt() และ np.square()
  • แสดงภาพขนาดขอบ โดยใช้ colormap แบบ grayscale และตั้งค่า vmax เป็น 75

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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()
แก้ไขและรันโค้ด