Update app.py
Browse files
app.py
CHANGED
|
@@ -95,22 +95,23 @@ def get_image_from_plot(fig):
|
|
| 95 |
buf.seek(0)
|
| 96 |
return Image.open(buf)
|
| 97 |
|
| 98 |
-
# สร้างภาพองค์ประกอบ K-Space
|
| 99 |
def draw_kspace_diagram():
|
| 100 |
fig, ax = plt.subplots(figsize=(6, 6))
|
| 101 |
|
| 102 |
-
# สร้าง
|
| 103 |
-
x = np.linspace(-
|
| 104 |
-
y = np.linspace(
|
| 105 |
X, Y = np.meshgrid(x, y)
|
| 106 |
|
| 107 |
-
#
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
|
|
|
| 111 |
|
| 112 |
-
# แสดงรูป
|
| 113 |
-
ax.imshow(
|
| 114 |
|
| 115 |
# ตีกรอบสี่เหลี่ยมล้อมรอบพื้นที่สัญญาณ
|
| 116 |
rect = plt.Rectangle((-1, -1), 2, 2, fill=False, edgecolor='black', lw=2.5)
|
|
@@ -274,7 +275,7 @@ with col_main:
|
|
| 274 |
|
| 275 |
st.markdown("## 🧩 องค์ประกอบของ K-Space")
|
| 276 |
st.markdown("""
|
| 277 |
-
ข้อมูล
|
| 278 |
""")
|
| 279 |
|
| 280 |
_, col_img_center, _ = st.columns([2.5, 3, 2.5])
|
|
|
|
| 95 |
buf.seek(0)
|
| 96 |
return Image.open(buf)
|
| 97 |
|
| 98 |
+
# สร้างภาพองค์ประกอบ K-Space ใหม่จำลองข้อมูลจริงที่มีจุดสว่างและแฉกตรงกลางพร้อมลูกศรบอกแกน
|
| 99 |
def draw_kspace_diagram():
|
| 100 |
fig, ax = plt.subplots(figsize=(6, 6))
|
| 101 |
|
| 102 |
+
# สร้างพิกัดแนวแกน
|
| 103 |
+
x = np.linspace(-12, 12, 224)
|
| 104 |
+
y = np.linspace(12, -12, 224)
|
| 105 |
X, Y = np.meshgrid(x, y)
|
| 106 |
|
| 107 |
+
# ใช้ฟังก์ชันทางคณิตศาสตร์จำลองรูปแบบข้อมูลดิบภายในเมทริกซ์ K-Space จริง
|
| 108 |
+
k_sim = np.abs(np.sinc(X/2.5) * np.sinc(Y/2.5))
|
| 109 |
+
# ใส่สัญญาณรบกวนเบาๆ ให้ดูสมจริงเสมือนภาพจากเครื่องสแกน
|
| 110 |
+
k_sim += np.random.uniform(0.02, 0.08, X.shape)
|
| 111 |
+
k_sim = np.clip(k_sim, 0, 1)
|
| 112 |
|
| 113 |
+
# แสดงรูปข้อมูลดิบในกรอบสี่เหลี่ยม
|
| 114 |
+
ax.imshow(k_sim, cmap='gray', extent=[-1, 1, -1, 1], origin='upper')
|
| 115 |
|
| 116 |
# ตีกรอบสี่เหลี่ยมล้อมรอบพื้นที่สัญญาณ
|
| 117 |
rect = plt.Rectangle((-1, -1), 2, 2, fill=False, edgecolor='black', lw=2.5)
|
|
|
|
| 275 |
|
| 276 |
st.markdown("## 🧩 องค์ประกอบของ K-Space")
|
| 277 |
st.markdown("""
|
| 278 |
+
ข้อมูลใน k-space มักจะถูกนำมาแสดงผลในรูปแบบตารางสี่เหลี่ยม (Grid) โดยมีแกนหลักคือ **kx (แนวนอน - Frequency)** และ **ky (แนวตั้ง - Phase)** จุดสำคัญคือ **แกน kx และ ky เหล่านี้ ไม่ได้บอกตำแหน่งพิกัดในภาพอวัยวะ** แต่มันคือแกนที่บอกถึงลักษณะของ **"ความถี่เชิงพื้นที่"** ที่เป็นคลื่น (Sinusoidal wave) ด้วยเหตุนี้ **จุดแต่ละจุดบน K-space จึงไม่ได้จับคู่แบบ 1 ต่อ 1 กับพิกเซลบนภาพ MRI** (เช่น จุดมุมซ้ายบนของ K-space ไม่ได้สร้างภาพมุมซ้ายบนของอวัยวะ)
|
| 279 |
""")
|
| 280 |
|
| 281 |
_, col_img_center, _ = st.columns([2.5, 3, 2.5])
|