OpenCV, viết tắt của Open Source Computer Vision Library, là một thư viện mã nguồn mở mạnh mẽ và đa năng được sử dụng rộng rãi trong trí tuệ nhân tạo (AI) và học máy (ML) . Nó cung cấp một bộ công cụ và thuật toán toàn diện được thiết kế riêng cho các tác vụ thị giác máy tính (CV) thời gian thực, xử lý hình ảnh và phân tích video. Đối với những người thực hành học máy, OpenCV đóng vai trò là bộ công cụ thiết yếu để xử lý dữ liệu trực quan, cho phép thực hiện các tác vụ từ tải và thao tác hình ảnh cơ bản đến hiểu cảnh phức tạp. Bản chất mã nguồn mở của nó, được duy trì bởi OpenCV.org , thúc đẩy một cộng đồng lớn và phát triển liên tục, biến nó thành công nghệ nền tảng trong lĩnh vực này. Nó có sẵn trên nhiều nền tảng khác nhau bao gồm Windows, Linux, macOS, Android , Và iOS và cung cấp giao diện cho các ngôn ngữ như Python , C++, Java và MATLAB.
Sự liên quan trong AI và Học máy
OpenCV đóng vai trò quan trọng trong quy trình AI và ML, đặc biệt là khi xử lý các đầu vào trực quan. Nó cung cấp các công cụ cơ bản để xử lý dữ liệu trước , một bước quan trọng trước khi đưa hình ảnh hoặc video vào các mô hình học máy. Các bước xử lý trước phổ biến do OpenCV xử lý bao gồm thay đổi kích thước, chuyển đổi không gian màu (như BGR sang RGB, thường cần thiết cho các mô hình được đào tạo với thứ tự màu cụ thể), giảm nhiễu bằng các bộ lọc như làm mờ Gauss và áp dụng nhiều phép biến đổi khác nhau để nâng cao chất lượng hình ảnh hoặc trích xuất các tính năng có liên quan. Quá trình xử lý trước này ảnh hưởng đáng kể đến hiệu suất của các mô hình học sâu (DL) .
OpenCV thường được sử dụng kết hợp với các khuôn khổ ML phổ biến như PyTorch và TensorFlow để xây dựng các ứng dụng CV đầu cuối. Trong khi các khuôn khổ này tập trung vào việc xây dựng và đào tạo mạng nơ-ron, OpenCV xử lý đầu vào/đầu ra, thao tác và thường là xử lý hậu kỳ dữ liệu trực quan, chẳng hạn như vẽ các hộp giới hạn hoặc mặt nạ phân đoạn được dự đoán bởi các mô hình như Ultralytics YOLO . Hiệu quả của nó trong việc xử lý các luồng video thời gian thực khiến nó trở nên không thể thiếu đối với các ứng dụng yêu cầu phân tích trực quan ngay lập tức, chẳng hạn như suy luận thời gian thực để phát hiện đối tượng hoặc ước tính tư thế .
Các tính năng và khả năng chính
OpenCV cung cấp một loạt các chức năng (hơn 2500 thuật toán), bao gồm cả các kỹ thuật thị giác máy tính cổ điển và hỗ trợ tích hợp học sâu hiện đại. Các khả năng chính bao gồm:
- I/O hình ảnh và video: Đọc và ghi nhiều định dạng hình ảnh ( JPEG , PNG , TIFF ) và video ( AVI , MP4 ).
- Xử lý hình ảnh: Các thao tác cơ bản như thay đổi kích thước, cắt xén ( xem hướng dẫn cắt xén đối tượng ), xoay, chuyển đổi không gian màu, lọc và biến đổi hình thái .
- Phát hiện và mô tả tính năng: Triển khai các thuật toán như SIFT , SURF (độc quyền, thường được thay thế bằng ORB trong các phiên bản gần đây) và FAST để xác định các điểm chính trong hình ảnh. ( Tài liệu phát hiện tính năng OpenCV ).
- Phát hiện đối tượng: Mặc dù không phải là mô hình đào tạo, nhưng nó cung cấp các công cụ để chạy các trình phát hiện được đào tạo trước (như chuỗi Haar để phát hiện khuôn mặt) và xử lý đầu ra từ các mô hình DL (ví dụ: vẽ hộp từ dự đoán YOLO11 ).
- Phân tích video: Bao gồm các công cụ phân tích chuyển động như luồng quang học , trừ nền và thuật toán theo dõi đối tượng ( xem chế độ theo dõi ).
- Hiệu chuẩn máy ảnh và tái tạo 3D: Các chức năng để hiểu hình học máy ảnh và tái tạo các cảnh 3D ( Hướng dẫn hiệu chuẩn máy ảnh ).
- Mô-đun Học máy: Bao gồm các triển khai của một số thuật toán ML cổ điển như Support Vector Machines (SVM) và K-Nearest Neighbors (KNN), mặc dù các tác vụ học sâu thường dựa vào các khuôn khổ chuyên dụng. Nó cũng cung cấp các chức năng để tải và chạy các mô hình được xuất ở các định dạng như ONNX . ( Tài liệu xuất mô hình ).
OpenCV so với các khái niệm liên quan
Sẽ rất hữu ích khi phân biệt OpenCV với các thuật ngữ liên quan:
- Computer Vision (CV) : CV là lĩnh vực khoa học rộng lớn liên quan đến việc cho phép máy móc diễn giải thông tin trực quan. OpenCV là một công cụ hoặc thư viện được sử dụng để triển khai các ứng dụng CV, không phải là lĩnh vực này.
- Xử lý hình ảnh : Chủ yếu tập trung vào việc xử lý hình ảnh (ví dụ: tăng độ tương phản, loại bỏ nhiễu). OpenCV cung cấp các chức năng xử lý hình ảnh mở rộng nhưng cũng bao gồm các tác vụ cấp cao hơn như nhận dạng đối tượng và hiểu cảnh, thuộc về thị giác máy tính.
- ML Frameworks ( PyTorch , TensorFlow ): Các framework này chủ yếu được thiết kế để xây dựng, đào tạo và triển khai mạng nơ-ron và các mô hình ML khác. OpenCV bổ sung cho chúng bằng cách cung cấp các công cụ thiết yếu để xử lý dữ liệu trực quan trước khi đưa vào mô hình (tiền xử lý) và sau khi suy luận (trực quan hóa, hậu xử lý). Mặc dù OpenCV có một số khả năng ML, nhưng đó không phải là trọng tâm chính của nó so với các framework chuyên dụng này. Ví dụ, Ultralytics HUB sử dụng các framework như PyTorch để đào tạo mô hình và có thể sử dụng OpenCV một cách ngầm định hoặc rõ ràng để xử lý dữ liệu.
Ứng dụng trong thế giới thực
Tính linh hoạt của OpenCV khiến nó trở nên phổ biến trong nhiều ứng dụng AI/ML:
- Xe tự hành : Trong xe tự lái và Hệ thống hỗ trợ lái xe tiên tiến (ADAS), OpenCV thường được sử dụng để xử lý ban đầu dữ liệu camera và LiDAR. Các nhiệm vụ bao gồm phát hiện làn đường, nhận dạng chướng ngại vật thông qua việc khớp tính năng hoặc phát hiện đường viền, nhận dạng biển báo giao thông (thường đưa hình ảnh đã xử lý vào bộ phân loại) và ghép ảnh cho hệ thống chế độ xem xung quanh. Ví dụ, khung hình camera thô có thể được xử lý trước (hiệu chỉnh độ méo, điều chỉnh độ sáng) bằng OpenCV trước khi đưa vào mô hình học sâu như YOLOv8 để phát hiện ô tô và người đi bộ. ( Khám phá công nghệ của Waymo ).
- Phân tích hình ảnh y tế : OpenCV hỗ trợ tải nhiều định dạng hình ảnh y tế khác nhau (như DICOM, thường có sự trợ giúp của các thư viện khác), tăng cường độ tương phản của hình ảnh để có thể nhìn rõ hơn các bất thường, phân đoạn các vùng quan tâm (như khối u hoặc cơ quan) bằng các kỹ thuật như thuật toán ngưỡng hoặc lưu vực, và ghi lại hình ảnh được chụp tại các thời điểm khác nhau hoặc từ các phương thức khác nhau. Dữ liệu được xử lý trước này sau đó thường được phân tích bởi các mô hình ML chuyên biệt để chẩn đoán hoặc lập kế hoạch điều trị. ( AI trong X quang - RSNA ).
Các ứng dụng khác bao gồm robot ( Tích hợp thị giác máy tính trong robot ), giám sát ( Hệ thống báo động an ninh ), thực tế tăng cường, kiểm soát chất lượng trong sản xuất và nông nghiệp (ví dụ: theo dõi sức khỏe cây trồng). Tài liệu Ultralytics cung cấp nhiều ví dụ về các hàm OpenCV có thể được sử dụng cho các bước xử lý trước hoặc sau kết hợp với YOLO mô hình.