Tài liệu ứng dụng xử lí ảnh trong robot bám đối tượng.

  • Số trang: 78 |
  • Loại file: PDF |
  • Lượt xem: 141 |
  • Lượt tải: 0

Mô tả:

1 LỜI NÓI ĐẦU Trong những năm gần đây, trên thế giới nghiên cứu ứng dụng công nghệ xử lý và nhận dạng ảnh đang là hướng nghiên cứu tập trung của rất nhiều nhà khoa học trong các lĩnh vực. Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được những tập dữ liệu lớn như các hình ảnh, các đoạn video thì một khái niệm nữa về xử lý ảnh nữa ra đời đó là: Thị giác máy - Computer vision.Có thể nói xử lý ảnh số và thị giác máy đã được phát triển và trở thành một lĩnh vực khoa học. Xử lý ảnh số không chỉ nâng cao chất lượng của ảnh mà còn phân tích và lý giải tìm ra giải thuật để ứng dụng vào thực tiễn. Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tạp dữ liệu đa chiều. Việc kết hợp giữa thị giác máy với các kỹ thuật khác như công nghệ thông tin, truyền thông, điện tử, điều khiển tự động, cơ khí… cho chúng ta rất nhiều ứng dụng trong đời sống hàng ngày cũng như trong khoa học, an ninh, y học, quân sự… Ngày nay, ứng dụng của thị giác máy đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất, và tự động hóa tòa nhà. Trong thời gian qua dưới sự hướng dẫn tận tình của Cô HÀ THỊ KIM DUYÊN em đã dành thời gian nghiên cứu về xử lý ảnh và nhận dạng ảnh hay nói đúng hơn là thuật toán xử lý ảnh bám đối tượng – Tracking. Những nội dung mà em nghiên cứu được ở đây bao gồm: • • nền C Nghiên cứu tổng quan về xử lý ảnh số và hệ bám đối tượng Tìm hiểu và nghiên cứu về thư viện mã nguồn mở OpenCV trên • Nghiên cứu và xây dựng thuật toán bám ảnh di động tối ưu dựa trên thư viện mã nguồn mở OpenCV của Intel • Xây dựng được một hệ thống camera di động (phần cứng lẫn phần mềm) bám theo mục tiêu di dộng ứng dụng thuật toán bám ảnh Camshitf. • Đánh giá được kết quả đạt được trong thời gian nghiên cứu. 2 Để hoàn thành đồ án này đúng tiến độ và có chất lượng, em xin gửi lời cảm ơn chân thành nhất tới Cô Th.s HÀ THỊ KIM DUYÊN là người trực tiếp hướng dẫn em làm đồ án này. Đồng thời em cũng xin gửi lời cảm ơn sâu sắc tới các anh, các bác phòng Quang – điện tử, Viện vật lý – Viện khoa học công nghệ Việt Nam đã tạo điều kiện tối đa giúp đỡ em về mặt thiết bị và dụng cụ thí nghiệm phục vụ quá trình làm đồ án. Và cuối cùng, chúng em xin dành tất cả lòng biết ơn và kính trọng sâu sắc nhất tới bố mẹ chúng em, những người đã sinh thành, nuôi dưỡng chúng em nên người, đã lo lắng, chỉ bảo từ những việc nhỏ nhất, đã tạo mọi điều kiện cho chúng em được sống và học tập một cách tốt nhất để vươn tới những ước mơ và hoài bão của mình. Em xin chân thành cảm ơn! Hà nội ngày 28 tháng 5 năm 2011 Sinh viên thực hiện Hà Tiến Thanh 3 Chương 1: TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ HỆ THỐNG BÁM ĐỐI TƯỢNG 1.1 Tổng quan về xử lý ảnh Xử lý ảnh bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đa chiều. Đối với mỗi người chúng ta, quá trình “học” thông qua thế giới bên ngoài là một điều dễ dàng. Quá trình nhận thức đó được “học” thông qua quá trình sống của mỗi người. Tuy nhiên với các vật vô tri vô giác như máy tính, robot… thì điều đó quả thực là một bước tiến rất gian nan. Các thiết bị ngày nay không chỉ nhận thông tin ở dạng tín hiệu đơn lẻ mà còn có thể có cái “nhìn” thật với thế giới bên ngoài. Cái “nhìn” này qua quá trình phân tích, kết hợp với các mô hình như máy học, mạng nơron… sẽ giúp cho thiết bị tiến dần tới một hệ thống nhân tạo có khả năng ra quyết định linh hoạt và đúng đắn hơn nhiều. Một số lĩnh vực ứng dụng công nghệ xử lý ảnh mang tính đột phá như sau: 1.1.1 Trong lĩnh vực quân sự Các hệ thống tích hợp quang hồng ngoại có khả năng tự động điều khiển dàn hỏa lực (pháo, tên lửa) được lắp đặt cho các trận địa cao xạ, trên xe tăng, tàu chiến, máy bay, tên lửa hoặc vệ tinh (Hình 1.1). Chúng được thay thế và hỗ trợ các dàn rada dễ bị nhiễu trong việc tự động phát hiện, cảnh giới, bám bắt mục tiêu. Đặc biệt có những loại lắp trên máy bay có khả năng điều khiển hỏa lực đánh phá hàng chục mục tiêu một lúc. Ngoài ra còn phải kể đến các đầu tự dẫn tên lửa và đạn thông minh. 1.1.2 Trong an ninh, phòng chống tội phạm, bảo vệ pháp luật Các hệ thống camera nhận dạng khuôn mặt vân tay tự động cũng như phát hiện, theo dõi, cảnh báo các âm mưu và hoạt động khủng bố. Các xe robốt tự hành có gắn các camera cũng được ứng dụng trong các môi trường độc hại, dò phá bom mìn (Hình 1.1). 4 1.1.3 Trong lĩnh vực hàng không vũ trụ Các hệ thống ống kính chụp ảnh viễn thám (remote sensing) lắp trên các vệ tinh bay quanh trái đất có thể chụp và quan sát được các vật kích cỡ 0,5 m từ độ cao 750 km trong mọi điều kiện thời tiết (Hình 1.1).. Việc nối ghép các ống kính này với hệ thống GPS sẽ cho phép xây dựng các bản đồ số có những lĩnh vực ứng dụng cực kỳ quan trọng trong quốc phòng an ninh, phát triển kinh tế, xã hội... 1.1.4 Trong công nghiệp, giao thông, xây dựng Hệ thống quang điện tử đóng vai trò của các thị giác máy (machine vision) có khả năng tự động đo đạc kiểm tra chất lượng sản phẩm trong các dây truyền sản xuất: phân loại hạt ngũ cốc, cà phê; tìm lỗi lắp ráp linh kiện các bản vi mạch và khuyết tật các mối hàn và động cơ... Các hệ thống quang điện tử cũng được ứng dụng ngày càng nhiều trong giao thông như đo tốc độ, tự động kiểm soát điều khiển và phân luồng giao thông (Hình 1.2). 1.1.5 Trong nghiên cứu y sinh dược học Các kính hiển vi có khả năng tự động nhận dạng và đo đếm các tế bào với độ chính xác cao. Các kính hiển vi có hệ thống dẫn đường laser cho phép thực hiện những phẫu thuật rất phức tạp như mổ u não, nơi mà một sự không chính xác cỡ μm cũng gây tổn hại đến các dây thần kinh chằng chịt xung quanh.. 1.1.6 Trong công nghiệp giải trí truyền hình Các hệ thống tích hợp có thể điều khiển các camera kích thước và khối lượng lớn dễ dàng tự động bám theo các đối tượng chuyển động nhanh như bóng đang bay, đua xe... 5 Hình 1.1: Một số hệ thống tích hợp quang-điện tử và ảnh nhiệt trong quân sự và chiến đấu Hình 1.2: Một số hệ thống tích hợp camera giám sát trên tàu viễn thám và trong công nghiệp và công nghệ vũ trụ Hình 1.3: Hệ thống camera điện tử ứng dụng trong nghiên cứu thời tiết và trong công nghiệp 6 1.2 Giới thiệu chung về Robot Rô bốt (robot) hay người máy là một loại máy có thể thực hiện công việc một cách tự động hoặc được điều khiển gián tiếp qua máy tính. Rô bốt là một tác nhân cơ khí, nhân tạo, thường là một hệ thống cơ khí-điện tử kết hợp hoàn hảo.Với sự xuất hiện và chuyển động của mình, rô bốt gây cho con người cảm giác là nó cũng có những giác quan như con người. Từ “rô bốt” (người máy) thường được hiểu với hai nghĩa đó là 1 cơ cấu cơ khí chính xác và phần mềm tự hoạt động.Về lĩnh vực người máy thì Nhật Bản đang đi đầu về lĩnh vực này. Ngày nay, Rô bốt đang là tâm điểm của một cuộc cách mạng lớn sau Internet. Rô bốt ngày càng được sử dụng rộng rãi trong công nghiệp, y tế, giáo dục và đào tạo, giải trí và an ninh quốc phòng, thám hiểm không gian. Rô bốt là sản phẩm công nghệ có độ phức tạp cao chứa hàm lượng tri thức vô cùng phong phú về tất cả cac lĩnh vực của khoa học và công nghệ. Ngày nay người ta vẫn còn tranh cãi về vấn đề “Một loại máy đủ những tiêu chuẩn gì để được coi là một rô bốt???” Một cách gần chính xác, rô bốt phải có một vài (không nhất thiết phải đầy đủ) đặc điểm sau đây: 1. Không phải tự nhiên, tức là do con người chế tạo ra. 2. Có khả năng nhận biết môi trường xung quanh. 3. Có thể tương tác với các vật thể trong môi trường. 4. Có sự thông minh và có khả năng đưa ra các lựa chọn dựa trên môi trường và có thể hoạt động theo 1 chu trình đã được lập trình sẵn. 5. Có khả năng điều khiển bằng các lệnh để có thể thay đổi tùy theo yêu cầu của người sử dụng. 6. Có thể di chuyển quay tịnh tiến một chiều hay nhiều chiều. 7. Có sự khéo léo trong vận động. 7 1.3 Giới thiệu tổng quan về hệ thống rô bốt camera bám đối tượng (Tracking mobile robot) Hệ thống rô bốt hoạt động bằng các cảm biến như cảm biến màu sắc, hồng ngoại, cảm biến dò đường, siêu âm giờ đây đã dần dần được phát triển và tích hợp thêm “thị giác”.Với sự phát triển của khoa học công nghệ, việc tích hợp trên rô bốt hệ thống camera thông minh ứng dụng công nghệ xử lý ảnh là rất cần thiết phục vụ cho công nghiệp, quốc phòng và xã hội. Hệ thống thị giác có thể phân thành 2 lớp, theo như cấu trúc của hệ, đó là hệ có camera gắn cố định và hệ có camera gắn trên tay máy (eye-in-hand). Trong hệ camera cố định, camera được gắn cố định so với hệ trục tọa độ thực, thu thập ảnh của cả mục tiêu và cả môi trường. Mục tiêu của hệ camera cố định này là cung cấp tín hiệu điều khiển sao cho tay máy đặt được vị trí mong muốn. Mục đích của cấu trúc eye-in-hand là điều khiển tay máy sao cho ảnh của mục tiêu di động hoặc cố định được duy trì ở vị trí mong muốn trên mặt phẳng ảnh thu được. Máy tính Camera Robot Tín hiệu điều khiển Hình 1.4: Cấu trúc hệ camera cố định điều khiển và giám sát cánh tay rô bốt 8 camera Vật thể cần giám sát Robot eye-in-hand Hình 1.5: Cấu trúc hệ Camera rô bốt eye-in-hand Các nghiên cứu của môi trường động bị bỏ khá xa so với môi trường tĩnh do ảnh hưởng khá lớn của tốc độ tinh toán cũng như độ chinh xác của việc phân tích ảnh. Do vậy có nhiều thuật toán để cải thiện tốc độ xử lý ảnh và cải thiện can nhiễu trong quá trình thu thập dữ liệu từ camera. Một khó khăn và thách thức của thị giác máy là việc phân loại đối tượng. một rô bốt có thể phải đối mặt với nhiều đối tượng khác nhau, trong khi chỉ một đối tượng được quan tâm còn các đối tượng khác thì không. Để nhận biết được vị trí của mục tiêu trong môi trường động, các đặc trưng của mục tiêu là rất quan trọng. Các điểm lỗ, các góc cạnh, các đặc điểm điển hình có thể dễ dàng tính toán xử lý ở môi trường tĩnh, nhưng trong môi trường động thì rất khó vì chi phí về thời gian là rất lớn, ảnh hưởng của tốc độ làm cho việc xử lý ảnh tách lấy đặc trưng của đối tượng là rất khó. Bài toán bám mục tiêu di động với quỹ đạo không biết trước yêu cầu phải giữ được đối tượng ở một vị trí nhất định trên mặt phẳng ảnh. Thuật toán CamShift trong OpenCV được sử dụng để tính toán tọa độ trọng tâm của đối tượng trên mặt phẳng ảnh. Một số hệ thống tracking rô bốt thực tế đã được triển khai: 9 Hình 1.6: PAN robot và Robot Pops (nguồn: www.mobilerobot.org) Hình 1.7: Robot Talon và Robot MARRS (nguồn Internet) Hình 1.8: Robot thám hiểm sao hỏa và Robot MIDbo Ngày nay việc xây dựng một hệ thống rô bốt thông minh và có khả năng thay thế con người làm việc trong các điều kiện khắc nghiệt và nguy hiểm là rất cần 10 thiết, đơn cử như việc làm việc trong các hầm mỏ các nhà máy hạt nhân và các vùng nguy hiểm bom mìn…thì khi ấy các rô bốt như thế này hoàn toàn hữu dụng và là lựa chọn tối ưu. Với mục tiêu hướng tới xây dựng một hệ thống rô bốt camera thông minh có thể phục vụ trong công tác dò mìn cứu trợ cứu nạn, và có khả năng do thám, tôi cũng đã tìm hiểu và đi vào nghiên cứu chế tạo một hệ tracking thông minh có khả năng tự hành và bám mục tiêu di động dựa trên công nghệ xử lý ảnh có giao tiếp và kiểm soát, lưu trữ thông tin bằng máy tính. Có thể hệ thống lại rằng, một hệ thống bám đối tượng bao gồm: LOS Đế và cảm biến ảnh Bộ xử lý Mục tiêu Hình 1.9: Cảm biến ảnh, gimbal và bộ vi xử lý Hình 1.10: Tổng quan về một hệ thống bám Mục đích của hệ thống bám video, ảnh tự động là duy trì một đường ngắm viết tắt là LOS (Line Of Sight) giữa cảm biến – mục tiêu một cách ổn định và hoàn toàn 11 tự động trong khi tồn tại cả chuyển động tương đối của mục tiêu và chuyển động của đế gắn cảm biến làm nhiễu loạn tới dữ liệu cảm biến hình ảnh. Mục tiêu thường được định vị ban đầu, bởi hoặc là người điều khiển hoặc là hệ thống nhận dạng mục tiêu tự động. Sau đó hệ thống bám sẽ khóa chặt mục tiêu và duy trì LOS tự động. Hệ thống bám ảnh tự động thường có 3 bộ phận chính (hình 1.8): (1) bộ cảm biến hình ảnh (camera chẳng hạn), (2) bộ chấp hành thường là các trục khớp quay (gimbal) có gắn động cơ hoặc khí nén, và (3) bộ vi xử lý.Một vòng điều khiển phản hồi,được gọi là vòng bám, liên tục hiệu chỉnh bộ chấp hành để giữ mục tiêu vào tâm của trường nhìn viết tắt là FOV (Field Of View) của bộ cảm biến. Bộ vi xử lý sẽ khép kín vòng này bằng cách tính toán độ lệch để điều khiển cơ cấu chấp hành. Các thành phần hoạt động theo thứ tự: (1) bộ vi xử lý định vị tín hiệu mục tiêu trong các dòng hình ảnh từ bộ cảm biến, (2) bộ vi xử lý ước lượng trạng thái mục tiêu và tạo ra các lệnh điều khiển cơ cấu chấp hành trên cơ sở các thông tin trạng thái, (3) lệnh điều khiển được áp dụng vào LOS cảm biến, (4) bộ cảm biến tạo ra một vòng video mới, và (5) quá trình được lặp lại. Cảm biến hình ảnh, có thể là các camera hoặc các cảm biến hình ảnh khác như: cảm biến ảnh CCD (Charge Couple Device) là loại cảm biến sử dụng một lưới hình chữ nhật của các điểm (site) thu thập điện tử phủ trên một đế silic mỏng để ghi lại năng lượng ánh sáng đến mỗi điểm trong chúng. Mỗi một điểm được tạo thành bằng cách cấy một lớp SiO2 trên đế và sau lắng đọng một cấu trúc dẫn lên trên. Khi photon ánh sáng đập vào silic, thì cặp điện tử lỗ trống sẽ được tạo ra và các điện tử mang điện tích âm (electron) sẽ được bật ra ở cổng tương ứng. Với mỗi ánh sáng có bước sóng khác nhau thì các điện tích bật ra tương ứng cũng sẽ khác nhau.các dòng điện tử này đi qua bộ biến đổi để lấy ra được mức điện áp quy định tương ứng với mỗi màu sắc. Và tập hợp những tín hiệu điện này sẽ được xử lý để khôi phục lại hình ảnh của đối tượng thông qua thiết bị chuyên dụng chuyển đổi. 12 Hình 1.11: Cảm biến CCD Có thể nói rằng, khối cảm biến hình ảnh có thể sử dụng các cảm biến màu sắc hoặc camera, tuy nhiên có thể khẳng định rằng, khối này có ảnh hưởng rất lớn đến chất lượng và tốc độ của một hệ bám ảnh. Vì tốc độ thu thập dữ liệu để gửi về bộ vi xử lý rất quan trọng, nó ảnh hưởng đến việc tính toán của bộ vi xử lý để nhanh chóng đưa ra luật điều khiển cho cơ cấu chấp hành.Camera tốc độ và chất lượng càng cao thì hệ bám sẽ hoạt động với xác suất chính xác cao. Ngày nay với sự phát triển của khoa học công nghệ thì cảm biến hình ảnh cũng được hiện đại hóa và cải thiện được tốc độ cũng như chất lượng hình ảnh, điển hình là các hệ thống camera tích hợp, hồng ngoại, lade, không dây… Với yêu cầu mục đích của đồ án thì khối cảm biến hình ảnh của tôi sử dụng ở đây là hệ thống camera không dây tích hợp hồng ngoại quan sát ban đêm. Vì camera là lựa chọn tối ưu trong việc xây dựng một hệ thống triển khai thực nghiệm, trong khi các cảm biến hình ảnh khác chỉ dùng trong một mục đích nghiên cứu nhất định, tốc độ không cao và khó sử dụng và khó tiếp cận. Ngược lại camera thì hoàn toàn đáp ứng đủ yêu cầu để xây dựng một hệ thống bám ảnh thực nghiệm và dễ tiếp cận. 13 Hình 1.12: Camera quan sát tích hợp Về hệ cơ cấu chấp hành thì có thể sử dụng là khí nén hoặc động cơ để điều khiển. Tuy nhiên tùy vào mục đích sử dụng và yêu cầu riêng của hệ thống ta có thể sử dụng cơ cấu chấp hành nào để phù hợp nhất. Ở đây ta có thể sử dụng hệ thống đế xoay dùng động cơ điều khiển và kiểm soát góc độ và tốc độ quay. Các hệ trên thị trường hiện nay như các hệ PTS, HN (đế xoay camera) tuy nhiên các hệ này thường là các động cơ xoay chiều điều khiển cho nên việc điều khiển tốc độ và kiểm soát góc quay cũng gặp nhiều khó khăn. Hình 1.13: Đế xoay PST, HN để gắn camera quan sát Trong hệ thống của tôi sử dụng hoàn toàn là động cơ 1 chiều có gắn encoder để kiểm soát tốc độ và góc quay, được điều khiển bằng phương pháp điều xung PWM, nên hoàn toàn phù hợp với yêu cầu của hệ thống. 14 Việc lựa chọn động cơ 1 chiều DC (Direct Current) là một lựa chọn tối ưu và có tính cơ động cao nhỏ gọn, có thể di chuyển đến mọi vị trí vì có khả năng dùng acqui và pin lưu trữ, phù hợp với nhiều điều kiện khác nhau, phù hợp với nhiều địa hình có thể triển khai thực tế. Về bộ vi xử lý, có thể là các vi mạch xử lý chuyên dụng DSP (Digital signal processing) hay các mạch vi điều khiển hoạc là máy vi tính PC (Personal computer). Ngoài nhiệm vụ thu thập dữ liệu, chúng có nhiệm vụ xử lý các dữ liệu này bằng các chương trình được nhúng trong bộ xử lý hoặc chạy trên các PC. Một vi điều khiển (microcontroller) là một máy tính trên một chip (Computer-on–a–chip, single-chipcomputer). Thường thì các vi điều khiển này được gọi là các bộ điều khiển nhúng (embedded controller) vì chúng và các mạch điện tử hổ trợ thường được thiết kế lắp đặt (nhúng) ngay bên trong thiết bị điều khiển. Một số loại mạch nhúng thường gặp như: Psoc, PC 104, FPGA, SBC (Single board computer), CMUCAM1 2 3, DSP và các máy tính nhúng.(hình 1.13). Hình 1.14: Các mạch nhúng ( SBC use PSoC, FPGA, CMUCAM, DSP, máy tính công nghiệp PC104) Các mạch nhúng trên đều có ưu điểm là nhỏ gọn, có thể can thiệp và cấu trúc của chúng có nghĩa là có thể trực tiếp lập trình trên nó, tuy nhiên chúng có nhược điểm là khó sử dụng, phức tạp và mang tính chuyên ngành cao, không phổ biến và có dung lượng bộ nhớ nhỏ chỉ có thể xử lý và ít có khả năng lưu trữ thông tin hình 15 ảnh hoặc video khi cần thiết (nếu muốn lưu trữ phải dùng thêm thiết bị ngoại vi nên khá phức tạp). Một trong những thiết bị vừa có thể lập trình và vừa có thể xử lý tín hiệu đồng thời có khả năng lưu trữ thông tin lớn đó là máy tính cá nhân PC. Máy PC ra đời nhằm phục vụ những yêu cầu của người sử dụng, sử dụng đơn giản, phổ biến đáp ứng được những yêu cầu của hệ thống. Hiện nay máy tính cá nhân cũng đã được thiết kế nhỏ gọn với đầy đủ chức năng. Do vậy trong khuôn khổ đề tài này tôi đã lựa chọn máy tính laptop để xử lý và có thể lưu trữ được thông tin hình ảnh và video, âm thanh.Giúp người điều khiển có thể quan sát trực tiếp mục tiêu và khi cần thiết sẽ can thiệp trực tiếp vào quá trình điều khiển. Như vậy việc lựa chọn máy tính laptop là phù hợp với yêu cầu đề tài. Như vậy, mục tiêu của đề tài là xây dựng được một hệ thống bám ảnh di động bao gồm một hệ tích hợp rô bốt điều khiển camera thông minh thu thập dữ liệu gửi về trung tâm lưu trữ và điều khiển từ xa thông qua hệ thống máy tính. Rôbốt và camera có thể hoàn toàn hoạt động tự động bám ảnh, vật thể hoặc có thể can thiệp điều khiển bởi người sử dụng, phục vụ cho công tác nghiên cứu, công tác cứu hộ, dò phá bom mìn, phục vụ nhiều mục đích trong cuộc sống. 16 Chương 2: TỔNG QUAN VỀ THƯ VIỆN MÃ NGUỒN MỞ OPENCV TRÊN NỀN C 2.1 Thư viện OpenCV 2.1.1 OpenCV là gì? OpenCV viết tắt của Open Source Computer Vision Library. Nó có chứa hon 500 hàm sử dụng thị giác máy, và được phát triển bởi tập đoàn Intel. OpenCV là một thư viện mã nguồn mở (open source) tham khảo tại: http://www.sourceforge.net Thư viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều hành như Linux, Window và Max OS X. OpenCV được thiết kế để nâng cao hiệu suất tính toán và nhấn mạnh đến hệ thống thời gian thực. Một điều tuyệt vời của OpenCV là nó đưa ra một hệ thống đơn giản, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng trong thị giác máy, kể cả các hệ thống kiểm tra trong nhà máy, bức ảnh trong các lĩnh vực y học, bảo mật, rô bốt học… Nó chứa các lạp trình xử lý ảnh rất đơn giản, kể cả khi thực thi các hàm bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt, lọc Kalman. Kể từ khi được giới thiệu và sử dụng vào tháng 1 năm 1999, OpenCV đã được sử dụng trong rất nhiều ứng dụng, các sản phẩm và các nghiên cứu. Ví dụ như trong lĩnh vực hàng không vũ trụ, bản đồ web trực tuyến, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dò tìm và cảnh báo, quản lý hê thống sản xuất, xử lý camera, ứng dụng trong quân sự, hàng không không người lái, trên mặt đắt và trên tàu ngầm. Ngoài ra nó còn sử dụng trong nhận dạng âm thanh. OpenCV là một chìa khóa quan trọng trong các rô bốt sử dụng thị giác máy như Stanford hay Asimo của Nhật Bản. Quá trình phát triển của OpenCV được thể hiện ở hình 2.1: 17 Hình 2.1: Quá trình phát triển của OpenCV Trên thế giới còn một số thư viện như Emugu CV nhưng phát triển trên nền C# . OpenCV được phát triển trên nền C và C++ thì sẽ dễ dàng cho những người mới tiếp cận hơn Emugu CV. 2.1.2 Vì sao lựa chọn OpenCV? Thị trường thị giác máy đang ngày càng mở rộng và lên tục phát triển. Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng hơn. Đặc biệt tối ưu khi sử dụng cấu trúc Intel. Tạo ra các mẫu ứng dụng bằng các thư viện được cập nhật thường xuyên và thực hiện các thuật toán nặng như dò tìm khuôn mặt. Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư viện OpenCV trong ứng dụng của mình như : Intel, Microsoft, IBM, Siemens, Google… và các trung tâm nghiên cứu như: Stanford, MIT, Cambridge, INRIA… Hơn 14000 thành viên trên forum OpenCVyahoogroup.com với trung bình một ngày có đến 10-20 thông điệp comment trao đổi hàng ngày. Điều đó khẳng định rằng OpenCV thực sự đã góp phần vô cùng lớn trong lĩnh vực thị giác máy. 18 2.1.3 Cấu trúc và nội dung OpenCV như thế nào? Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấu trúc và nội dung của OpenCV ở 5 phần. Cấu trúc của openCV được chia làm 5 phần chính, 4 trong số đó được chỉ ra trong hình 2.2 CV MLL HighGUI Xử lý ảnh và thuật toán về thị giác máy Thống kê và tập hợp các công cụ xử lý Giao diện, truy xuất ảnh và video CXCORE Cấu trúc cơ sở và các thuật toán, hỗ trợ XML, các hàm vẽ Hình 2.2: Cấu trúc của OpenCV CXCORE chứa các định nghĩa kiểu dữ liệu cơ sở. Ví dụ, các cấu trúc dữ liệu cho ảnh, điểm và hình chữ nhật được định nghĩa trong cxtypes.h . CXCORE cũng chứa đại số tuyến tính và phương pháp thống kê, chức năng duy trì và điều khiển chuỗi. Một số ít, các chức năng đồ họa để vẽ trên ảnh cũng được đặt ở đây. CV chứa các thuật toán về xử lý ảnh và định kích cỡ camera. Các chức năng hình họa máy tính cũng được đặt ở đây. CVAUX được mô tả trong tài liệu của OpenCV như chứa các mã cũ và thứ nghiệm. Tuy nhiên, các giao diện đơn cho sự nhận diện ảnh ở trong module này. Code sau này chúng được chuyên dụng cho nhận diện mặt và chúng được ứng dụng rộng rãi cho mục đích đó. HIGHGUI và CVCAM được đặt trong cùng thư mục là “otherlibs”. 19 HIGHGUI chứa các giao diện vào ra cơ bản, nó cũng chứa các khả năng cửa sổ mở rộng và vào ra video. CVCAM chứa các giao diện cho video truy cập qua DirectX trên nền Windows 32 bits. 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. 20 2.2 Thư viện OpenCV và môi trường làm việc Microsoft visual studio 2008 2.2.1 Cài đặt OpenCV phiên bản 2.1 dành cho VC++ 2008 Trước hết vào trang web: http://sourceforge.net/projects/opencvlibrary/ download OpenCV 2.1 phiên bản dành cho VC++ 2008 trên nền window. Tiến hành cài đặt: Hình 2.3: Setup OpenCV 2.1 Click Next: Hình 2.4: Chọn I Agree
- Xem thêm -