• Thứ Năm, 22/01/2009 08:49 (GMT+7)

    Công nghệ cảm quan máy tính

    Một lĩnh vực đầy hứa hẹn, song hành với trí tuệ nhân tạo. Bài viết giới thiệu tổng quan về công nghệ cảm quan máy tính, khả năng ứng dụng cũng như hướng phát triển.

    Vai trò của máy tính là trợ giúp con người trong sản xuất và đời sống. Để đảm đương được những công việc phức tạp, máy tính phải có khả năng suy nghĩ và trí tuệ tương đối. Trước hết, máy tính phải có được cảm nhận về thế giới như con người. Công nghệ cảm ứng đã phát triển mạnh trong các thập niên qua - với nhiều giác quan hoàn hảo giúp máy tính cảm nhận về bản thân như gia tốc, vận tốc, định vị, định hướng, v.v...

    Hình 1 - Sơ đồ các phân nhóm trong CV

    Tuy nhiên, máy tính vẫn chưa thể cảm nhận về thế giới xung quanh - ngoại trừ một số thông tin như nhiệt độ, áp lực, khoảng cách... Mảng ghép quan trọng còn thiếu chính là thị giác. Thị giác đem đến thông tin có thể khái quát hóa và tập hợp thành mô hình. Thị giácđược hoàn thiện sẽ nâng tầm trí tuệ nhân tạo (AI) lên một tầm cao mới, máy tính sẽ trở nên gần gũi và tương tác với con người thuận lợi hơn.

    Công nghệ cảm quan máy tính (Computer Vision - CV) khởi đầu từ thập niên 70, cùng với ngành khoa học không gian - với yêu cầu điều khiển từ xa các thiết bị, robot thám hiểm. Sự phát triển không ngừng tốc độ xử lí của máy tính là động lực quan trọng cho CV. Khi sức mạnh máy tính được cải thiện, CV đã trở nên khả thi ứng dụng cho nhiều lĩnh vực.

    Các thành phần

    Khác với những công nghệ cảm ứng khác chủ yếu là thu thập và xử lí dữ liệu, CV cần thêm quá trình phân tích, diễn dịch dữ liệu để có được cảm nhận về thế giới. Phân tích thông tin, ngoài một cơ sở dữ liệu đầy đủ, đòi hỏi ở máy tính năng lực diễn dịch, qui nạp. CV có thể được chia thành các phân nhóm theo chức năng như sơ đồ hình 1. Từ nền tảng đó, người ta lựa chọn tích hợp các phân nhóm để hình thành các ứng dụng đa dạng.

    Thu thập ảnh

    Hình 2 - Kính viễn vọng Hubble trong không gian (nguồn: NASA)

    Giai đoạn tạo dạng dữ liệu được sử dụng trực tiếp trong CV: ảnh định dạng số. Quá trình thu thập ảnh/video và chuyển đổi thành ảnh số phụ thuộc vào các thiết bị phần cứng như cảm ứng ảnh, hệ thống kính quang học, màn lọc bước sóng, hệ thống chiếu sáng hỗ trợ.

    Hình 3 - Camera dạng viên thuốc nội soi thành ruột (nguồn: Hopkins Medical Magazine, Winter 2008)

    Với sự tiến bộ của ngành điện tử và cơ khí chính xác, các thiết bị phần cứng trong CV đã hoàn thiện - khoảng cách, độ phóng đại ảnh, tốc độ chụp và độ nhạy sáng đều đã phát triển vượt bậc - đủ khả năng thu thập ảnh số theo yêu cầu của mọi ứng dụng, từ kính viễn vọng chụp ảnh các thiên hà xa xăm (hình 2) đến camera tí hon chụp ảnh bên trong cơ thể người (hình 3). Sự phát triển của CV hiện nay nằm ở khả năng xử lí và phân tích những ảnh số đó.

    Hiệu chỉnh và phục chế ảnh

    Hình 4 - Tăng độ tương phản làm cho ảnh rõ nét hơn (nguồn: Wikipedia)

    Quá trình hiệu chỉnh giúp ảnh số đẹp hơn - làm rõ những chi tiết cần thiết, nổi bật những thông tin quan trọng trong bức ảnh. Bao gồm những thao tác đơn giản như tăng/giảm độ tương phản, lọc nét/mờ, hiệu chỉnh histogram... nhưng đem đến hiệu quả thiết thực và được sử dụng khá phổ biến qua các công cụ như Adobe Photoshop và Corel Photo-paint. Hiệu chỉnh ở mức độ phức tạp được áp dụng nhiều trong các ứng dụng về chẩn đoán y khoa.

    Hình 5 - Phục chế ảnh bị mờ do chuyển động (nguồn: Gonzalez, Digital Image Processing)

    Phục chế ảnh là quá trình áp dụng các mô hình toán, xác suất để tái lập những chi tiết còn thiếu hoặc ghi nhận sai trong quá trình thu thập ảnh. Ví dụ như ảnh chụp từ vệ tinh trong khi vệ tinh trải qua các rung động cơ học và qua khúc xạ khí quyển sẽ bị mờ. Từ các rung động được ghi nhận và mô hình khí quyển, mô hình sai số được sử dụng để loại bỏ vệt mờ trên ảnh.

    Xử lí màu sắc và độ phân giải ảnh

    Cũng là quá trình giúp làm ảnh số đẹp hơn đối với người xem. Trong khi quá trình hiệu chỉnh, phục hồi ảnh thao tác trên cường độ giữa các điểm ảnh, quá trình xử lí màu sắc thao tác trên mối tương quan giữa các kênh màu trong từng điểm ảnh.

    Thao tác nén và thu nhỏ ảnh giúp giải quyết vấn đề lưu trữ cơ sở dữ liệu ảnh lớn cũng như tăng tốc độ xử lí ảnh khi thông tin được giản lược đến mức vừa đủ cho ứng dụng.

    Xử lí hình trạng và phân tách chi tiết

    Hình 6 - Xử lí hình thể và phân tách chi tiết ( nguồn: Stanford University)

    Xử lí hình trạng là công đoạn đầu tiên trong nhóm phân tích dữ liệu ảnh, với mục tiêu xây dựng từ tập hợp các điểm ảnh một mô hình ảnh diễn tả bởi các hình thể cơ bản (hình chữ nhật, tròn, hình trụ,...). Mô hình ảnh là cầu nối từ giác quan của máy tính là ảnh số đến cảm quan của con người là ảnh khái niệm.

    Phân tách chi tiết tiếp nối bằng việc nhóm các hình thể trong mô hình ảnh thành các thực thể riêng biệt. Đây là công đoạn khó tự động hóa nhất và quan trọng trong CV khi phần lớn ứng dụng cấp cao đều dựa trên ảnh khái niệm.

    Tái dựng ảnh ba chiều và diễn giải ảnh


    Hình 7 - Xây dựng mô hình 3D từ tập hợp ảnh (nguồn: Stanford University)

    Phân tách chi tiết gặp nhiều khó khăn vì thực hiện trên từng ảnh và dựa vào phân bố các điểm ảnh hai chiều. Công đoạn xây dựng ảnh ba chiều thực hiện trên một tập hợp ảnh được chụp từ nhiều vị trí khác nhau nhằm khai thác mối liên hệ về không gian giữa các ảnh để xây dựng các điểm ảnh ba chiều. Từ đó diễn giải ảnh bằng các thực thể với hình dạng, kích thước thực.

    Diễn giải ảnh là quá trình xác định thực thể nào hiện diện trong ảnh. Diễn giải ảnh đi từ mức độ trực quan (hình dạng, kích thước, màu sắc,...) đến trừu tượng (hành động, sắc thái, cảm xúc,...). Diễn giải ảnh ở mức độ cao liên hệ trực tiếp đến trí tuệ nhân tạo, và giữ vai trò quan trọng trong các ứng dụng robot gia đình và giải trí.

    Hình 8 - Nhận dạng thực thể bằng thuật toán SIFT (nguồn: David G. Low, University of British Columbia)

    Nhận dạng và giám sát thực thể

    Quá trình xác định một thực thể nào đó có trong ảnh hay không và chuyển động ra sao trong một tập hợp ảnh.Quá trình nhận dạng và giám sát thực thể dựa trên một cơ sở dữ liệu đầy đủ về thực thể cũng như khả năng tự học để tiến hóa của thuật toán.

    Ứng dụng CV

    Các ứng dụng của CV rất rộng lớn và đa dạng. Tuy nhiên một số ứng dụng còn ở mức hạn chế và chỉ hiệu quả khi tích hợp với những công nghệ khác. Dưới đây chúng ta sẽ điểm qua một vài ứng dụng nổi bật, qua đó cảm nhận được vai trò cũng như tiềm năng của CV.

    Y khoa (chẩn đoán, giải phẫu)

    Hình 9 - Ảnh 3D từ hệ thống Brilliance iCT Scanner (nguồn: Philips)

    Các ứng dụng trong chẩn đoán y khoa dựa vào các thiết bị phần cứng đa dạng như máy chụp cắt lớp (CT - computed tomography), máy chụp cộng hưởng từ (MRI - magnetic resonance imaging), máy siêu âm, chụp X-quang. Ảnh chụp từ các thiết bị trên sẽ được điều chỉnh để giúp bác sĩ xem xét dễ dàng hơn, được tổng hợp để giúp bác sĩ nhìn nhận đầy đủ hơn.

    Ngoài ra, từ tập hợp ảnh (chụp cắt lớp, chụp bởi camera tí hon) mô hình 3D được xây dựng và sử dụng hiệu quả trong chẩn đoán cũng như điều trị. Điển hình như hệ thống chụp cắt lớp tối tân Brilliance iCT Scanner do công ty thiết bị y khoa Philips phát triển năm 2007 (Hình ) có khả năng tạo mô hình ảnh ba chiều toàn bộ cấu trúc cơ thể bệnh nhân - xương khớp, cơ quan nội tạng và cả đến từng mạch máu.

    An ninh (camera thông minh, nhận dạng)

    Hình 10 – Theo dõi khách bộ hành (nguồn: IEEE Computer Vision and Pattern Recognition, 2007).

    CV có thể được tích hợp vào hệ thống camera theo dõi truyền thống, đảm nhận vai trò theo dõi và cảnh báo, giúp giám sát viên không phải trực tiếp quan sát 24/24: phát hiện chuyển động và cảnh báo xâm phạm, phát hiện các tình huống bất thường dựa trên nhận dạng cử động như ẩu đả, cướp ngân hàng, nguy cơ chết đuối ...

    Một ứng dụng khác của CV trong lĩnh vực an ninh là nhận dạng khuôn mặt đã phổ biến trên một số dòng máy tính xách tay

    Giao thông (theo dõi lưu thông, điều khiển xe)

    Hình 11 - Hệ thống camera điều khiển xe tự hành SCABOR (nguồn: Technological University of Cluj Napoca).

    Ứng dụng đã được phổ biến hiện nay là theo dõi lưu thông: cảnh báo sớm tình trạng ùn tắc, ghi nhận các trường hợp phóng nhanh lạng lách, chụp và truy suất số xe vi phạm để xử lí ... Một ứng dụng khác đang được nghiên cứu phát triển là điều khiển xe tự hành. Hệ thống camera ghi nhận hình ảnh xung quanh khi xe di chuyển, bằng cảm quan máy tính, định vị làn đường, phát hiện các vật cản và xe khác, nhận biết các bảng chỉ dẫn,... để điều khiển xe.

    Robot (gia đình, không gian)

    Hình 12 – Ứng dụng cảm quan máy tính trên robot thám hiểm sao Hỏa (nguồn NASA).

    Trong lĩnh vực không gian, CV có vai trò quan trọng trong việc vận hành các robot thám hiểm (hình12). Trước hết là xây dựng mô hình 3D của bề mặt hành tinh để hoạch định đường đi an toàn nhất. Trong quá trình di chuyển, robot ước lượng chuyển động của mình dựa trên sự phân tích chuyển động của cảnh quan. Khi đã tiếp cận mục tiêu cần khảo sát, robot điều khiển cánh tay cơ học qua quan sát từ camera thực hiện các thao tác đào bới, lấy mẫu đất đá, chụp ảnh chi tiết,...

    CV cũng được phát triển cho các robot gia đình, giúp robot có thể xây dựng mô hình và định vị mình (SLAM – Simultaneous Localization and Mapping), giao tiếp với con người qua nhận dạng cử động.

    Tự động hóa sản xuất (đo lường, kiểm định chất lượng)

    Hình 13 - Camera kiểm định chất lượng sản phẩm (nguồn: machinevision.co.uk)

    Trong các dây chuyền sản xuất, công nghệ cảm quan máy tính được ứng dụng thay thế phương pháp thủ công hoặc cơ học nhằm tăng hiệu suất và tránh va chạm hư hại sản phẩm.

    Hình 14 - Camera kiểm tra số hiệu in trên sản phẩm (nguồn: Omron Electronics) .

    Phổ biến nhất là đo lường và kiểm định chất lượng sản phẩm: màu sắc và độ phủ đều khi sơn vỏ xe hơi, độ cân đối và hình dáng bánh răng (hình 13), chất lượng in nhãn mác (hình 14),...

    Phát triển ứng dụng với thư viện OpenCV

    OpenCV (Open Computer Vision library) do Intel phát triển, được giới thiệu năm 1999 và hoàn thiện thành phiên bản 1.0 năm 2006. Thư viện OpenCV - gồm khoảng 500 hàm – được viết bằng ngôn ngữ lập trình C và tương thích với các hệ điều hành Windows, Linux, Mac OS... đóng vai trò xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho lĩnh vực CV và tạo điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng.

    Hình 15 - Tổ chức thư viện OpenCV (nguồn: Intel)

    Trước OpenCV không có một công cụ chuẩn nào cho lĩnh vực CV. Các đoạn code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định. Các bộ công cụ thương mại như Matlab, Simulink, Halcon, v.v... lại có giá cao chỉ thích hợp cho các công ty phát triển các ứng dụng lớn. Ngoài ra còn có các giải pháp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho từng thiết bị, rất khó khăn cho việc mở rộng ứng dụng.

    OpenCV là công cụ hữu ích cho các bạn bước đầu làm quen với CV vì các ưu điểm sau:

    - OpenCV là công cụ chuyên dụng: Được Intel phát triển theo hướng tối ưu hóa cho các ứng dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lý, thư viện tạo giao diện, truy xuất thiết bị phần cứng được tích hợp sẵn. OpenCV thích hợp để phát triển nhanh ứng dụng.

    - OpenCV là công cụ mã nguồn mở: Không chỉ là công cụ miễn phí (với BSD license), việc được xây dựng trên mã nguồn mở giúp OpenCV trở thành công cụ thích hợp cho nghiên cứu và phát triển, với khả năng thay đổi và mở rộng các mô hình, thuật toán.

    Hình 16 - Nhận dạng khuôn mặt với Haar classifier trong OpenCV (nguồn: Intel)

    - OpenCV đã được sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV đã thu hút được một lượng lớn người dùng, trong đó có các công ty lớn như Microsoft, IBM, Sony, Siemens, Google và các nhóm nghiên cứu ở Standford, MIT, CMU, Cambridge... Nhiều forum hỗ trợ và cộng đồng người dùng đã được thành lập, tạo nên kênh thông tin rộng lớn hữu ích cho việc tham khảo tra cứu.

    Tổ chức thư viện OpenCV khá đơn giản (xem Hình ), bao gồm 4 module chính và 2 module mở rộng:

    - CV & CVAUX: hỗ trợ các chức năng cấp cao (nhận dạng khuôn mặt, hiệu chỉnh camera), xử lí ảnh, phân tích chuyển động... Trong đó CV là module ổn định, còn CVAUX chứa các chức năng thử nghiệm để đưa vào phiên bản kế tiếp.

    - CxCore: tổ chức dữ liệu cơ sở, thực hiện các thuật toán (phép tính ma trận, tính toán), hỗ trợ chuẩn dữ liệu XML, các thao tác vẽ chú thích.

    - HighGUI: giúp tạo nhanh giao diện đơn giản và hỗ trợ truy xuất ảnh/phim từ file hoặc thiết bị ngoại vi.

    Hai module còn lại là MLL và IPP ít được sử dụng hơn. Module MLL (machine learning library) cung cấp khả năng tự học của thuật toán với chức năng thống kê phân loại và các thuật toán phân nhóm. IPP là module thương mại cung cấp các đoạn mã mở rộng đã được tối ưu hóa cho phần cứng của Intel giúp tăng tốc các ứng dụng lớn.

    Kèm theo thư viện là tài liệu hướng dẫn và các ví dụ mẫu thể hiện một phần các chức năng của công cụ OpenCV.

    Các chức năng của openCV tập trung vào thu thập ảnh, xử lí ảnh và các thuật toán phân tích dữ liệu ảnh, bao gồm:

    - Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim

    - Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu và cây

    - Xử lí ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng to thu nhỏ, và hiệu chỉnh histograms

    - Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối chiếu bản mẫu, xấp xỉ các đơn vị hình học cơ sở - mặt phẳng, đa giác, ellipse, đường thẳng...

    - Phân tích dữ liệu ảnh: nhận dạng thực thể, theo dõi các chi tiết và phân tích chuyển động

    - Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh thông số (nếu cần thiết các bạn có thể tự tạo thêm các phím điều khiển thông qua thao tác chuột, hoặc tích hợp thêm các thư viện về giao diện như wxWidgets)

    - Chức năng vẽ, chú thích lên ảnh.

    Bài viết sau sẽ đi vào các hướng dẫn chi tiết và ví dụ cụ thể giúp bạn đọc làm quen với công cụ OpenCV.

    Tham khảo
    • R. C. Gonzalez and R. E. Woods, Digital Image Processing, Prentice Hall, 2002 - ISBN 0-201-18075-8.
    • E. Trucco and A. Verri, Introductory Techniques for 3-D Computer Vision, Prentice Hall, 1998 - ISBN 0-13-261108-2.
    • Y. Ma, S. Soatto, J. Kosecka and S. Sastry, An Invitation to 3D Vision - From Images to Geometric Models, Springer, 2005 - ISBN 978-0-387-00893-6.
    • G. R. Bradshi and Adrian Kaehler, Learning OpenCV - Computer Vision with the OpenCV Library, OReilley, 2008 - ISBN 0-596-51613-4.
    • OpenCV Yahoo Group: http://tech.groups.yahoo.com/group/OpenCV/
    • OpenCV Wiki:
    http://opencv.willowgarage.com/wiki/

    Bùi Trần Duy Vũ
    Tinh Hoa Solutions Corp.

    ID: A0901_100