การนำ mask ไปใช้
แม้ mask จะเป็นแบบไบนารี แต่สามารถ นำไปใช้ กับภาพเพื่อกรองพิกเซลที่ mask เป็น False ออกได้
ฟังก์ชัน where() ของ NumPy เป็นวิธีที่ยืดหยุ่นในการนำ mask ไปใช้ โดยรับอาร์กิวเมนต์สามตัว ดังนี้
np.where(condition, x, y)
condition, x และ y สามารถเป็นอาร์เรย์หรือค่าเดี่ยวก็ได้ ซึ่งช่วยให้ส่งค่าของภาพต้นฉบับผ่านได้ตามปกติ ขณะที่กำหนดค่าของพิกเซลที่ถูก mask เป็น 0
มาฝึกการนำ mask ไปใช้โดยเลือกพิกเซลที่มีลักษณะคล้ายกระดูกจากภาพเอกซเรย์มือ (im)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python
คำแนะนำการฝึกหัด
- สร้าง bone mask แบบ Boolean โดยเลือกพิกเซลที่มีค่ามากกว่าหรือเท่ากับ 145
- นำ mask ไปใช้กับภาพโดยใช้
np.where()โดยกำหนดให้พิกเซลที่อยู่นอก mask มีค่าเป็น0 - สร้างฮิสโตแกรมของภาพที่ผ่าน mask แล้ว โดยใช้อาร์กิวเมนต์ต่อไปนี้เพื่อเลือกเฉพาะพิกเซลที่ไม่ใช่ศูนย์:
min=1,max=255,bins=255 - พล็อตภาพที่ผ่าน mask และฮิสโตแกรม ซึ่งได้ดำเนินการไว้ให้แล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import SciPy's "ndimage" module
____
# Screen out non-bone pixels from "im"
mask_bone = ____
im_bone = np.where(____, ____, ____)
# Get the histogram of bone intensities
hist = ____
# Plot masked image and histogram
fig, axes = plt.subplots(2,1)
axes[0].imshow(im_bone)
axes[1].plot(hist)
format_and_render_plot()