EAT là mỡ nằm bên trong túi màng ngoài tim. "Định vùng" thực chất chỉ là vẽ đúng ranh giới màng ngoài tim; phần "tính" — đếm voxel có HU trong cửa sổ mỡ — là deterministic, giống hệt nhau cho mọi phương pháp. Nhãn gold khác nhãn tự động ở đúng một bước: ai vẽ cái túi.
EAT = mỡ trong túi màng ngoài timKhông tính mỡ ngoài túi (paracardial)Cửa sổ mỡ −190…−30 HU
Hình thật từ một ca (lát axial).A — lát CT (cửa sổ soft-tissue), thấy lá màng ngoài tim. B — túi màng ngoài tim (viền xanh, Bước 3). C — EAT (hổ phách) = voxel có HU ∈ [−190, −30] bên trong túi (Bước 4). Các đám amber là mỡ ngoại tâm mạc thật quanh tim.
Radiologist vẽ viền màng ngoài tim thật trên từng lát → túi đúng giải phẫu. Tốn công, nhưng là chuẩn để đối chiếu.
Bước khác biệt: 3 · vẽ tay. Phần còn lại y hệt silver.
SILVER · proxy tự động
Máy dựng túi rồi nong
nnU-Net / TotalSegmentator ra tim → nong margin thành túi gần đúng. Nhanh (~½ phút/ca) nhưng over-inclusive ~1.6× tim, lẫn ít mỡ ngoài túi.
Đang dùng trong pipeline · chưa dùng lâm sàng tới khi validate.
Bước 1, 2, 4, 5, 6 giống hệt nhau cho cả gold và silver. Chỉ Bước 3 (túi màng ngoài tim) là khác: vẽ tay vs tự động.
BLuồng đầy đủ
1
Chuẩn hoá ảnh
→
2
Phạm vi giải phẫu
→
3 · quyết định
Túi màng ngoài tim
→
4
Lấy EAT trong túi
→
5
Định lượng
→
6
QC 2 người đọc
Ở Bước 3: gold = chuyên gia vẽ tay viền màng ngoài tim; silver = máy dựng túi tự động. Đó là điểm rẽ duy nhất.
CChi tiết từng bước & tham số cố định
1 · Chuẩn hoá ảnh (DICOM → volume)
CT tim không cản quang (calcium-score) là chuẩn kinh điển cho EAT; CCTA cản quang dùng được nhưng HU mỡ dịch nhẹ. Đảm bảo ảnh ở Hounsfield thật (nước ≈ 0, khí ≈ −1000), không windowing phá HU.
Pha tái tạo: ~75% R-R (tâm trương).
Bề dày lát: 2.5–3.0 mm (mỏng hơn nếu có).
Ghi lại spacing (sx·sy·sz) — cần để tính thể tích.
2 · Phạm vi giải phẫu (giới hạn trên–dưới)
Chỉ vẽ & tính trong đoạn có màng ngoài tim. Cố định mốc để tái lập giữa các ca & người đọc.
Lát dưới: mặt hoành / lát cuối còn thấy tim (mỏm tim).
3 · GOLD — vẽ tay túi màng ngoài tim
Phần làm nên "gold". Trên từng lát axial trong phạm vi Bước 2, chuyên gia vẽ đường viền màng ngoài tim (đường mờ, mảnh, cong bao quanh tim). Đường khép kín này = túi màng ngoài tim. Chi tiết thao tác ở mục 3D Slicer bên dưới.
4 · Lấy EAT bên trong túi (deterministic)
Trong túi, EAT = voxel có HU nằm trong cửa sổ mỡ. Trong Slicer: dùng Threshold ra mask "fat" rồi giao (intersect) với mask túi.
EAT_voxel = (voxel ∈ túi màng ngoài tim) AND (−190 ≤ HU ≤ −30)
5 · Định lượng
Từ mask EAT: số voxel N, thể tích 1 voxel V = sx·sy·sz mm³.
EAT = N × V ÷ 1000 mL (cm³) — chỉ số chính mean/STD HUđộ suy giảm mỡ — marker chất lượng/viêm fat-fraction = N_EAT ÷ N_túi × 100 % khối lượng ≈ EAT_mL × 0.92 g/mL (tuỳ chọn)
6 · QC & vì sao mới gọi là "gold"
Nhãn chỉ là gold khi tái lập được:
Inter-observer: 2 chuyên gia vẽ độc lập cùng ca → đo đồng thuận (Dice mask, ICC thể tích).
Intra-observer: cùng người vẽ lại sau vài tuần.
Chính sự đồng thuận giữa người đọc (không phải máy) biến nhãn thành "gold". Ghi lại phiên bản SOP (pha, mốc giải phẫu, cửa sổ HU) cho mỗi bộ nhãn.
DLàm trong 3D Slicer — Segment Editor
Vẽ túi màng ngoài tim (Bước 3) hiệu quả — quy trình 6 thao tác:
Tạo segment cho túi. Mở Segment Editor, chọn volume CT làm Master. Tạo Segmentation mới, thêm segment "Pericardium sac".
Bật cửa sổ nhìn rõ màng. Đặt window/level ~ W 350 / L 40 (soft-tissue), phóng to để thấy rõ lá màng ngoài tim.
Vẽ viền cách quãng. Dùng Draw vẽ đường màng ngoài tim khép kín, chỉ trên mỗi ~5–10 mm (ví dụ vẽ 1 lát, bỏ 4 lát).
Nội suy giữa các lát. Dùng Fill between slices để điền các lát ở giữa từ những viền vừa vẽ.
Duyệt lại & chỉnh tay — bắt buộc. Cuộn qua từng lát nội suy, sửa chỗ sai bằng Paint / Erase. Đừng tin nội suy mù — đây là điểm quyết định chất lượng gold.
Khép kín & cắt phần thừa. Dùng Scissors cắt phần lồi ra ngoài; đảm bảo viền khép kín để "trong túi" xác định được. Lưu túi hoàn chỉnh.
💡 Nối vào phép tính: không cần tự giao threshold bằng tay. Về module VC-EAT Flow, Bước 3 chọn Sac source = Manual → chọn segmentation túi vừa vẽ → Run. Plugin tự chạy Bước 4–5 (đếm HU −190…−30, thể tích, mean HU) trên đúng túi gold của bạn.
Sơ đồ giao diện Segment Editor. Ba công cụ viền vàng là những thứ dùng ở Bước 3: Draw vẽ viền cách quãng → Fill between slices nội suy → duyệt lại từng lát → Scissors cắt phần thừa. Khung phải minh hoạ viền màng ngoài tim (xanh) bao mỡ EAT (vàng).Kết quả 3D (hình thật). Khối mỡ EAT tái tạo 3D ở hai góc — phân bố mỡ ngoại tâm mạc bao quanh tim; các "lỗ" là chỗ buồng tim / mạch máu (không phải mỡ).
📸 Ảnh thật từ Segment Editor (chạy bằng script)
Bộ ảnh dưới đây chụp trực tiếp trong 3D Slicer bằng script scripts/slicer_eat_demo.py — nó tự dựng scene, mở Segment Editor và chụp từng bước.
Bước 1 — CT trong Slicer. Layout 4-up (axial · sagittal · coronal · 3D), cửa sổ soft-tissue W350/L40.Bước 3 — túi màng ngoài tim trong Segment Editor. Segmentation "EAT-gold", segment "Pericardium sac" (xanh). Cột trái là bảng công cụ (Draw, Scissors, Threshold…).Bước 4 — công cụ Threshold −190…−30 HU. Chọn ngưỡng cửa sổ mỡ để giữ voxel mỡ bên trong túi.Bước 4 (kết quả) — EAT (hổ phách). Các đám mỡ EAT trong túi, hiện ở cả 2D lẫn 3D. Sau đó Segment Statistics ra thể tích & mean HU.
ENối vào plugin — cùng một phép đếm
Plugin tự động hoá Bước 4–5 cho bất kỳ túi nào. Nên nó làm được cả gold lẫn silver — chỉ khác nguồn túi. Vì phép đếm HU giống hệt, EAT_gold và EAT_silver so sánh trực tiếp → đó là cách validate model.
🔌 Dùng plugin — quy trình 4 bước (ảnh thật)
Chụp trực tiếp trong 3D Slicer: module VC-EAT Flow: EAT in 4 steps. Mỗi bước
để lại một segment xem/sửa được; bước cuối in báo cáo.
Bước 1 — Input CT. Cardiac → VC-EAT Flow, chọn volume CT cần phân tích.Bước 2 — ② Auto-crop. Cắt FOV rỗng (lossless); tick Use cropped volume as Input. Dòng dưới nút báo số voxel trước → sau.Bước 3 — ③ Extract HEART (GPU). TotalSegmentator full-resolution tách chỉ vùng tim (đỏ) — không xương/phổi/cơ quan khác — rồi dọn hậu kỳ (lấp lỗ, bỏ mảnh rác). Kết quả: 541.4 mL, xem & QC ngay.Bước 3 — ✂ Crop CT to heart only. Cắt volume theo tim + lề 20 mm và xoá mô ngoài lề thành khí: 72.1M → 63.9M voxel (−11%), xoá 28.7M voxel xương sườn/phổi/cột sống. Lề 20 mm giữ nguyên 100% mỡ EAT.Bước 4 — ④ Run: Sac + Quantify EAT. Dựng túi màng ngoài tim (xanh) bằng VC-EAT model rồi clip theo chính tim của Bước 3 (lề 8 mm), đếm mỡ HU ∈ [−190, −30]. Kết quả: EAT = 76.0 mL · mean −82 HU.Show EAT (2D + 3D). Mỡ EAT (hổ phách) trong túi, hiện ở cả lát cắt và 3D. Bấm 💾 Save segments để lưu tái dùng.
📦 Output — plugin tạo ra những gì
Trong scene Slicer
File khi bấm 💾 Save segments
🖼 CT gốc + CT đã crop
<case>_CT_heart_only.nii.gz
■Tim (chỉ vùng tim) — mL
<case>_heart.seg.nrrd
✂ CT chỉ vùng tim (đã xoá mô ngoài)
—
■Túi màng ngoài tim — mL
<case>_sac.seg.nrrd
■EAT (+ mesh 3D) — mL
<case>_EAT.seg.nrrd
📊 Bảng chỉ số
<case>_EAT_metrics.csv
Báo cáo (panel Output) gồm: thể tích tim / túi / EAT (mL), mean ± sd HU,
fat-fraction (%), mức clip đã áp, cửa sổ mỡ, số voxel — kèm cảnh báo proxy (silver).
🎬 Video demo — quy trình 4 bước
Demo thật: chạy VC-EAT Flow 4 bước trong 3D Slicer — Input CT → Crop → tách tim + CT heart-only → Sac + EAT. (Không phát được? Tải: vceat_4step_demo.webm)
Mục tiêu
Nguồn túi (Bước 3)
Ghi chú
GOLD
Vẽ tay ở Segment Editor → Sac source = Manual
Túi do chuyên gia vẽ; plugin chỉ đếm HU deterministic.
SILVER
Sac source = VC-EAT model (GPU ~½ phút)
Túi tự động; dùng để chạy hàng loạt.
Validate
Vẽ gold N ca → chạy Manual → so với model trên cùng ca
Báo cáo sai số EAT + Dice một cách trung thực.
Bước "segment buồng tim" (TotalSegmentator) KHÔNG bắt buộc để tính EAT — nó chỉ để QC nhìn giải phẫu. Quy trình tối thiểu: CT → (Crop) → túi (gold/silver) → EAT.
🔎 Trung thực về proxy: EAT sinh từ túi silver là proxy (túi over-inclusive ~1.6× tim), chưa dùng lâm sàng tới khi validate với nhãn gold. Bản thân phép đếm HU luôn deterministic và giải trình được — thứ cần validate là ranh giới túi, đúng chỗ gold vs silver khác nhau.
FCải thiện — clip sac theo tim (đã tích hợp plugin)
Sac silver over-inclusive (~1.6× tim) nên quét cả mỡ ngoài tim
(trung thất / paracardial). Plugin giờ luôn tự cắt sac theo "tim + lề": chạy
TotalSegmentator heart trong container rồi chỉ giữ sac trong N mm quanh tim
(mặc định 8 mm) → bỏ phần vươn ra ngoài. Không cần thao tác gì thêm.
Trước / sau clip (ca thật, lề 8mm). Viền xanh = tim (TotalSegmentator).
Clip bỏ phần mỡ vươn ra xa; EAT giảm nhẹ. Con số EAT không "thổi phồng" nhiều như
trông thấy vì phần sac dư chủ yếu là máu/mô mềm (không phải mỡ, vốn không đếm).
Chiến lược
Sac (mL)
EAT (mL)
Giảm
Sac gốc (silver)
828.6
74.3
—
Clip tim +10mm
793.7
71.3
−4%
Clip tim +8mm (mặc định)
780.7
70.4
−5%
Clip tim +5mm
744.8
63.6
−14%
Chỉnh Heart-clip margin nhỏ hơn (5–8mm) nếu muốn chặt hơn — coi chừng cắt mất mỡ epicardial thật. Phần mỡ paracardial dính sát tim thì tự động không tách được; muốn tách đúng vẫn phải dùng Manual (gold).
Đã bỏ bước "Segment HEART" (QC) khỏi plugin vì thừa cho việc tính EAT — clip đã tự chạy TotalSegmentator heart bên trong. Plugin giờ chỉ còn 2 bước: Crop → Sac + EAT.
GTài liệu & Video học
Không có 1 video làm "EAT gold" trọn gói — nhưng công cụ trong các video chính là các nút ở Bước 3 (Draw, Fill between slices, Scissors, Threshold). Cách nhanh nhất: xem video để biết dùng công cụ → áp thông số EAT (−190…−30 HU, W350/L40, vẽ mỗi ~5 lát) theo trang này.
Lộ trình gợi ý (≈2 tiếng là làm được): Video #1 (30′, nắm Draw/Threshold/Scissors) → đoạn Fill Between Slices ở video #2 → làm theo Bước 3 trang này với thông số EAT → ra số bằng plugin VC-EAT Flow → Sac source = Manual.