ตรวจจับขอบ (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()