ความเข้ม (Intensity)
ในบทนี้ เราจะทำงานกับภาพรังสีวิทยา ของมือ จากการแข่งขัน Radiological Society of North America ปี 2017 เนื้อเยื่อที่มีความหนาแน่นสูง เช่น กระดูก จะดูดซับรังสีเอกซ์ได้มาก ทำให้ค่าความเข้มของพิกเซลในบริเวณนั้นสูงตามไปด้วย ด้วยเหตุนี้ ภาพลักษณะนี้จึงนำไปใช้ทำนาย "อายุกระดูก" ของเด็กได้
เริ่มต้นด้วยการโหลดภาพและตรวจสอบช่วงความเข้มของภาพกัน
ชนิดข้อมูลของภาพจะกำหนดช่วงค่าความเข้มที่เป็นไปได้ เช่น จำนวนเต็มไม่มีเครื่องหมาย 8 บิต (uint8) มีค่าได้ตั้งแต่ 0 ถึง 255 การเพิ่ม colorbar จะช่วยเชื่อมโยงค่าเหล่านี้กับภาพที่แสดงผลได้อย่างชัดเจน
แบบฝึกหัดทุกข้อในบทนี้ใช้การ import ดังนี้:
import imageio.v2 as imageio
import numpy as np
import matplotlib.pyplot as plt
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python
คำแนะนำการฝึกหัด
- โหลดภาพ "hand-xray.jpg" โดยใช้
imageio - แสดงชนิดข้อมูล (
dtype) ค่าต่ำสุด (min()) และค่าสูงสุดของความเข้ม (max()) ของภาพ - แสดงภาพด้วย
plt.imshow()โดยกำหนดค่าต่ำสุด (0) และค่าสูงสุด (255) ของ colormap อย่างชัดเจนผ่าน argumentvminและvmax - เพิ่ม colorbar ด้วย
plt.colorbar()จากนั้นเรนเดอร์พล็อตด้วยฟังก์ชันformat_and_render_plot()— ส่วนนี้เตรียมไว้ให้แล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Load the hand radiograph
im = ____
print('Data type:', ____)
print('Min. value:', ____)
print('Max value:', ____)
# Plot the grayscale image
____
plt.colorbar()
format_and_render_plot()