Nicha1234 commited on
Commit
fe16e0a
·
verified ·
1 Parent(s): de49d89

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -11
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(-112, 112, 224)
104
- y = np.linspace(112, -112, 224)
105
  X, Y = np.meshgrid(x, y)
106
 
107
- # ผสมผสานคลื่นแนวั้งแะแนวนนเพื่อใหเกิดายริดคลื่น 2D ที่ถูกต้อ
108
- freq_x = 8 / 224.0
109
- freq_y = 8 / 224.0
110
- wave = np.cos(2 * np.pi * freq_x * X) * np.cos(2 * np.pi * freq_y * Y)
 
111
 
112
- # แสดงรูปื่นในกรอบสี่เหลี่ยม
113
- ax.imshow(wave, cmap='gray', extent=[-1, 1, -1, 1], origin='upper')
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
- ข้อมูล in k-space มักจะถูกนำมาแสดงผลในรูปแบบตารางสี่เหลี่ยม (Grid) โดยมีแกนหลักคือ **kx (แนวนอน - Frequency)** และ **ky (แนวตั้ง - Phase)** จุดสำคัญคือ **แกน kx และ ky เหล่านี้ ไม่ได้บอกตำแหน่งพิกัดในภาพอวัยวะ** แต่มันคือแกนที่บอกถึงลักษณะของ **"ความถี่เชิงพื้นที่"** ที่เป็นคลื่น (Simusoidal wave) ด้วยเหตุนี้ **จุดแต่ละจุดบน K-space จึงไม่ได้จับคู่แบบ 1 ต่อ 1 กับพิกเซลบนภาพ MRI** (เช่น จุดมุมซ้ายบนของ K-space ไม่ได้สร้างภาพมุมซ้ายบนของอวัยวะ)
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])