1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu mô phỏng kĩ thuật thị giác nổi và ứng dụng dùng phần mềm opencv

74 1,5K 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 2,94 MB

Nội dung

Thị giác máy là một lĩnh vực đa dạng và đang rất phát triển. Khái niệm thị giác máy (Computer vision) có liên quan tới rất nhiều ngành học và hướng nghiên cứu khác nhau. 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 phim thì khái niệm và kỹ thuật về thị giác máy ngày càng được nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay. Hiện nay lĩnh vực này được các chuyên gia đánh giá là còn rất nhiều mới mẻ và có rất nhiều thay đổi trong thời gian tới. Lĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc điểm chung là các bài toán về thị giác máy tính đều không có một đề bài chung và cách giải duy nhất. Mỗi giải pháp giải quyết vấn đều được một kết quả nhất định cho những trường hợp cụ thể. Ta có thể thấy sự tương quan giữa thị giác máy với các lĩnh khác. Kỹ thuật thị giác máy là một kỹ thuật mới xuất hiện đã và đang phát triển mạnh mẽ trên thế giới hiện nay. Khái niệm về thị giác máy có liên quan tới nhiều ngành học và có xu hướng nghiên cứu khác nhau. Kể từ những năm 70 của thế kỉ 20, khi mà khả năng tính toán của máy tính trở lên mạnh mẽ, nó có thể giải quyết được những công việc cần tới công nghệ cao như xử lý các tập ảnh hay các đoạn video thì thị giác máy tính được nhắc đến, nghiên cứu và phát triển cho đến nay. Những năm gần đây thị giác máy tính được nghiên cứu và ứng dụng khắp trong nhiều lĩnh vực như công nghiệp, nông nghiệp, y học quân sự. Kỹ thuật thị giác máy tính được nghiên cứu ứng dụng trong sản xuất nông nghiệp từ thập kỷ 80 của thế kỷ 20, chủ yếu dùng trong dám định chủng loại thực vật, kiểm tra chất lượng sản phẩm và phân loại nông sản... theo sự phát triển của các thiết bị phần cứng, các kỹ thuật phần mềm máy tính, kỹ thuật xử lý ảnh cũng phát triển rất nhanh,nghiên cứu ứng dụng kỹ thuật thị giác máy tính trong sản xuất nông nghiệp có nhiều phát triển. Hiện nay lĩnh vực nghiên cứu này đang là một vấn đề nóng hổi của sản xuất nông nghiệp, ở một nước phát triển như Nhật Bản, Mỹ... trong sản xuất nông nghiệp đã từng bước ứng dụng hệ thống thị giác máy tính, như quản lý chủng loại và chất lượng tài nguyên nông nghiệp, thu nhận thông tin trạng thái sinh trưởng của cây trồng, tự động hóa thu hoạch nông sản phẩm, nghiên cứu bảo vệ thực vật, kiểm định chất lượng nông sản phẩm.

Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………… Hưng Yên, ngày….tháng…năm 2013 Giáo viên hướng dẫn Đoàn Văn Tuấn GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………… Hưng Yên, ngày….tháng…năm 2013 Giáo viên phản biện GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP LỜI MỞ ĐẦU Xử lý ảnh bao gồm lý thuyết kỹ thuật liên quan nhằm mục đích tạo hệ thống nhân tạo tiếp nhận thơng tin từ hình ảnh thu tập liệu đa chiều Đối với người chúng ta, q trình nhận thức bên ngồi điều dễ dàng, q trình nhận thức học thơng qua q trình sống người Tuy nhiên với vật vô tri vô giác máy tính, robot… điều thật bước tiến gian nan Các thiết bị ngày không nhận thơng tin dạng tín hiệu đơn lẻ mà cịn có nhìn thật với giới bên ngồi Cái nhìn qua q trình phân tích, kết hợp với mơ máy học,mạng noron… giúp cho thiết bị tiến dần tới hệ thống nhân tạo có khả định linh hoạt đắn nhiều OpenCV thư viện mã nguồn mở xử lí ảnh Intel đáp ứng đầy đủ yêu cầu lĩnh vực xử lý ảnh Trên giới lĩnh vực công nghiệp, nghiên cứu ứng dụng xử lý ảnh phát triển vơ mạnh mẽ có bước tiến kinh ngạc Ở Việt Nam lĩnh vực phát triển, nhiên việc sử dụng xử lý ảnh cơng nghiệp cịn mẻ non yếu thiếu thiết bị hỗ trợ,tài liệu nghiên cứu Vì hướng phát triển đầy hứa hẹn khơng thách thức Với mong muốn tham gia vào lĩnh vực góp phần vào phát triển xử lý ảnh Việt Nam, em thực đề tài “Nghiên cứu, mô kĩ thuật thị giác ứng dụng dùng phần mềm OpenCV” LỜI CẢM ƠN Khi bắt đầu nhận đề tài: Nghiên cứu,mô kĩ thuật thị giác ứng dụng GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP dùng OpenCV em cảm thấy lo lắng xử lý ảnh lĩnh vực mẻ Việt Nam thân lần tiếp xúc với lĩnh vực Em vui cuối hoàn thành sơ lược đề tài Trước hết , em xin gửi lời cảm ơn trân thành tới thầy ĐỒN VĂN TUẤN khơng có điều kiện làm việc trực tiếp với thầy nhiều qua lần tiếp xúc ngắn ngủi thầy cho chúng em lời động viên, lời khuyên quý báu giúp chúng em nhiều Qua đây, em xin cảm ơn đến thầy cô giáo khoa ĐIỆN- ĐIỆN TỬ giúp đỡ tạo điều kiện cho đồ án chúng em, em xin trân thành cảm ơn! MỤC LỤC GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử Hình 2.1 Hình 2.2 Hình 2.3 Hình 2.4 Hình 2.5 Hình 2.6 Hình 2.7 Hình 2.8 Hình 2.9 ĐỒ ÁN TỐT NGHIỆP Cấu tạo hệ thống thị giác máy 12 Cấu hình chuẩn hệ thống camera .17 Ví dụ thị giác mắt người 17 Sơ đồ khối hệ thống thị giác 18 Các bước thực hệ thống Stereo Vision 19 Mẫu bàn cờ 20 Ví dụ hình ảnh bị méo 21 Hình ảnh bị méo sau sửa méo 21 Âm mưu bóp méo xuyên tâm cho ống kính đặc biệt 22 Hình 2.10 Các thông số nội máy ảnh .22 Hình 2.11 Cặp âm (trên) cặp sửa chữa (dưới) Những hình ảnh vẽ đường epipolar tương ứng với điểm đánh dấu hình ảnh bên .23 Hình 2.12 Hình ảnh hình học Stereo 24 Hình 2.13 Bản đồ chiều sâu 26 Hình 2.14 Ví dụ đồ chiều sâu 26 Hình 2.15 Bản đồ chiều sâu sử dụng thuật toán SAD 27 Hình 2.16 Bản đồ chiều sâu sử dụng thuật toán SSD 28 Hình 2.17 Bản đồ chiều sâu sử dụng thuật tốn NCC 28 Hình 2.18 Quá trình đưa đồ độ sâu 29 Hình 2.19 Hình 2.20 Hình 2.21 Hình 2.22 Hình 2.23 Hệ thống robot phẫu thuật DaVinci y tế 30 Robot di động nhà 31 Xe không người lái 31 Kinect 32 Chơi game với Kinect .32 Hình 2.24 Quá trình phát triển OpenCV .33 Hình 2.25 Cấu trúc sở OpenCV 34 GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP Hình 2.26 cấu trúc visual 2010 40 Hình 2.27 Thiết lập cấu hình 43 Hình 3.1: Sơ đồ tổng thể đo khoảng cách 47 Hình 3.2: Ví dụ phương pháp trừ 48 Hình 3.3: Sơ đồ hệ thống phát đối tượng chuyển động 52 Hình 3.4: Ví dụ phương pháp trừ 53 Hình 3.6: Các phép liên thông 54 Hình 3.7: Ví dụ khác biệt phép liên thông .54 Hình 3.8: Phép bóc tách blob .55 Hình 3.9: Hình ảnh minh họa cơng thức .56 Hình 3.10 Tìm tiêu cự camera hiệu chỉnh camera 57 Hình 3.11 Ví dụ khử nhiễu 58 Hình 3.12: Kết thu 59 GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 1: MỞ ĐẦU 1.1 Lý chọn đề tài Ứng dụng xử lý ảnh sử dụng để phân loại, nhận dạng hình ảnh,…trong trình sản xuất sống Các tiến khả tính tốn, phổ biến thiết bị lưu trữ dung lượng lớn, đời nhiều phương pháp thuật toán cải tiến để nâng cao hiệu tốc độ tính tốn mở đường cho ứng dụng phát triển mạnh Xuất phát từ đó, em định chọn đề tài “Nghiên cứu,mô kĩ thuật thị giác ứng dụng dùng OpenCV” Mong muốn em nghiên cứu, tìm hiểu kỹ thuật tiên tiến lĩnh vực thị giác - ứng dụng hệ thống kiểm tra đề suất số cải tiến nhằm góp phần làm cho lĩnh vực trở nên phong phú phát triển hiệu với ứng dụng thực tiễn 1.2 Mục tiêu nghiên cứu + Nghiên cứu thị giác ứng dụng + Nghiên cứu phần mềm OpenCV + Mô đo khoảng cách từ camera đến vật + Đánh giá hiệu 1.3 Phương pháp nghiên cứu + Tìm hiểu kiến thức xử lý ảnh thông qua giáo trình Xử lý ảnh, viết xử lý ảnh diễn đàn – song song với việc tham khảo tài liệu giáo viên hướng dẫn cung cấp + Tham khảo mã nguồn mở xử lý ảnh, phát chuyển động sourceforge.net, github.com… Nhằm mục đích tìm hiểu q trình cài đặt thuật toán xử lý ảnh nâng cao ngơn ngữ lập trình C/C++ C# + Nghiên cứu dựa báo, tạp chí khoa học + Từng bước nghiên cứu, đánh giá đề xuất kỹ thuật cải thiện cho nội dung nghiên cứu Thực nghiệm dựa xây dựng ứng dụng đánh giá kết nghiên cứu 1.4 Dự kiến kết nghiên cứu + Hồn thiện q trình nghiên cứu thị giác nổi, phần mềm OpenCV, đánh giá kỹ thuật đo khoảng cách + Đề xuất kỹ thuật cải tiến + Đánh giá hiệu đề xuất 1.5 Điều kiện thực nghiệm + Phải có Laptop PC GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP + Các môi trường như: Nhà ở, phòng học, phòng thực hành, + Ánh sáng vừa đủ + Khơng có khói bụi nhiều + Yếu tố màu sắc - Ảnh khơng có nhiều vật chuyển động mạnh quạt trần Màu khơng có q nhiều màu sắc vùng màu + Thiết bị ghi hình file video - Thiết bị ghi hình có độ phân giải 1,3Mp File video : Kích thước lớn 320 x 320 pixel + Cấu hình máy tính - CPU tối thiểu : Pentium 1.0 GHz RAM tối thiều : 512 Mb ( điều kiện cài đặt Net Framework 4.0 ) + Khoảng cách thực nghiệm Thiết bị ghi hình cách vật khơng q 1m ( tùy thuộc vào thiết bị ghi hình) ( Khoảng cách đề nghị thông dụng cho camera ) GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tìm hiểu thị giác máy tính Thị giác máy lĩnh vực đa dạng phát triển Khái niệm thị giác máy (Computer vision) có liên quan tới nhiều ngành học hướng nghiên cứu khác Từ năm 1970 mà lực tính tốn máy tính ngày trở nên mạnh mẽ hơn, máy tính lúc xử lý tập liệu lớn hình ảnh đoạn phim khái niệm kỹ thuật thị giác máy ngày nhắc đến nghiên cứu nhiều ngày Hiện lĩnh vực chuyên gia đánh giá nhiều mẻ có nhiều thay đổi thời gian tới Lĩnh vực nghiên cứu thị giác máy rộng, đặc điểm chung toán thị giác máy tính khơng có đề chung cách giải Mỗi giải pháp giải vấn kết định cho trường hợp cụ thể Ta thấy tương quan thị giác máy với lĩnh khác Kỹ thuật thị giác máy kỹ thuật xuất phát triển mạnh mẽ giới Khái niệm thị giác máy có liên quan tới nhiều ngành học có xu hướng nghiên cứu khác Kể từ năm 70 kỉ 20, mà khả tính tốn máy tính trở lên mạnh mẽ, giải công việc cần tới công nghệ cao xử lý tập ảnh hay đoạn video thị giác máy tính nhắc đến, nghiên cứu phát triển Những năm gần thị giác máy tính nghiên cứu ứng dụng khắp nhiều lĩnh vực công nghiệp, nông nghiệp, y học quân Kỹ thuật thị giác máy tính nghiên cứu ứng dụng sản xuất nông nghiệp từ thập kỷ 80 kỷ 20, chủ yếu dùng dám định chủng loại thực vật, kiểm tra chất lượng sản phẩm phân loại nông sản theo phát triển thiết bị phần cứng, kỹ thuật phần mềm máy tính, kỹ thuật xử lý ảnh phát triển nhanh,nghiên cứu ứng dụng kỹ thuật thị giác máy tính sản xuất nơng nghiệp có nhiều phát triển Hiện lĩnh vực nghiên cứu vấn đề nóng hổi sản xuất nông nghiệp, nước phát triển Nhật Bản, Mỹ sản xuất nông nghiệp bước ứng dụng hệ thống thị giác máy tính, quản lý chủng loại chất lượng tài nguyên nông nghiệp, thu nhận thông tin trạng thái sinh trưởng trồng, tự động hóa thu hoạch nơng sản phẩm, nghiên cứu bảo vệ thực vật, kiểm định chất lượng nơng sản phẩm Thị giác máy tính đơi gọi thị giác máy,là sử dụng camera thu nhận hình ảnh từ thực tế, sau sử dụng máy tính tự động phân tích ảnh Qua nhận biết đối tượng miêu tả cảnh vật tiến hành điều khiển hoạt động hệ GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP thống theo số kiện yêu cầu Đây lĩnh vực khoa học kỹ thuật nghiên cứu dùng máy tính mơ bề ngồi cảnh vật cơng thị giác vĩ mơ Thị giác máy tính đan xen kết hợp nhiều ngành học, liên quan tới nhiều lĩnh vực toán học, quang học, trí tuệ nhân tạo, thần kinh sinh vật học, tâm lý vật lý học, khoa học máy tính, xử lý ảnh, hiểu hình ảnh, phân biệt màu Thị giác máy tính có q trình phát triển nghiên cứu ứng dụng 40 năm theo phát triển máy tính, kỹ thuật xử lý ảnh, kỹ thuật nhận dạng, lý thuyết điều khiển, trí tuệ nhân tạo Thị giác máy tính ứng dụng người máy kiểm tra đo lường công nghiệp, phân biệt vật thể, phân tích hình ảnh vệ tinh, trợ giúp chuẩn đốn y học, đo vẽ đồ hàng không kỹ thuật quân Phương pháp nghiên cứu từ 2D chuyển sang 3D, từ đến song song, từ trực tiếp dựa vào tín hiệu thu nhận qua xử lý tầng thấp tới tầng cao dựa vào đặc trưng, kết cấu, quan hệ tri thức Hình 2.1 Cấu tạo hệ thống thị giác máy Cấu tạo hệ thống thị giác máy tính thơng thường biểu diễn hinh Máy tính quay phim CCD ghi lại đối tượng cần nhận biết phân tích dạng hình ảnh Về chất máy quay phim CCD cảm biến quang điện thu nhận tín hiệu quang học phần ảnh đối tượng, bối cảnh chuyển thành tín hiệu điện để ghi lại phận thu nhận hình ảnh hoạt động độc lập gắn trực tiếp máy tính dạng card thu nhận hình ảnh chuyển tín hiệu điện máy quay phim thu nhận thành tín hiệu số, số hóa hình ảnh để máy tính tiến hành xử lý loại yêu cầu Hệ thống chiếu sáng cho phép nâng cao độ chiếu sáng phù hợp với hình ảnh thu nhận được, làm lợi cho xử lý phân tích hình ảnh 2.1.1 Ứng dụng thị giác máy a Khái niệm GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 10 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 4: KẾT LUẬN 4.1 Những mục tiêu đạt - Hồn tất việc tìm hiểu ứng dụng thị giác - Tìm hiểu phần mềm OpenCV - Tìm hiểu kỹ thuật đo khoảng cách - Đề xuất phương pháp cải tiến 4.2 Những mục tiêu chưa đạt - Chưa tìm hiểu áp dụng thuật toán khác - Chưa giải tốt trường hợp hình ảnh có bóng 4.3 Hướng nghiên cứu tương lai - Tìm hiểu thuật tốn để việc tính tốn xác - Tìm hiểu thuật tốn ứng dụng rộng rãi Kinect GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 60 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP PHỤ LỤC Chương trình tìm tiêu cự using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Structure; using NhanDangBienSoXeCSharp.HangSo; using System.Threading; using DoKhoangCachBangCamera.ThuVien; using DoKhoangCachBangCamera.DoiTuong; namespace DoKhoangCachBangCamera.BieuMau { public partial class frmTimTieuCu : Form { public frmTimTieuCu() { InitializeComponent(); } Capture cameraTrai; Capture cameraPhai; Image imgCurrentBGRTrai; Image imgCurrentBGRPhai; int numberfram = 0; #region Dieu Chinh Camera Hoac Nguon video private void BatDau() { try { cameraTrai = new Capture(CacThongSo.IndexOfCameraTrai); cameraPhai = new Capture(CacThongSo.IndexOfCameraPhai); cameraTrai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, CacThongSo.DoRongCuaAnh); cameraTrai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGH T, CacThongSo.DoCaoCuaAnh); cameraPhai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_ WIDTH, CacThongSo.DoRongCuaAnh); GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 61 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP cameraPhai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME _HEIGHT, CacThongSo.DoCaoCuaAnh); Application.Idle += RefreshFrames; } catch (Exception) { MessageBox.Show("Lỗi kết nối camera "); Application.Idle -= RefreshFrames; return; } } private void Dung() { cameraTrai.Stop(); cameraPhai.Stop(); Application.Idle -= RefreshFrames; } #endregion protected void RefreshFrames(object sender, EventArgs e) { numberfram++; imgCurrentBGRTrai = cameraTrai.QueryFrame(); imgCurrentBGRPhai = cameraPhai.QueryFrame(); ptbAnhCameraTrai.Image = VeDuongThangSongSong(imgCurrentBGRTrai).ToBitmap(); ptbAnhCameraPhai.Image = VeDuongThangSongSong(imgCurrentBGRPhai).ToBitmap(); } public Image VeDuongThangSongSong(Image anhVao) { Image KQ = anhVao.Copy(); int KC=anhVao.Height/10; Bgr bgr= new Bgr(Color.Green); for (int i = 0; i < KQ.Height / KC; i++) { KQ.Draw(new LineSegment2D(new Point(0,i*KC),new Point(KQ.Width,i*KC)),bgr,2); } return KQ; } Image imgCurrentBGRTraiCop; Image imgCurrentBGRPhaiCop; GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 62 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP private void btnLayNen_Click(object sender, EventArgs e) { PhatHienVat.AnhNenTrai = cameraTrai.RetrieveBgrFrame().Copy(); PhatHienVat.AnhNenPhai = cameraPhai.RetrieveBgrFrame().Copy(); } private void TimF() { float DBanDau=CacThongSo.KhoangCachHaiCamera; CacThongSo.KhoangCachHaiCamera = float.Parse(txtD.Text); float FBanDau = CacThongSo.TieuCu; btnDo.Enabled = false; imgCurrentBGRTraiCop = imgCurrentBGRTrai.Copy(); imgCurrentBGRPhaiCop = imgCurrentBGRPhai.Copy(); List dsVat = PhatHienVat.TinhKhoangCachVatBatKy(imgCurrentBGRTraiCop, imgCurrentBGRPhaiCop); if (dsVat.Count == 0) { MessageBox.Show("Khơng có vật để đo khoảng cách"); } else { double Z = double.Parse(txtZ.Text); double D = double.Parse(txtD.Text); double d = dsVat[0].DoLechViTriTren2Camera; double f =Math.Abs( (Z * d) / D); txtXLR.Text = d.ToString(); txtF.Text = f.ToString(); CacThongSo.TieuCu = float.Parse(txtF.Text); } PhatHienVat.VeKhuonMat(dsVat, imgCurrentBGRTraiCop, imgCurrentBGRPhaiCop); ptbAnhThat.Image = imgCurrentBGRTraiCop.ToBitmap(); btnDo.Enabled = true; CacThongSo.KhoangCachHaiCamera=DBanDau; CacThongSo.TieuCu = FBanDau; } private void btnDo_Click(object sender, EventArgs e) { TimF(); return; } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 63 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP private void btnHuy_Click(object sender, EventArgs e) { Dung(); this.Close(); } private void btnApDung_Click(object sender, EventArgs e) { CacThongSo.TieuCu = float.Parse(txtF.Text); CacThongSo.KhoangCachHaiCamera = float.Parse(txtD.Text); Dung(); this.Close(); } private void frmTimTieuCu_Load(object sender, EventArgs e) { BatDau(); txtF.Text = CacThongSo.TieuCu.ToString(); txtD.Text=CacThongSo.KhoangCachHaiCamera.ToString(); } } } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 64 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP Chương trình phát vật using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Structure; using Emgu.CV.UI; using Emgu.CV.GPU; using DoKhoangCachBangCamera.DoiTuong; using NhanDangBienSoXeCSharp.HangSo; using Emgu.CV.CvEnum; namespace DoKhoangCachBangCamera.ThuVien { class PhatHienVat { public static Image AnhNenTrai; public static Image AnhNenPhai; public static void DoKhoangCachVatBatKy(Image AnhTrai, Image AnhPhai) { List DSKhuonMat = TinhKhoangCachVatBatKy(AnhTrai , AnhPhai ); VeKhuonMat(DSKhuonMat, AnhTrai, AnhPhai); } public static List TinhKhoangCachVatBatKy(Image anhBenTrai, Image anhBenPhai) { List DSVatTrai = PhatHien(anhBenTrai, true); List DSVatPhai = PhatHien(anhBenPhai, false); if (DSVatTrai.Count == || DSVatPhai.Count == 0) return DSVatTrai; DSVatTrai.Sort(); DSVatPhai.Sort(); for (int i = 0; i < DSVatTrai.Count; i++) { DSVatTrai[i].NhapVoiKhuonMatBenPhai(DSVatPhai[i]); } return DSVatTrai; } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 65 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP private static List PhatHien(Image gray,bool TraiHayPhai) { List DSVat = new List(); List DSHinhChuNhat = new List(); Image AnhKhacBiet; Gray gr= new Gray(CacThongSo.NguongTruNen); Gray grMax= new Gray(255); if (TraiHayPhai) { AnhKhacBiet = AnhNenTrai.Copy().AbsDiff(gray).Convert(); } else { AnhKhacBiet = AnhNenPhai.Copy().AbsDiff(gray).Convert(); } AnhKhacBiet._SmoothGaussian(3); AnhKhacBiet._Dilate(1); AnhKhacBiet._Erode(1); AnhKhacBiet=AnhKhacBiet.ThresholdBinary(gr, grMax); gray.Save(Application.StartupPath + @"\anh.png"); AnhKhacBiet.Save(Application.StartupPath+ @"\khac.png"); AnhNenTrai.Save(Application.StartupPath + @"\trai.png"); AnhNenPhai.Save(Application.StartupPath + @"\phai.png"); using (var mem = new MemStorage()) { for (var contour = AnhKhacBiet.FindContours( CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, RETR_TYPE.CV_RETR_CCOMP, mem); contour != null; contour = contour.HNext) { if (contour.Area>400) DSHinhChuNhat.Add(contour.BoundingRectangle); } } Vat mat; foreach (var rect in DSHinhChuNhat) { mat = new Vat(rect, rect.Location, true); DSVat.Add(mat); } return DSVat; } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 66 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP public static void VeKhuonMat(List DSKhuonMat,Image AnhTrai,Image AnhPhai) { Bgr mauDo= new Bgr(Color.Red); Bgr mauXanh= new Bgr(Color.Green); MCvFont font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_TRIPLEX,2,2); Rectangle recPhai; foreach (var trai in DSKhuonMat) { AnhTrai.Draw(trai.HinhBao, mauDo,2); AnhTrai.Draw(trai.KhoangCachToiCamera.ToString(), ref font, trai.ViTriTrenAnhBenCameraTrai, mauDo); recPhai = new Rectangle(trai.ViTriTrenAnhBenCameraPhai, trai.HinhBao.Size); // AnhPhai.Draw(recPhai, mauDo, 2); AnhPhai.Draw(trai.KhoangCachToiCamera.ToString(), ref font, trai.ViTriTrenAnhBenCameraPhai, mauDo); } } } } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 67 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP Chương trình gắn kết đối tượng từ camera using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using NhanDangBienSoXeCSharp.HangSo; namespace DoKhoangCachBangCamera.DoiTuong { class Vat : IComparable { public Point ViTriTrenAnhBenCameraTrai{get; private set;} public Point ViTriTrenAnhBenCameraPhai { get; private set; } public double KhoangCachToiCamera{get; private set;} public double DoLechViTriTren2Camera {get; private set;} public Rectangle HinhBao { get; private set; } public Point ToaDoTam { get; private set; } public Vat(Rectangle rect, Point viTriTrenAnh, bool CameraTraiHayPhai) { this.HinhBao = rect; this.ViTriTrenAnhBenCameraTrai = viTriTrenAnh; this.ViTriTrenAnhBenCameraPhai = viTriTrenAnh; ToaDoTam = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2); } public void NhapVoiKhuonMatBenPhai(Vat mat2) { this.ViTriTrenAnhBenCameraPhai = mat2.ViTriTrenAnhBenCameraPhai; DoLechViTriTren2Camera= ViTriTrenAnhBenCameraPhai.XViTriTrenAnhBenCameraTrai.X; KhoangCachToiCamera =(int)Math.Abs( CacThongSo.TieuCu * (CacThongSo.KhoangCachHaiCamera / DoLechViTriTren2Camera)); } public int CompareTo(Vat other) { int hieuY = ToaDoTam.Y - other.ToaDoTam.Y; int hieuX = ToaDoTam.X - other.ToaDoTam.X; if (hieuY < -CacThongSo.KhoangCachSort) { return -1; } else { GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 68 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP if (hieuY > CacThongSo.KhoangCachSort) { return 1; } else { if (hieuX < -CacThongSo.KhoangCachSort) return -1; else if (hieuX > CacThongSo.KhoangCachSort) return 1; } } return 0; } } } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 69 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP Chương trình đo khoảng cách using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Structure; using DoKhoangCachCSharp.HangSo; using System.Threading; using DoKhoangCachBangCamera.ThuVien; namespace DoKhoangCachBangCamera.BieuMau { public partial class frmChinhDoKhoangCach : Form { public frmChinhDoKhoangCach() { InitializeComponent(); } Capture cameraTrai; Capture cameraPhai; Image imgCurrentBGRTrai; Image imgCurrentBGRPhai; int numberfram = 0; #region Dieu Chinh Camera Hoac Nguon video private void BatDau() { try { cameraTrai = new Capture(CacThongSo.IndexOfCameraTrai); cameraPhai = new Capture(CacThongSo.IndexOfCameraPhai); cameraTrai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, CacThongSo.DoRongCuaAnh); cameraTrai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGH T, CacThongSo.DoCaoCuaAnh); cameraPhai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH , CacThongSo.DoRongCuaAnh); cameraPhai.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGH T, CacThongSo.DoCaoCuaAnh); Application.Idle += RefreshFrames; GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 70 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP } catch (Exception) { MessageBox.Show("Lỗi kết nối camera "); Application.Idle -= RefreshFrames; return; } } private void Dung() { cameraTrai.Stop(); cameraPhai.Stop(); Application.Idle -= RefreshFrames; } private void TamDung() { cameraTrai.Pause(); cameraPhai.Pause(); } private void startToolStripMenuItem_Click(object sender, EventArgs e) { BatDau(); } private void chọnCameraToolStripMenuItem_Click(object sender, EventArgs e) { (new frmCaiDatCamera()).ShowDialog(); } private void tsmTamDung_Click(object sender, EventArgs e) { TamDung(); } private void tsmDung_Click(object sender, EventArgs e) { Dung(); } #endregion protected void RefreshFrames(object sender, EventArgs e) { numberfram++; try { imgCurrentBGRTrai = cameraTrai.QueryFrame(); GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 71 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP imgCurrentBGRPhai = cameraPhai.QueryFrame(); ptbAnhCameraTrai.Image = imgCurrentBGRTrai.ToBitmap(); ptbAnhCameraPhai.Image = imgCurrentBGRPhai.ToBitmap(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void hiệuChỉnhToolStripMenuItem_Click(object sender, EventArgs e) { } private void tìmTiêuCựToolStripMenuItem_Click(object sender, EventArgs e) { (new frmTimTieuCu()).Show(); } private void càiĐặtToolStripMenuItem_Click(object sender, EventArgs e) { (new frmCaiDatThongSo()).Show(); } Image imgCurrentBGRTraiCop; Image imgCurrentBGRPhaiCop; private void btnLayNen_Click(object sender, EventArgs e) { PhatHienVat.AnhNenTrai = cameraTrai.RetrieveBgrFrame().Copy(); PhatHienVat.AnhNenPhai = cameraPhai.RetrieveBgrFrame().Copy(); } private void DoKhoangCach() { btnDo.Enabled = false; imgCurrentBGRTraiCop = imgCurrentBGRTrai.Copy(); imgCurrentBGRPhaiCop = imgCurrentBGRPhai.Copy(); ptbAnhThat.Image = imgCurrentBGRTraiCop.ToBitmap(); btnDo.Enabled = true; } private void btnDo_Click(object sender, EventArgs e) { DoKhoangCach(); } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 72 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP Các thông số using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace NhanDangBienSoXeCSharp.HangSo { class CacThongSo { public static int IndexOfCameraTrai = 0; public static int IndexOfCameraPhai = 1; public static float TieuCu = 780; public static float KhoangCachHaiCamera = 20; public static double DoRongCuaAnh = 640; public static double DoCaoCuaAnh = 480; public static string HinhNenTrai = ""; public static string HinhNenPhai = ""; public static int NguongTruNen = 60; public static int KhoangCachSort=10; } } GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 73 - Trường ĐHSPKT Hưng Yên Khoa: Điện – Điện Tử ĐỒ ÁN TỐT NGHIỆP TÀI LIỆU THAM KHẢO [1]- 3D Point Cloud Generation from Rigid and Flexible Stereo Vision Systems [2] - Stereo Vision: Algorithms and Applications [3] - Learning OpenCV : Computer Vision with the OpenCv library – O’Reilly [4] - J.L.Barron, D J Fleet, and S S Beauchemin Performance of optical flow techniques International Journal of Computer Vision, 12(1):43–77, 2007 [5] - R.T.Collins et al A system for Video surveillance and monitoring: VSAM final report Technical report CMU-RI-TR-00-12, Robotics Institute, Carnegie Mellon [6] www.vision.deis.unibo.it/smatt [7] http://www.codeproject.com/ [8] https://github.com/MasteringOpenCV/code [9] http://www.thuvienspkt.edu.vn/index.php?nv=luan-van&op=Luan-an-Cao-hoc/Vemap-3D-va-2D-dung-stereo-camera-Luan-van-thac-si GVHD : Đoàn Văn Tuấn SVTH : Phạm Đức Chung Lớp : ĐTK9LC1 -Trang 74 - ... ảnh Việt Nam, em thực đề tài ? ?Nghiên cứu, mô kĩ thuật thị giác ứng dụng dùng phần mềm OpenCV? ?? LỜI CẢM ƠN Khi bắt đầu nhận đề tài: Nghiên cứu, mô kĩ thuật thị giác ứng dụng GVHD : Đoàn Văn Tuấn SVTH... ứng dụng phát triển mạnh Xuất phát từ đó, em định chọn đề tài ? ?Nghiên cứu, mô kĩ thuật thị giác ứng dụng dùng OpenCV? ?? Mong muốn em nghiên cứu, tìm hiểu kỹ thuật tiên tiến lĩnh vực thị giác - ứng. .. dựa xây dựng ứng dụng đánh giá kết nghiên cứu 1.4 Dự kiến kết nghiên cứu + Hồn thiện q trình nghiên cứu thị giác nổi, phần mềm OpenCV, đánh giá kỹ thuật đo khoảng cách + Đề xuất kỹ thuật cải tiến

Ngày đăng: 05/09/2014, 16:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w