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

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

ฟิลเตอร์สามารถทำหน้าที่เป็น "ตัวตรวจจับ" ได้เช่นกัน หากส่วนใดของภาพตรงกับรูปแบบค่าน้ำหนัก ค่าที่ได้จะสูงมาก (หรือต่ำมาก)

ในการตรวจจับขอบ รูปแบบที่ใช้คือการเปลี่ยนแปลงความเข้มตามแนวระนาบ ฟิลเตอร์ที่ตรวจจับขอบแนวนอนอาจมีลักษณะดังนี้:

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

ในแบบฝึกหัดนี้ ให้สร้างตัวตรวจจับขอบแนว ตั้ง แล้วทดสอบประสิทธิภาพกับภาพเอกซเรย์มือ (im)

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

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

ดูคอร์ส

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

  • สร้างอาร์เรย์ค่าน้ำหนักฟิลเตอร์ขนาด 3x3 ที่ตรวจจับการเปลี่ยนแปลงความเข้มจากซ้ายไปขวา โดยใช้เฉพาะค่า 1, 0 และ -1
  • Convolve im กับตัวตรวจจับขอบ
  • พล็อตขอบแนวนอนด้วย colormap แบบ seismic โดยใช้ vmin=-150 และ vmax=150 เพื่อปรับสเกลของ colormap
  • เพิ่ม colorbar แล้วแสดงผลลัพธ์

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

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

# Set weights to detect vertical edges
weights = [[____], [____], [____]]

# Convolve "im" with filter weights
edges = ____

# Draw the image in color
plt.imshow(____, ____, vmin=-150, vmax=150)
____
format_and_render_plot()
แก้ไขและรันโค้ด