Trong lĩnh vực xử lý ảnh y tế, việc tách các vùng quan tâm như khối u, xương, mô mềm từ ảnh X-quang hay MRI là một bước quan trọng trước khi thực hiện phân tích chuyên sâu hoặc áp dụng AI. Kỹ thuật thresholding – phân ngưỡng ảnh – là một trong những phương pháp nền tảng nhất để đạt được mục tiêu đó. Dù đơn giản, thresholding vẫn đóng vai trò quan trọng trong tiền xử lý ảnh y học.
Nếu bạn từng tìm hiểu về Tạo hệ thống nhận diện khuôn mặt thời gian thực bằng OpenCV, Tạo hệ thống cảnh báo nguy hiểm qua camera bằng AI, hay So sánh CNN và RNN: Ứng dụng trong xử lý ảnh và chuỗi dữ liệu, bạn sẽ nhận thấy rằng khả năng xử lý ảnh đầu vào tốt là tiền đề bắt buộc. Thresholding chính là kỹ thuật mở đầu cho các pipeline học sâu hoặc học máy trong xử lý ảnh y tế.
Thresholding là gì?
Thresholding là một phương pháp chuyển đổi ảnh mức xám (grayscale) sang ảnh nhị phân (binary) bằng cách đặt một giá trị ngưỡng. Tất cả các pixel có giá trị lớn hơn ngưỡng sẽ được gán màu trắng, và phần còn lại là màu đen. Điều này giúp làm nổi bật các vùng có đặc tính tương tự, như mô sáng trong ảnh X-quang hoặc vùng tổn thương trong ảnh MRI.
Có ba kỹ thuật thresholding phổ biến:
-
Threshold cố định (global threshold): Dùng một ngưỡng duy nhất cho toàn ảnh.
-
Threshold Otsu: Tự động tìm ngưỡng tối ưu bằng cách phân tích histogram.
-
Threshold thích nghi (adaptive): Tính ngưỡng riêng biệt cho từng vùng nhỏ, phù hợp ảnh không đồng đều ánh sáng.
Ứng dụng thresholding trong ảnh y tế
Trong thực tế, thresholding được ứng dụng trong nhiều bài toán y tế. Ví dụ, trong ảnh X-quang phổi, thresholding giúp làm nổi bật vùng tổn thương hoặc phân tách rõ mô xương và mô mềm. Trong ảnh MRI, thresholding có thể giúp cô lập các cấu trúc như não thất hoặc khối u não. Đây là bước đầu quan trọng để đưa ảnh vào pipeline segmentation, phân loại hay phát hiện bất thường bằng AI.
Không những thế, thresholding giúp giảm độ phức tạp và nhiễu nền, hỗ trợ tốt cho mô hình học sâu hoặc truyền thống. Đặc biệt, với dữ liệu ảnh y tế vốn có kích thước lớn và độ chi tiết cao, thì thresholding đóng vai trò lọc tiền xử lý cực kỳ quan trọng.
Chuẩn bị thư viện và dữ liệu
Trước khi viết mã, bạn cần cài đặt OpenCV – thư viện xử lý ảnh phổ biến nhất hiện nay. Ngoài ra, bạn cũng nên có một ảnh X-quang thực tế để kiểm thử. Bạn có thể dùng ảnh từ bộ dữ liệu công khai:
📥 Dataset: Chest X-ray Images (Pneumonia)
Cài đặt thư viện:
pip install opencv-python matplotlib
Áp dụng threshold cố định và Otsu vào ảnh X-quang
Trong phần này, ta sẽ đọc một ảnh X-quang, chuyển ảnh về mức xám, rồi áp dụng hai loại threshold là: threshold cố định và Otsu. Mục tiêu là so sánh hiệu quả của từng phương pháp trong làm nổi bật mô phổi và loại bỏ nền.
Hai đoạn giải thích:
Đầu tiên, việc chuyển ảnh RGB thành grayscale giúp đơn giản hóa thông tin, vì ảnh X-quang thường chỉ cần quan tâm cường độ sáng – không cần màu sắc. Sau đó, áp dụng threshold giúp phân tách vùng sáng tối rõ rệt, làm nổi bật khu vực có thể là tổn thương hoặc mô đặc biệt.
Threshold cố định phù hợp với ảnh có độ tương phản rõ. Trong khi đó, phương pháp Otsu phân tích histogram để tự động chọn ngưỡng, phù hợp cho ảnh có độ chênh lệch sáng phức tạp hơn.
Link ảnh có thể tải tại đây!
import cv2
import matplotlib.pyplot as plt
# Đọc ảnh X-quang
img = cv2.imread('960px-Chest_radiograph_in_influensa_and_H_influenzae,_posteroanterior,_annotated.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Threshold cố định
_, thresh_fixed = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY)
# Threshold Otsu
_, thresh_otsu = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# Hiển thị ảnh
plt.figure(figsize=(12,6))
plt.subplot(1,3,1)
plt.title("Gốc")
plt.imshow(gray, cmap='gray')
plt.subplot(1,3,2)
plt.title("Cố định")
plt.imshow(thresh_fixed, cmap='gray')
plt.subplot(1,3,3)
plt.title("Otsu")
plt.imshow(thresh_otsu, cmap='gray')
plt.show()
Kết quả cho thấy phương pháp Otsu thường cho ảnh rõ nét hơn ở vùng rìa phổi và tổn thương mờ. Threshold cố định có thể làm mất chi tiết nếu ảnh thiếu tương phản.

So sánh các phương pháp thresholding
| Phương pháp | Ưu điểm | Hạn chế |
|---|---|---|
| Threshold cố định | Đơn giản, nhanh, dễ triển khai | Nhạy cảm với thay đổi độ sáng |
| Otsu’s method | Tự động chọn ngưỡng tối ưu | Có thể bị nhiễu nếu ảnh không rõ ràng |
| Adaptive Threshold | Phù hợp ảnh không đồng đều sáng | Chậm hơn, nhiều tham số cần điều chỉnh |
Trong xử lý ảnh y tế, adaptive threshold thường hiệu quả nhất khi ảnh bị nhiễu sáng, nhưng Otsu lại được ưa chuộng vì dễ triển khai và tự động.
Kết luận
Thresholding là kỹ thuật nền tảng trong xử lý ảnh y tế, giúp cô lập vùng tổn thương, loại bỏ nhiễu và chuẩn bị ảnh đầu vào cho mô hình học sâu. Dù đơn giản, nó lại là bước mở đầu không thể thiếu trong bất kỳ pipeline phân tích hình ảnh y học nào.
Bằng cách kết hợp thresholding với các kỹ thuật như edge detection hoặc segmentation bằng học sâu (như U-Net), bạn có thể xây dựng hệ thống chẩn đoán hình ảnh tự động chính xác và hiệu quả hơn. Trong các bài viết trước như Tạo đồ án học máy phân loại email spam, Thực hành phân tích dữ liệu bằng Power BI, hay Huấn luyện mô hình AI không cần GPU với Google Colab, bạn đã làm quen với pipeline dữ liệu và mô hình hóa — thresholding là phần tiếp theo để áp dụng AI vào lĩnh vực y học hiện đại.

