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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -7
app.py CHANGED
@@ -81,7 +81,7 @@ def format_kspace_display(k_data):
81
  c = 255.0 / np.log(1 + max_val)
82
  log_img = c * np.log(1 + k_mag)
83
 
84
- # ใช้ Gamma correction เสริมความสว่างให้เห็นวงกลมฟิลเตอร์ชัดเจน
85
  log_norm = (log_img - np.min(log_img)) / (np.max(log_img) - np.min(log_img) + 1e-8)
86
  log_boosted = np.power(log_norm, 0.3)
87
  return log_boosted
@@ -95,23 +95,24 @@ def get_image_from_plot(fig):
95
  buf.seek(0)
96
  return Image.open(buf)
97
 
98
- # สร้างภาพองค์ประกอบ K-Space แบบมีลวดลายคลื่น 2D และลูบอแกตาตัวอย่
99
  def draw_kspace_diagram():
100
  fig, ax = plt.subplots(figsize=(6, 6))
101
 
102
- # สร้างตารางและลวดลายคลื่น 2D ทแยงมุมต็พื้นี่ล่องสี่เหลี่ยม
103
  x = np.linspace(-112, 112, 224)
104
  y = np.linspace(112, -112, 224)
105
  X, Y = np.meshgrid(x, y)
106
 
 
107
  freq_x = 8 / 224.0
108
  freq_y = 8 / 224.0
109
- wave = np.cos(2 * np.pi * (freq_x * X + freq_y * Y))
110
 
111
  # แสดงรูปคลื่นในกรอบสี่เหลี่ยม
112
  ax.imshow(wave, cmap='gray', extent=[-1, 1, -1, 1], origin='upper')
113
 
114
- # ตีกรอบสี่เหลี่ยมทับรอบนอก
115
  rect = plt.Rectangle((-1, -1), 2, 2, fill=False, edgecolor='black', lw=2.5)
116
  ax.add_patch(rect)
117
 
@@ -273,7 +274,7 @@ with col_main:
273
 
274
  st.markdown("## 🧩 องค์ประกอบของ K-Space")
275
  st.markdown("""
276
- ข้อมูลใน k-space มักจะถูกนำมาแสดงผลในรูปแบบตารางสี่เหลี่ยม (Grid) โดยมีแกนหลักคือ **kx (แนวนอน - Frequency)** และ **ky (แนวตั้ง - Phase)** จุดสำคัญคือ **แกน kx และ ky เหล่านี้ ไม่ได้บอกตำแหน่งพิกัดในภาพอวัยวะ** แต่มันคือแกนที่บอกถึงลักษณะของ **"ความถี่เชิงพื้นที่"** ที่เป็นคลื่น (Sinusoidal wave) ด้วยเหตุนี้ **จุดแต่ละจุดบน K-space จึงไม่ได้จับคู่แบบ 1 ต่อ 1 กับพิกเซลบนภาพ MRI** (เช่น จุดมุมซ้ายบนของ K-space ไม่ได้สร้างภาพมุมซ้ายบนของอวัยวะ)
277
  """)
278
 
279
  _, col_img_center, _ = st.columns([2.5, 3, 2.5])
@@ -414,7 +415,6 @@ with col_main:
414
 
415
  _, col_fslide, _ = st.columns([1.5, 5, 1.5])
416
  with col_fslide:
417
- # ปรับขยายขอบเขตรัศมีสูงสุดเป็น 160 เพื่อให้คลุมครบทั้ง 4 มุมจอเมื่อเปิดสุดตามหลักคณิตศาสตร์
418
  if mode == "Low frequency":
419
  radius = st.slider("ปรับระดับความถี่ที่ยอมให้ผ่าน (รัศมีจากตรงกลาง)", 1, 160, 160)
420
  else:
 
81
  c = 255.0 / np.log(1 + max_val)
82
  log_img = c * np.log(1 + k_mag)
83
 
84
+ # ใช้ Gamma correction เสริมความสว่างให้เห็นวงกลมฟิลเตอร์ชัดเจนทั่วทั้งพื้นที่
85
  log_norm = (log_img - np.min(log_img)) / (np.max(log_img) - np.min(log_img) + 1e-8)
86
  log_boosted = np.power(log_norm, 0.3)
87
  return log_boosted
 
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)
117
  ax.add_patch(rect)
118
 
 
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])
 
415
 
416
  _, col_fslide, _ = st.columns([1.5, 5, 1.5])
417
  with col_fslide:
 
418
  if mode == "Low frequency":
419
  radius = st.slider("ปรับระดับความถี่ที่ยอมให้ผ่าน (รัศมีจากตรงกลาง)", 1, 160, 160)
420
  else: