Giới thiệu dự án
Trong kỷ nguyên tự động hóa công nghiệp và thị giác máy tính (Computer Vision), phân đoạn ảnh (Image Segmentation) đóng vai trò là nền tảng cốt lõi cho các hệ thống kiểm tra chất lượng tự động (Automated Optical Inspection - AOI), nhận dạng ký tự quang học (OCR) và xử lý hình ảnh y tế. Theo các khảo sát thực tế trong ngành thị giác máy, hơn 65% các lỗi phân loại và đếm đối tượng phát sinh từ giai đoạn phân đoạn không chính xác, đặc biệt khi các đối tượng mục tiêu tiếp xúc, dính liền hoặc đè chồng lên nhau (touching/overlapping objects).
Đồ án tốt nghiệp "Phân đoạn ảnh dựa trên thuật toán nở vùng" của tác giả Nguyễn Đình Phúc (Khoa Công nghệ Thông tin, Trường Đại học Dân Lập Hải Phòng - DPU, dưới sự hướng dẫn của TS. Ngô Trường Giang) giải quyết trực diện bài toán phân đoạn và tách ranh giới cho các đối tượng chồng lấn.
+----------------------------------------------------------------------------------------------------+
| QUY TRÌNH XỬ LÝ CHÍNH CỦA ĐỒ ÁN |
+-------------------+ +---------------------+ +---------------------+ +---------------+
| Ảnh đầu vào | ---> | Tiền xử lý | ---> | Biến đổi khoảng cách| ---> | Phân đoạn & |
| (Đối tượng dính) | | (Lọc nhiễu + Ngưỡng)| | (Distance Transform)| | Đếm Watershed |
+-------------------+ +---------------------+ +---------------------+ +---------------+
Vấn đề thực tiễn và bài toán kỹ thuật
Khi áp dụng các phương pháp tách ngưỡng truyền thống (như Global Thresholding hay Otsu) trên các cụm đối tượng dính liền (ví dụ: các đồng xu, tế bào sinh học, sản phẩm cơ khí trên băng chuyền), hệ thống sẽ gộp tất cả các đối tượng tiếp xúc thành một vùng liên thông duy nhất (single connected component). Điều này dẫn đến sự sai lệch nghiêm trọng: ảnh có 5 đối tượng tiếp xúc bị nhận diện thành 3 vùng biên độc lập (sai số lên đến 40%).
Mục tiêu của đồ án
- Nghiên cứu cơ sở lý thuyết xử lý ảnh số: Khảo sát toàn diện các kỹ thuật lọc số (lọc trung bình, lọc trung vị), toán tử đạo hàm bậc nhất tìm biên (Sobel, Prewitt, Roberts) và các hướng tiếp cận phân vùng ảnh.
- Làm chủ các thuật toán nở vùng và Watershed: Phân tích sâu thuật toán nở vùng cơ bản, nở vùng thống kê, nguyên lý dòng chảy (flow simulation), nguyên lý nước dâng (immersion) và thuật toán Watershed dựa trên thành phần liên thông.
- Thiết kế và triển khai giải pháp thực nghiệm: Tích hợp thuật toán biến đổi khoảng cách (Distance Transform) kết hợp với phép biến đổi Watershed để tách triệt để các đối tượng tiếp xúc.
- Phát triển ứng dụng hoàn chỉnh: Xây dựng phần mềm trên nền tảng C++ và thư viện OpenCV 3.x, kiểm nghiệm trực tiếp trên tập dữ liệu ảnh các đồng xu chồng lấp.
Phạm vi và giới hạn đề tài
- Phạm vi: Xử lý ảnh xám và ảnh nhị phân 2D; tập trung vào bài toán tách và đếm các đối tượng hình học dạng lồi bị dính biên.
- Giới hạn: Chưa tích hợp xử lý biến dạng 3D phức tạp hoặc phân đoạn đối tượng trong điều kiện chiếu sáng biến thiên mạnh theo thời gian thực (non-uniform illumination).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Quá trình phân đoạn ảnh hiện nay được chia thành ba nhóm phương pháp chính: phương pháp dựa trên không gian đặc trưng (Feature-based), phương pháp dựa trên không gian ảnh (Spatial-based) và phương pháp dựa trên mô hình vật lý (Physics-based).
| Phương pháp phân đoạn |
Ưu điểm kỹ thuật |
Hạn chế cố hữu |
Độ phù hợp với đối tượng dính nhau |
| Phân ngưỡng toàn cục (Global Thresholding) |
Tốc độ thực thi cực nhanh ($O(N)$), cấu trúc đơn giản, ít tốn bộ nhớ. |
Bỏ qua hoàn toàn mối quan hệ không gian, không tách được các đối tượng dính nhau. |
Rất kém (Gộp đối tượng) |
| Dò biên Gradient (Sobel / Canny) |
Định vị chính xác các đường bao có độ tương phản cao. |
Đường biên thường bị đứt đoạn, nhạy cảm với nhiễu đốm, khó tạo vùng khép kín. |
Trung bình (Biên hở) |
| Nở vùng cơ bản (Basic Region Growing) |
Đảm bảo tính liên thông và tính đồng nhất cao của từng vùng. |
Phụ thuộc nặng vào điểm mầm (seed point); chi phí tính toán lớn nếu ảnh phức tạp. |
Trung bình |
| Biến đổi Watershed + Distance Transform |
Tạo đường phân thủy khép kín, phân tách chính xác các vùng cực tiểu cục bộ. |
Dễ gây hiện tượng quá phân đoạn (Over-segmentation) nếu không lọc mầm trước. |
Tốt nhất (Khắc phục chồng lấn) |
Đánh giá yêu cầu theo mô hình MoSCoW
- Must have: Khả năng chuyển đổi không gian màu sang Grayscale; bộ lọc khử nhiễu (Gaussian/Median Blur); thuật toán Distance Transform chuẩn Euclidean; giải thuật Watershed đánh nhãn phân vùng; hiển thị số lượng đối tượng đếm được.
- Should have: Giao diện người dùng đồ họa (GUI) trực quan; cho phép hiển thị trung gian các bước lọc nhiễu, tạo bản đồ khoảng cách và đường phân thủy.
- Could have: Khả năng tùy chỉnh tham số ngưỡng nhị phân hóa và ngưỡng lọc đỉnh khoảng cách linh hoạt trên GUI.
- Won't have (lần này): Phân đoạn tự động trên video stream camera công nghiệp với tốc độ > 120 FPS.
Thiết kế hệ thống
Kiến trúc xử lý của hệ thống được xây dựng theo mô hình đường ống tuần tự (Pipeline Architecture):
+------------------+ +--------------------+ +---------------------+
| Ảnh màu gốc (RGB)| --> | Ảnh mức xám (Gray) | --> | Khử nhiễu (Blur) |
+------------------+ +--------------------+ +---------------------+
|
+------------------+ +--------------------+ v
| Bản đồ khoảng | <-- | Phân ngưỡng nhị | <-- +---------------------+
| cách (Dist Trans)| | phân (Threshold) | | Ảnh lọc mượt |
+------------------+ +--------------------+ +---------------------+
|
v
+------------------+ +--------------------+ +---------------------+
| Tìm điểm mầm cực | --> | Phân đoạn | --> | Kết quả nhận diện, |
| đại (Local Peaks)| | Watershed | | đếm & vẽ ranh giới |
+------------------+ +--------------------+ +---------------------+
Technology Stack và công số cấu hình
- Ngôn ngữ lập trình: C++ (ISO/IEC 14882:2011 standard - C++11)
- Thư viện thị giác máy tính: OpenCV Version 3.x (Open Source Computer Vision Library)
- Môi trường phát triển tích hợp (IDE): Microsoft Visual Studio 2015 Community/Professional
- Hệ điều hành tương thích: Microsoft Windows 7/8/10 (hỗ trợ cả Linux x86_64)
Đánh giá độ phức tạp thuật toán (Algorithm Complexity)
- Phép nhân chập lọc ảnh (Convolution): $\mathcal{O}(W \times H \times K^2)$ với $W, H$ là kích thước ảnh và $K$ là kích thước ma trận lọc (kernel size $3 \times 3$ hoặc $5 \times 5$).
- Biến đổi khoảng cách Euclidean chuẩn: $\mathcal{O}(W \times H)$ khi sử dụng thuật toán lan truyền hai lượt quét (two-pass raster scan).
- Phân đoạn Watershed dựa trên thành phần liên thông: $\mathcal{O}(k \times W \times H)$ với $k$ là số lượt quét hội tụ gán nhãn ($k \le 4$).
Methodology
Đồ án áp dụng quy trình phát triển lặp từng bước (Iterative Waterfall Model):
- Giai đoạn 1 (Tuần 1 - 4): Nghiên cứu đại số ma trận điểm ảnh, phép nhân chập, các toán tử Sobel ($G_x, G_y$), Prewitt, lọc trung vị phi tuyến.
- Giai đoạn 2 (Tuần 5 - 8): Khảo cứu cấu trúc toán học của thuật toán nở vùng theo thống kê ($\mu, \sigma$) và thuật toán Watershed theo thành phần liên thông.
- Giai đoạn 3 (Tuần 9 - 12): Hiện thực hóa thuật toán trên Visual Studio 2015 và OpenCV 3.x; tối ưu hóa cấu trúc dữ liệu
cv::Mat.
- Giai đoạn 4 (Tuần 13 - 15): Chạy thực nghiệm, thu thập benchmark, đánh giá sai số và hoàn thiện tài liệu đồ án.
Implementation và kết quả
Development process
Quá trình cài đặt hệ thống tập trung vào việc ghép nối chặt chẽ các thuật toán thành phần. Dưới đây là các kỹ thuật và mã nguồn tiêu biểu được hiện thực trong đề tài:
1. Tiền xử lý và Nhị phân hóa
Ảnh màu đầu vào được nạp vào cấu trúc ma trận cv::Mat, chuyển về mức xám 8-bit và áp dụng bộ lọc làm mờ để triệt tiêu nhiễu tần số cao:
#include <opencv2/opencv.hpp>
using namespace cv;
Mat src = imread("coins.jpg", IMREAD_COLOR);
Mat gray, blurred, binary;
// Chuyển đổi sang ảnh đa cấp xám [0, 255]
cvtColor(src, gray, COLOR_BGR2GRAY);
// Lọc mờ khử nhiễu đốm hạt
GaussianBlur(gray, blurred, Size(5, 5), 0);
// Phân ngưỡng nhị phân nghịch đảo kết hợp thuật toán Otsu
threshold(blurred, binary, 0, 255, THRESH_BINARY_INV | THRESH_OTSU);
2. Biến đổi khoảng cách (Distance Transform)
Thuật toán biến đổi khoảng cách tính toán khoảng cách Euclidean ngắn nhất từ mỗi điểm ảnh thuộc đối tượng ($I(x,y)=1$) đến điểm nền gần nhất ($I(x_1, y_1)=0$):
$$d(s, t) = \sqrt{(x - x_1)^2 + (y - y_1)^2}$$
Giải thuật biến đổi khoảng cách nền tảng được mô tả như sau:
// Giải thuật Distance Transform đơn giản
for (int y = 1; y < ySize - 1; y++) {
for (int x = 1; x < xSize - 1; x++) {
if (I_prime[y][x] != 0) {
float min_d = 999999.0f;
for (int y1 = 0; y1 < ySize; y1++) {
for (int x1 = 0; x1 < xSize; x1++) {
if (I_prime[y1][x1] == 0) {
float d = sqrt((float)((x - x1)*(x - x1) + (y - y1)*(y - y1)));
if (d < min_d) {
min_d = d;
}
}
}
}
I_prime[y][x] = min_d;
}
}
}
Trong thực nghiệm với OpenCV 3.x, tác giả sử dụng hàm tối ưu hóa tốc độ:
Mat dist;
distanceTransform(binary, dist, DIST_L2, 3);
// Chuẩn hóa bản đồ khoảng cách về khoảng [0.0, 1.0] để lấy ngưỡng điểm mầm
normalize(dist, dist, 0.0, 1.0, NORM_MINMAX);
3. Thuật toán Watershed dựa trên các thành phần liên thông
Đồ án hiện thực thuật toán Watershed 3 bước để gán nhãn không gian:
- Bước 1: Quét ảnh từ trên xuống dưới, so sánh độ xám $f(p)$ của điểm ảnh $p$ với các điểm lân cận $n \in N(p)$. Nếu $f(p) > f(n)$ gán $v[p] = 1$, ngược lại gán $v[p] = 0$.
- Bước 2: Xác định khoảng cách từ các điểm trên vùng bằng phẳng (flat zones) tới điểm cực tiểu cục bộ:
void step2(Point p, Mat& v, Mat& f) {
if (v.at<int>(p) != 1) {
int min_val = VMAX;
for (Point n : get_neighbors(p)) {
if (f.at<uchar>(n) == f.at<uchar>(p) && v.at<int>(n) > 0 && v.at<int>(n) < min_val) {
min_val = v.at<int>(n);
}
}
if (min_val != VMAX && v.at<int>(p) != (min_val + 1)) {
v.at<int>(p) = min_val + 1;
}
}
}
- Bước 3: Lan truyền nhãn $L[p]$ qua các lượt quét đa hướng (từ trên-trái xuống dưới-phải và ngược lại) cho đến khi toàn bộ các điểm ảnh hội tụ trạng thái dán nhãn ổn định.
+----------------------------------------------------------------------------------------------------+
| CÁC LƯỢT QUÉT HỘI TỤ GÁN NHÃN CỦA BƯỚC 3 (WATERSHED) |
+----------------------------------------------------------------------------------------------------+
| 1. Quét xuống lần 1: Nhận diện và gán nhãn sơ bộ cho các tâm vùng cực tiểu |
| 2. Quét lên lần 1: Lan truyền nhãn ngược từ dưới lên cho các điểm phẳng liên kết |
| 3. Quét xuống lần 2: Lấp đầy các vùng giáp ranh chưa có nhãn |
| 4. Quét lên lần 2: Khử hoàn toàn các điểm chưa gắn nhãn -> Hội tụ (Tất cả điểm ảnh có nhãn) |
+----------------------------------------------------------------------------------------------------+
Testing và validation
Hệ thống được kiểm thử trực tiếp trên các mẫu ảnh chứa các cụm đồng xu kim loại đặt sát nhau, có hiện tượng dính mép và tạo ra các nút giao biên phức tạp.
+---------------------------------------------------------------------------------------------------+
| KẾT QUẢ SO SÁNH GIỮA PHÂN NGƯỠNG ĐƠN VÀ WATERSHED CẢI TIẾN |
+---------------------------------------------------------------------------------------------------+
| [Ảnh gốc 5 đồng xu] ---> [Phân ngưỡng toàn cục] ---> Nhận diện 3 đối tượng (Sai lệch 40%) |
| |
| [Ảnh gốc 5 đồng xu] ---> [Distance Transform ] ---> Nhận diện 5 đối tượng (Độ chính xác 100%)|
| [+ Watershed Markers ] Đường phân thủy tách rời mép dính |
+---------------------------------------------------------------------------------------------------+
Bảng đối chuẩn kết quả thực nghiệm
| Tiêu chí đánh giá |
Phân ngưỡng cố định (Global Threshold) |
Dò biên Sobel truyền thống |
Distance Transform + Watershed (Đồ án) |
| Số lượng đối tượng phát hiện |
3 / 5 đồng xu |
Không xác định (biên đứt) |
5 / 5 đồng xu |
| Độ chính xác đếm (Accuracy) |
60.0% |
< 50.0% |
100.0% |
| Tách ranh giới chồng lấn |
Không thể |
Không hoàn chỉnh |
Chính xác tuyệt đối |
| Thời gian xử lý trung bình |
~2.1 ms |
~5.8 ms |
~14.6 ms (Đạt chuẩn Real-time) |
| Khả năng tự động hóa |
Kém (Cần chỉnh ngưỡng tay) |
Kém |
Cao (Tự động tìm mầm) |
Kết quả đạt được
- Độ chính xác phân vùng: Hệ thống giải quyết trọn vẹn hiện tượng kết dính vùng, nâng độ chính xác đếm số lượng từ 60% lên 100% trên tập dữ liệu thử nghiệm chuẩn.
- Khử hiện tượng quá phân đoạn: Nhờ kết hợp bước lọc đỉnh trên bản đồ Distance Transform, thuật toán Watershed chỉ khởi tạo đúng 5 điểm mầm (markers), triệt tiêu hoàn toàn các đường phân thủy giả do nhiễu bề mặt đồng xu gây ra.
- Hiệu năng thực thi: Tốc độ xử lý trung bình đạt dưới 20ms cho khung hình độ phân giải chuẩn, hoàn toàn đáp ứng tốt cho các ứng dụng công nghiệp thời gian thực.
Đổi mới và đóng góp
- Cải tiến phương pháp xác định mầm Watershed: Đồ án không áp dụng Watershed trực tiếp lên ảnh Gradient (vốn rất dễ gây vỡ vùng do nhiễu kim loại), mà trích xuất mầm tự động thông qua cực đại cục bộ của bản đồ biến đổi khoảng cách Euclidean.
- Hình thức hóa toán học cho thuật toán nở vùng thống kê: Đưa ra công thức chuẩn mực hóa ngưỡng động dựa trên độ lệch chuẩn $\sigma$ và kỳ vọng $\mu$:
$$T(i) = k \cdot \sigma(i) \quad \text{với điều kiện thu nạp} \quad |I(r,c) - \mu(i)| \le T(i)$$
- Cung cấp mã nguồn và tài liệu đối sánh thuật toán: Hệ thống hóa chi tiết giải thuật Watershed theo 3 bước quét ma trận điểm ảnh liên thông, đóng vai trò tài liệu tham khảo kỹ thuật giá trị cho sinh viên và kỹ sư phát triển phần mềm xử lý ảnh.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng trong thực tế
- Đếm và phân loại sản phẩm công nghiệp: Tích hợp vào hệ thống băng chuyền phân loại bu lông, ốc vít, nắp chai hoặc phôi cơ khí khi chúng bị dồn ứ tại các khay cấp liệu.
- Y sinh học (Biomedical Image Analysis): Tự động phân tách và đếm số lượng tế bào hồng cầu, bạch cầu hoặc cụm vi khuẩn trong ảnh chụp kính hiển vi quang học.
- Địa tin học & Xử lý ảnh viễn thám (SAR): Tách các vết dầu loang trên bề mặt biển hoặc phân vùng các lưu vực sông ngòi từ ảnh vệ tinh dựa trên địa hình mức xám.
+----------------------------------------------------------------------------------------------------+
| SƠ ĐỒ TRIỂN KHAI HỆ THỐNG TRONG THỰC TẾ |
+----------------------------------------------------------------------------------------------------+
| [Camera Công Nghiệp] ---> [Khung hình chụp] ---> [Module C++ / OpenCV] ---> [Đếm & Tách Ranh Giới]|
| | |
| v |
| [Gửi tín hiệu PLC / Relay] |
| [Loại bỏ sản phẩm lỗi / Dính] |
+----------------------------------------------------------------------------------------------------+
Hướng dẫn triển khai (Deployment Guide)
- Yêu cầu hệ thống:
- CPU: Tối thiểu Intel Core i3 thế hệ 4 hoặc tương đương (khuyến nghị 2.0 GHz trở lên).
- RAM: Tối thiểu 2 GB RAM khả dụng.
- Môi trường: Windows 7/10/11 hoặc Ubuntu Linux 16.04+ có cài sẵn Visual C++ Redistributable 2015.
- Các bước biên dịch:
- Cài đặt OpenCV 3.x và cấu hình biến môi trường
OPENCV_DIR.
- Mở project trong Visual Studio 2015, cấu hình
Include Directories ($(OPENCV_DIR)\include) và Library Directories ($(OPENCV_DIR)\x64\vc14\lib).
- Thêm
opencv_world3xx.lib vào Linker -> Input -> Additional Dependencies.
- Biên dịch ở chế độ
Release x64 để đạt hiệu năng tối ưu.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Phụ thuộc vào hình học đối tượng: Biến đổi khoảng cách Euclidean hoạt động lý tưởng nhất với các đối tượng có dạng hình học lồi (convex shapes) như hình tròn, elip. Với các vật thể lõm phức tạp hoặc chồng lấn dạng che khuất hoàn toàn (heavy occlusion), tâm khoảng cách có thể bị lệch.
- Tham số ngưỡng cố định: Bước nhị phân hóa ban đầu vẫn sử dụng ngưỡng cố định hoặc Otsu toàn cục, có thể giảm độ chính xác nếu ánh sáng khung cảnh phân bố không đồng đều (gradient ánh sáng mạnh).
Hướng phát triển mở rộng
- Tích hợp mạng nơ-ron tích chập (CNN): Sử dụng các mô hình học sâu như U-Net hoặc Mask R-CNN để tạo bản đồ mầm đối tượng (marker map) ngữ nghĩa trước khi đưa vào Watershed.
- Tự động hóa thích nghi ngưỡng đa vùng (Adaptive Local Thresholding): Kết hợp bộ lọc thích nghi theo từng khối không gian để loại bỏ hoàn toàn ảnh hưởng của bóng đổ và độ phản xạ quang học.
- Mở rộng sang không gian 3D: Phát triển thuật toán Watershed trên dữ liệu quét đám mây điểm (Point Cloud) hoặc thể tích voxel (3D CT/MRI Scans).
Đối tượng hưởng lợi
+----------------------------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG |
+----------------------------------------------------------------------------------------------------+
| 🎓 Sinh viên IT / ĐTVT: Tài liệu mẫu chuẩn mực về giải thuật phân đoạn ảnh, C++ & OpenCV. |
| 💻 Lập trình viên Computer Vision: Đoạn mã xử lý Distance Transform & Watershed thực tế, tối ưu. |
| 🏭 Doanh nghiệp sản xuất: Giải pháp đếm sản phẩm chi phí thấp, triển khai nhanh trên phần cứng rẻ. |
| 🔬 Nhà nghiên cứu: Cơ sở tham chiếu thuật toán phân vùng liên thông để mở rộng mô hình y sinh. |
+----------------------------------------------------------------------------------------------------+
- Sinh viên chuyên ngành CNTT / Điện tử Viễn thông: Tiếp cận tài liệu nghiên cứu bài bản từ cơ sở biến đổi Fourier, toán tử nhân chập đến các giải thuật phân vùng nâng cao kèm mã nguồn thực thi minh họa.
- Kỹ sư thị giác máy (Vision Engineers): Sở hữu giải pháp mẫu tối ưu cho bài toán kinh điển về tách đối tượng chồng lấn mà không cần đầu tư hạ tầng GPU đắt đỏ cho Deep Learning.
- Doanh nghiệp & Nhà máy sản xuất: Tiết kiệm từ 40 - 60% chi phí bản quyền phần mềm phân tích hình ảnh công nghiệp thông qua việc áp dụng giải pháp nguồn mở OpenCV.
- Cộng đồng nghiên cứu xử lý ảnh y tế: Nền tảng tham khảo để cải tiến thuật toán tách tế bào máu và khoanh vùng khối u tự động.
Câu hỏi thường gặp
1. Thuật toán Watershed kết hợp Biến đổi khoảng cách có thể chạy Real-time trên Camera không?
Có. Toàn bộ quy trình từ tiền xử lý, biến đổi khoảng cách đến phân đoạn Watershed chỉ mất khoảng 12 - 18 ms trên CPU thông thường cho ảnh kích thước 640x480 pixel. Tốc độ này tương đương 55 - 80 FPS, hoàn toàn đáp ứng chuẩn Real-time của các camera công nghiệp hiện nay.
2. Làm thế nào để khắc phục hiện tượng quá phân đoạn (Over-segmentation) trong Watershed?
Hiện tượng quá phân đoạn xảy ra khi ảnh có nhiều điểm cực tiểu cục bộ do nhiễu. Cách khắc phục chuẩn mực (đã được đồ án chứng minh) là:
- Lọc mượt ảnh bằng Gaussian Filter.
- Áp dụng Biến đổi khoảng cách trên ảnh nhị phân.
- Chỉ trích xuất các điểm cực đại vượt qua một ngưỡng tỷ lệ nhất định (ví dụ:
dist > 0.5 * max(dist)) để làm điểm mầm (markers) cho Watershed.
3. Giải pháp này có thể xử lý các đối tượng không phải hình tròn được không?
Có. Thuật toán có thể áp dụng cho mọi hình dạng đối tượng lồi (tam giác, chữ nhật, viên nén thuốc, hạt nông sản...). Tuy nhiên, với các đối tượng quá mỏng hoặc có nhiều nhánh ngoằn ngoèo, cần áp dụng các phép toán hình thái học (Morphological Operations - Opening/Closing) trước khi biến đổi khoảng cách.
4. Tại sao đồ án chọn C++ và OpenCV thay vì Python?
C++ cung cấp khả năng quản lý bộ nhớ trực tiếp, tốc độ thực thi ma trận điểm ảnh nhanh hơn Python từ 5 đến 10 lần (đặc biệt trong các vòng lặp quét từng pixel như ở Bước 2 và Bước 3 của thuật toán Watershed). Điều này cực kỳ quan trọng trong các hệ thống nhúng và dây chuyền công nghiệp tốc độ cao.
5. Yêu cầu chi phí và phần cứng tối thiểu để triển khai giải pháp là bao nhiêu?
Hệ thống không yêu cầu GPU chuyên dụng. Có thể triển khai trực tiếp trên các máy tính công nghiệp nhỏ gọn hoặc vi máy tính như Raspberry Pi 4 (với mức chi phí phần cứng dưới 100 USD) kết hợp camera USB tiêu chuẩn.
Kết luận
Đồ án tốt nghiệp "Phân đoạn ảnh dựa trên thuật toán nở vùng" của sinh viên Nguyễn Đình Phúc đã giải quyết thành công một trong những thách thức kinh điển và phức tạp nhất của thị giác máy tính truyền thống: phân đoạn các đối tượng dính liền và chồng lấn. Bằng cách kết hợp linh hoạt giữa Biến đổi khoảng cách (Distance Transform) và Giải thuật Watershed dựa trên thành phần liên thông, đề tài đã loại bỏ triệt để sai số đếm gộp, nâng độ chính xác nhận diện từ 60% lên 100% trên tập dữ liệu thực nghiệm.
Công trình không chỉ hoàn thành xuất sắc các mục tiêu học thuật về mặt giải thuật và tối ưu mã nguồn C++/OpenCV, mà còn mở ra tiềm năng ứng dụng thực tế to lớn trong kiểm tra sản phẩm tự động, đếm hạt nông sản và phân tích tế bào y sinh. Các lập trình viên và nhà nghiên cứu quan tâm có thể ứng dụng trực tiếp pipeline công nghệ này để tối ưu hóa bài toán thị giác máy tính trong hệ thống của mình.