Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
1,78 MB
Nội dung
TRƢỜNG ĐẠI HỌCH VIỆN KỸ THUẬT CÔNG TRƢỜNG ĐẠIVÀ HỌC VINH NGHỆ VIỆN KỸ THUẬT VÀ CÔNG NGHỆ ĐỒ ÁN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC TỐT NGHIỆP ĐẠI HỌC Đề tài: ĐềTHIẾT tài: KẾ CAMERA GIÁM SÁT VÀ XỬ LÝ ẢNH TRÊN NỀN TẢNG RASPBERRY PILÝ THIẾT KẾ CAMERA GIÁM SÁT VÀ XỬ ẢNH TRÊN NỀN TẢNG RASPBERRY PI Sinh viên thực hiện: HỒ SỸ QUÂN Lớp 53K1-KTĐTTT Giảng viên hƣớng dẫn: TS ĐẶNG THÁI SƠN Sinh viên thực hiện: HỒ SỸ QUÂN Lớp 53K1-KTĐTTT Giảng viên hƣớng dẫn: TS ĐẶNG THÁI SƠN Nghệ An, 07-2017 Nghệ An, 07-2017 -1- LỜI MỞ ĐẦU Ngày nhu cầu sử dụng camera ngƣời ngày cao, với xuất camera kỹ thuật số giúp ngƣời có hình ảnh thực sử dụng camera cho nhiều mục đích khác nhau, camera hệ thống đắc lực giúp ngƣơi quản lý, giám sát thời gian thực cách hiệu Camera giúp ta ghi lại kí ức, hình ảnh sinh động sống Nhất thiết bi an ninh, camera khơng ghi hình quay lƣu lại vào nhớ mà cịn tƣơng tác với thiết bị khác để kết hợp thành hệ thống thơng minh, phát điều kiện bất thƣờng nơi giám sát Bên cạnh kết hợp thêm thƣ viện OpenCV để xử lý ảnh số lĩnh vực nhƣ lắp đặt hệ thống nhận dạng biển số xe, hệ thống nhân dạng vân tay chấm cơng … Chính em lựa chọn đề tài tốt nghiệp “thiết kế camera giám sát v h trê ề t g Raspberry Pi 3” Cấu trúc đồ án gồm chƣơng: Chƣơng Giới thiệu máy tính nhúng ngơn ngữ lập trình cho hệ thống Chƣơng Tổng quan Kit Raspberry Pi3 Chƣơng Lý thuyết xử lý ảnh Python OpenCV Chƣơng Phân tích, thiết kế hệ thống camera giám sát Em xin trân trọng cảm ơn TS Đặng Thái Sơn hƣớng dẫn nội dung phƣơng pháp suốt trình triển khai thực đồ án Xin trân trọng cảm ơn tập thể thầy cô giáo Viện Kỹ thuật Công nghệ giảng dạy, giúp đỡ chúng em hồn thành chƣơng trình đào tạo Do hạn chế thời gian lực, đồ án khơng tránh khỏi thiếu sót Em kính mong nhận đƣợc ý kiến góp ý thầy bạn để chỉnh sửa hoàn thiện Em i châ th hc mơ ! i T M TẮT ĐỒ ÁN Đồ án vào tìm hiểu hệ thống nhúng thiết bị hệ thống nhúng thƣờng sử dụng Từ có nhìn tổng quan chi tiết ƣu điểm, chức năng, ứng dụng hƣớng phát triển hệ thống nhúng Trên sở nghiên cứu hệ thống nhúng đơn giản, dễ sử dụng giá thành rẻ máy tính nhúng Raspberry Pi Với việc sử dụng board mạch máy tính nhúng em tìm hiểu nghiên cứu đề tài: “thiết bị giám sát sử dụng camera xử lý ảnh tảng Raspberry Pi 3” Đề tài tập trung nghiên cứu thiết kế camera giám sát sử dụng để quay video chụp ảnh Từ d ng ngôn ngữ python kết hợp với thƣ viện OpenCV để xử lý ảnh nhƣ: chuyển đổi phông màu, nhận dạng biển số xe, lọc ảnh … ABSTRACT The project goes on to find about embeded system and embedded system devices often used From there has an overview and more details about the advantages, functions, applications and development of embeded systems On that basis we go to research a embedded system is simple, easy to use and cheap that is computer embeded Raspberry Pi With the use of embedded computer board circuit to learn and research: “Surveillance equipment use camera and image processing on the platform Raspberry Pi 3” The project focus on research and desingn a surveillance camera for video recording and photography From there use python language combined library OpenCV for processing image such as: Color conversion, license plate identification, filter image … ii MỤC LỤC LỜI MỞ ĐẦU - T M TẮT ĐỒ ÁN ii ABSTRACT ii MỤC LỤC iii DANH MỤC CÁC HÌNH ẢNH v DANH MỤC CÁC TỪ VIẾT TẮT vi CHƢƠNG GIỚI THIỆU MÁY TÍNH NHÚNG VÀ NGƠN NGỮ LẬP TRÌNH CHO HỆ THỐNG 1.1 Tổng quan máy tính nhúng 1.1.1 Sự đời hệ thống nhúng 1.1.2 Đặc điểm ứng dụng hệ thống nhúng 1.1.3 Kiến trúc hệ nhúng 1.1.4 Tình hình phát triển thiết bị nhúng 1.1.5 Các ngơn ngữ cho lập trình hệ nhúng 1.2 Tổng quan Python thƣ viện OpenCV 11 1.2.1 Ngơn ngữ lập trình Python 11 1.2.2 Thƣ viện OpenCV 15 1.3 Giới thiệu phần mềm Qt Creator 18 1.4 Kết luận chƣơng 19 CHƢƠNG TỔNG QUAN VỀ KIT RASPBERRY PI3 20 2.1 Giới thiệu chƣơng 20 2.2 Giới thiệu Kit Raspberry Pi 20 2.3 Cấu tạo phần cứng Raspberry Pi 20 2.3.1 Cấu hình Raspberry Pi Model B 21 2.3.2 Cấu trúc phần cứng 22 2.3.3 Ngơn ngữ lập trình Pi 24 2.3.4 Các hệ điều hành cho Raspberry pi 24 2.3.5 Phụ kiện hỗ trợ kèm theo 26 2.3.6 Cài đặt hệ điều hành cho Raspberry pi 27 2.3.7 Làm việc với Raspberry pi qua máy tính 29 2.4 Camera 33 2.5 Kết luận chƣơng 35 CHƢƠNG L THUYẾT VỀ XỬ L ẢNH BẰNG PYTHON VÀ OPENCV 36 3.1 Phƣơng pháp nội suy 36 iii 3.1.1 Nội suy tuyến tính 36 3.1.2 Nội suy song tuyến tính 36 3.2 Thay đổi v ng màu 36 3.3 Chuyển đổi hình học hình ảnh 37 3.3.1 Chuyển đổi 37 3.3.2 Nhân rộng 37 3.3.3 Dịch 37 3.3.4 Vòng xoay 37 3.4 Phƣơng pháp lọc số ảnh 38 3.4.1 Lọc hình ảnh 38 3.4.2 Lọc Gaussian 39 3.4.3 Lọc song phƣơng 39 3.4.4 Lọc Blur 40 3.4.5 Lọc Sobel 40 3.4.6 Lọc Laplace 41 3.4.7 Tìm biên ảnh dựa lọc Canny 41 3.5 Kết luận chƣơng 43 CHƢƠNG PHÂN TÍCH, THIẾT KẾ HỆ THỐNG CAMERA GIÁM SÁT 44 4.1 Giới thiệu chƣơng 44 4.2 Cài đặt môi trƣờng làm việc cho Kit Raspberry Pi 44 4.2.1 Cài đặt hệ điều hành Raspbian 44 4.2.2 Cài đặt ngôn ngữ python 44 4.2.3 Import thƣ viện OpenCV 45 4.2.4 Gắn camera vào Kit 45 4.3 Lƣu đồ thuật toán 45 4.4 Yêu cầu mục tiêu thiết kế 45 4.5 Phƣơng pháp nghiên cứu 45 4.6 Thiết kế hệ thống 46 4.7 Đánh giá kết thảo luận 46 4.8 Những kết đạt đƣợc qua xử lý ảnh 47 4.9 Kết luận chƣơng 52 KẾT LUẬN CHUNG 53 PHỤ LỤC 54 TÀI LIỆU THAM KHẢO 60 iv DANH MỤC CÁC HÌNH ẢNH Hình 1.1 Mơ hình hệ thống mạch nhúng Hình 1.2 Một số thiết bị nhúng thơng dụng Hình 1.3 Kiến trúc tổng thể hệ thống nhúng Hình 1.4 Logo ngôn ngữ Python Hình 1.5 Logo ngơn ngữ Java 10 Hình 2.1 Kit Raspberry Pi mode B 21 Hình 2.2 Mặt trƣớc Kit Raspberry Pi mode B 22 Hình 2.3 Mặt sau Kit Raspberry Pi mode B 22 Hình 2.4 Cấu trúc phần cứng Raspberry Pi 22 Hình 2.5 Sơ đồ chân kết nối Raspberry Pi .23 Hình 2.6 Sơ đồ 40 chân GPIO Raspberry Pi 23 Hình 2.7 Phụ kiện kèm theo với Raspberry Pi 27 Hình 2.8 Giao diện phần mềm SD Formatter 4.0 .28 Hình 2.9 D ng phần mềm Win32 Disk để copy hệ điều hành vào thẻ nhớ 29 Hình 2.10 Thông tin địa IP 29 Hình 2.11 Giao diện raspi-config 30 Hình 2.12 Giao diện PuTTY máy tính .31 Hình 2.13 Màn hình điều khiển Raspberry SSH 31 Hình 2.14 Giao diện TightVNC Viewer máy tính .33 Hình 2.15 Màn hình điều khiển Pi từ máy tính 33 Hình 2.16 Module Pi camera 34 Hình 4.1 Lƣu đồ thuật tốn cho Kit xử lý 45 Hình 4.2 Hệ thống sau hồn thiện .46 Hình 4.3 Những hình ảnh chuyển đổi khơng gian màu 47 Hình 4.4 Điều chỉnh độ tƣơng phản độ sáng 47 Hình 4.5 Ảnh đƣợc xử lý qua phép lọc khác .48 Hình 4.6 Chỉ điểm tr ng hai hình 48 Hình 4.7 Nhận dạng biển số xe 49 v DANH MỤC CÁC TỪ VIẾT TẮT OpenCV Open Computer Vision Vào/Ra I/O Input/Output GUIs Graphical User Interfaces Giao diện đồ họa ngƣời d ng IDE Integrated Development Environment Môi trƣờng phát triển tích hợp HĐH Operating system Hệ điều hành CPU Central Processing Unit Bộ xử lý trung tâm GPU Graphics Processing Unit Bộ xử lý đồ họa GPIO General Purpose Input/Output Cổng vào/ra vạn SoC System on Chip Hệ thống Chip IoT Internet of Things Mạng internet vạn vật LCD Liquid Crystal Display Màn hình tinh thể lỏng VNC Virtual Network Computing Mạng máy tính ảo SSH Secure Shell vi CHƢƠNG GIỚI THIỆU MÁY TÍNH NHÚNG VÀ NGƠN NGỮ LẬP TRÌNH CHO HỆ THỐNG 1.1 Tổng quan máy tính nhúng 1.1.1 Sự đời hệ thống nhúng Hệ thống nhúng (Embedded System) thuật ngữ để hệ thống có khả tự trị đƣợc nhúng vào môi trƣờng hay hệ thống mẹ Đó hệ thống tích hợp phần cứng phần mềm phục vụ toán chuyên dụng nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc truyền tin Đặc điểm hệ thống nhúng hoạt động ổn định có tính tự động hố cao Hình 1.1 Mơ hình hệ thống mạch nhúng Hệ thống nhúng thƣờng đƣợc thiết kế để thực chức chun biệt Khác với máy tính đa chức năng, chẳng hạn nhƣ máy tính cá nhân, hệ thống nhúng thực một vài chức định, thƣờng kèm với yêu cầu cụ thể bao gồm số thiết bị máy móc phần cứng chun dụng mà ta khơng tìm thấy máy tính đa nói chung Vì hệ thống đƣợc xây dựng cho số nhiệm vụ định nên nhà thiết kế tối ƣu hóa nhằm giảm thiểu kích thƣớc chi phí sản xuất Các hệ thống nhúng thƣờng đƣợc sản xuất hàng loạt với số lƣợng lớn Hệ thống nhúng đa dạng, phong phú chủng loại Đó thiết bị cầm tay nhỏ gọn nhƣ đồng hồ kĩ thuật số máy chơi nhạc MP3, sản phẩm lớn nhƣ đèn giao thơng, kiểm sốt nhà máy hệ thống kiểm soát máy lƣợng hạt nhân Xét độ phức tạp, hệ thống nhúng đơn giản với vi điều khiển phức tạp với nhiều đơn vị, thiết bị ngoại vi mạng lƣới đƣợc nằm gọn lớp vỏ máy lớn Các thiết bị PDA máy tính cầm tay có số đặc điểm tƣơng tự với hệ thống nhúng nhƣ hệ điều hành vi xử lý điều khiển chúng nhƣng thiết bị hệ thống nhúng thật chúng thiết bị đa năng, cho phép sử dụng nhiều ứng dụng kết nối đến nhiều thiết bị ngoại vi Hệ thống nhúng Apollo Guidance Computer (Máy tính Dẫn đƣờng Apollo) đƣợc phát triển Charles Stark Draper phịng thí nghiệm trƣờng đại học MIT Hệ thống nhúng đƣợc sản xuất hàng loạt máy hƣớng dẫn cho tên lửa quân vào năm 1961 Nó máy hƣớng dẫn Autonetics D-17, đƣợc xây dựng sử dụng bóng bán dẫn đĩa cứng để trì nhớ Khi Minuteman II đƣợc đƣa vào sản xuất năm 1996, D-17 đƣợc thay với máy tính sử dụng mạch tích hợp Tính thiết kế chủ yếu máy tính Minuteman đƣa thuật tốn lập trình lại sau để làm cho tên lửa xác hơn, máy tính kiểm tra tên lửa, giảm trọng lƣợng cáp điện đầu nối điện Từ ứng dụng vào năm 1960, hệ thống nhúng giảm giá phát triển mạnh mẽ khả xử lý Bộ vi xử lý hƣớng đến ngƣời tiêu d ng Intel 4004, đƣợc phát minh phục vụ máy tính điện tử hệ thống nhỏ khác Tuy nhiên cần chip nhớ ngồi hỗ trợ khác Vào năm cuối 1970, xử lý bit đƣợc sản xuất, nhƣng nhìn chung chúng cần đến chip nhớ bên Vào thập niên 80, kỹ thuật mạch tích hợp đạt trình độ cao dẫn đến nhiều thành phần đƣa vào chip xử lý Các vi xử lý đƣợc gọi vi điều khiển đƣợc chấp nhận rộng rãi Với giá thấp, vi điều khiển trở nên hấp dẫn để xây dựng hệ thống chuyên dụng Đã có b ng nổ số lƣợng hệ thống nhúng tất lĩnh vực thị trƣờng số nhà đầu tƣ sản xuất theo hƣớng Ví dụ, nhiều chip xử lý đặc biệt xuất với nhiều giao diện lập trình kiểu song song truyền thống để kết nối vi xử lý Vào cuối năm 80, hệ thống nhúng trở nên phổ biến hầu hết thiết bị điện tử khuynh hƣớng tiếp tục Cho đến nay, khái niệm hệ thống nhúng đƣợc nhiều ngƣời chấp nhận là: hệ thống thực số chức đặc biệt có sử dụng vi xử lý Khơng có hệ thống nhúng có phần mềm 1.1.2 Đặc điểm ứng dụng hệ thống nhúng Đặc điểm hệ thống nhúng Hệ thống nhúng thƣờng khối riêng biệt mà hệ thống phức tạp nằm thiết bị mà điều khiển Các hệ thống nhúng bị giới hạn nhiều phần cứng chức phần mềm so với máy tính cá nhân Giới hạn phần cứng bao gồm giới hạn khả xử lý, tiêu thụ điện năng, nhớ, chức phần cứng… Còn giới hạn phần mềm thƣờng liên quan đến việc hỗ trợ ứng dụng, ứng dụng bị thu gọn tính năng, khơng có hệ điều hành hệ điều hành có nhiều hạn chế Tuy nhiên, ngày nay, giới hạn đƣợc khắc phục đáng kể hệ thống nhúng đƣợc thiết kế phức tạp đầy đủ tính Phần mềm hệ thống nhúng đƣợc lƣu trữ nhớ ROM, Flash đƣợc gọi Firmware Hệ thống nhúng đƣợc thiết kế để thực chức chuyên biệt Đây điểm khác biệt so với hệ thống máy tính khác nhƣ máy tính cá nhân siêu máy tính thực nhiều chức khác với phép tính phức tạp Chuyên dụng giúp nâng cao tính dễ sử dụng tiết kiệm tài nguyên Cảm nhận môi trƣờng: cảm biến nhiệt độ, độ ẩm, ánh sáng, trọng lƣợng…, cảm nhận tín hiệu điện (máy dò nhiễu điện từ) Tác động trở lại mơi trƣờng (hú cịi báo động phát khói tịa nhà…) Tốc độ tƣơng tác phải đáp ứng thời gian thực (hệ thống còi báo hỏa, hệ thống chống trộm tơ…) -Tìm hiểu ngơn ngữ lập trình Python thƣ viện OpenCV -Tìm hiểu module camera -Thiết kế sản phẩm -Khảo sát hoạt động sản phẩm 4.6 Thiết kế hệ thống Để thiết kế đƣợc hệ thống hồn chỉnh phải cài hệ điều hành Raspbian, ngơn ngữ lập trình Python thƣ viện OpenCV cho máy tính nhúng Raspberry Pi3 Tiếp theo kết nối module camera cho Raspberry Pi3 qua cổng socket CSI Cuối c ng viết chạy chƣơng trình ngơn ngữ Python để hệ thống hoạt động Hình 4.2 Hệ thống sau hồn thiện 4.7 Đánh giá kết thảo luận Từ sở, phƣơng pháp đề em thiết kế sản phẩm hoàn thiện, hoạt động ổn định Áp dụng thƣ viện OpenCV vào hệ thống giám sát giám sát xử lý đƣợc nhiều khó khăn gặp phải cần khởi động hệ thống ngồi chỗ mà giám sát đƣợc nhiều chỗ khác Tuy nhiên, hệ thống có nhƣợc điểm khơng thể khắc phục đƣợc thẻ nhớ đầy copy cut liệu thu thập đƣợc qua nhớ 46 khác thay đổi thể nhớ thay đổi thẻ nhớ phải cài lại tồn cài 4.8 Những kết đạt đƣợc qua xử lý ảnh Thay đổi không gian màu Gray, HSV, CMYK … điều chỉnh độ tƣơng phản độ sáng c ng với phép lọc khác nhƣ: lọc Blur, lọc Sobel, lọc Laplace … Hình 4.3 Những hình ảnh chuyển đổi khơng gian màu Hình 4.4 Điều chỉnh độ tƣơng phản độ sáng - Sử dụng lọc Blur: lọc có tác dụng làm trơn ảnh khử nhiễu hạt - Sử dụng lọc Sobel: mục đích tìm biên ảnh - Sử dụng lọc Laplace: mục đích tìm biên ảnh, phân tích ƣớc lƣợng chuyển động cảu vật 47 Hình 4.5 Ảnh đƣợc xử lý qua phép lọc khác Tìm điểm trùng hai ảnh Hình 4.6 Chỉ điểm trùng hai hình Nhận dạng biển số xe 48 Bài toán nhận dạng biển số xe có nhiều ý nghĩa thực tế, giúp việc giám sát, quản lý, thống kê … phƣơng tiện cách dễ dàng, tiện lợi nhanh chóng Một số ứng dụng điển hình đƣ ợc triển khai thực tế nhƣ ứng dụng quản lý bãi đỗ xe thơng minh, ứng dụng thu phí trạm thu phí, ứng dụng phát lỗi vi phạm giao thông cách tự động Ta xây dựng tốn nhận dạng biển số xe tơ, với đầu vào ảnh chứa biển số xe đầu chuỗi kí tự biển số đƣợc nhận dạng Nếu quan sát mắt ngƣời ta dễ dàng nhận biết đƣợc biển số, nhiên với máy tính, điều khơng dễ dàng gì, dễ bị nhiễu, bị nhầm hình khối xung quanh tƣơng tự, điều kiện thời tiết, góc độ … Để hạn chế bớt đƣợc khó khăn này, nhiều hệ thống nhận dạng thực tế thƣờng giới hạn điều kiện, chẳng hặn nhƣ camera thu ảnh đƣợc cố định vị trí, xe đƣợc vào khe hẹp định… Có nhiều cách khác để thực toán nhận dạng này, phần mềm thƣơng mại hồn chỉnh, kết hợp tối ƣu nhiều thuật toán phức tạp, này, ta theo hƣớng tiếp cận chia toán thành hai toán nhỏ: phát biển số xe, cách lý kí tự nhận dạng kí tự Hình 4.7 Nhận dạng biển số xe Phát vùng chứa biển số xe cách ly kí tự Vì biển số xe có đặc trƣng đƣợc quy định quan chức nên ta dựa vào đặc trƣng để phân biệt với đối tƣợng khác Theo quy định công an, biển số xe đằng trƣớc loại xe dân dụng 49 hình chữ nhật, có kích thƣớc 470x110 (mm), phơng màu trắng kí tự chữ in hoa màu đen Các kí tự chữ số bao gồm từ tới kí tự chữ số bao gồm A, B, C, D, E, F, G, H, K, L, M, N, P, S, T, U, V, X, Y, Z (20 kí tự) Ta dựa vào đặc trƣng hình học để trích chọn v ng chứa biển số xe, bƣớc thực nhƣ sau: Bƣớc 1: Load ảnh, tiền xử lý ảnh (khử nhiễu, làm mịm …) Bƣớc 2: Chuyển ảnh ban đầu thành ảnh xám nhị phân hóa ảnh Để ảnh nhị phân thu đƣợc kết tốt không bị phụ thuộc vào điều kiện ánh sáng khác nhau, ta sử dụng phƣơng pháp nhị phân hóa với ngƣỡng động (adaptive threshold) Bƣớc 3: Tìm đƣờng bao quanh đối tƣợng Sau nhị phân ảnh, đối tƣợng khối hình đen trắng, với đối tƣợng ta vẽ đƣợc đƣờng biên bao quanh đối tƣợng Để tránh trình trạng đối tƣợng khơng tạo đƣợc đƣờng biên khép kín vết dạn nứt nhiễu gây ra, trƣớc tìm biên ta nên làm mịn đƣờng biên phép giãn nở (hoặc co) Bƣớc 4: Xác định hình chữ nhật bao quanh đƣờng bao quanh tìm đƣợc từ bƣớc Đƣờng bao quanh tìm đƣợc bƣớc chuỗi điểm biên nối liền đối tƣợng, dựa vào tọa độ điểm biên ta xác định đƣợc hình chữ nhật ngoại tiếp bao quanh đối tƣợng Bƣớc 5: Tìm hình chữ nhật có khả v ng chứa biển số, hình chữ nhật thu đƣợc bƣớc v ng chứa biển số phải thỏa mãn đƣợc số điều kiện sau: - Tỉ lệ chiều dài/rộng phải xấp xỉ 4.3 Trong cài đặt thực tế ta cho tỉ lệ dao động khoảng [4.0, 4.5] - Số đối tƣợng thỏa mãn kí tự biển số v ng hình chữ nhật phải số lớn ngƣỡng Với biển số xe chữ số, số kí tự 7, với biển số xe với kí tự số, số kí tự 8, có số biển số xe có nhiều kí tự có kí tự chữ … Để xác định đối tƣợng kí tự hay khơng, ta dựa vào đặc điểm hình học kí tự nhƣ tỉ lệ chiều dài/rộng đối tƣợng, tỉ lệ chiều cao, dài đối tƣợng so với tỉ lệ chiều cao, dài hình chữ nhật đƣợc xem xét biển số, tỉ lệ pixel đen/trắng đối tƣợng … Nếu xác định 50 kí tự biển số xe ta đồng thời lƣu lại, cách ta cách ly đối tƣợng biển số - Ngoài ra, t y thuộc vào điều kiện tốn ta cố định thêm số đặc tính để chắn v ng chứa biển số, chẳng hạn nhƣ kích thƣớc hình chữ nhật khơng đƣợc vƣợt q nửa kích thƣớc ảnh đầu vào, tỉ lệ pixel đen/trắng hình chữ nhật phải nằm ngƣỡng … Sau xác định đƣợc v ng có khả biển số, ta cắt v ng hình đó, đồng thời lấy kí tự v ng lƣu vào mảng để thực việc nhận dạng Nhận dạng ký tự Các kí tự sau đƣợc cách ly kí tự đơn lẽ khung hình chữ nhật có kích thƣớc định Để nhận dạng đƣợc kí tự ta sử dụng nhiều phƣơng pháp khác nhau, từ đơn giản nhƣ phƣơng pháp sử dụng độ tƣơng quan chéo (cross correlation) phƣơng pháp sử dụng mơ hình máy học (machine learning) nhƣ mạng Neuron nhân tạo, SVM … Đối với phƣơng pháp sử dụng máy học, ta cần sƣu tầm lƣợng mẫu kí tự định, từ vài trăm hàng nghìn mẫu đƣa vào huấn luyện, kết huấn luyện đƣợc d ng để nhận dạng mẫu Độ xác kết nhận dạng nói chung phƣơng pháp t y thuộc vào độ phức tạp mô hình, khối lƣợng mẫu huấn luyện, thời gian tính tốn Trong phần ta sử dụng phƣơng pháp SVM để nhận dạng kí tự Phươ g pháp SVM SVM (Surport Vector Machine) mơ hình máy học giám sát đƣợc d ng việc phân tích, phân lớp liệu dựa vào siêu phẳng Siêu phẳng mặt phẳng đƣờng thằng, không gian chiều mặt phẳng tổng quát không gian n chiều không gian n-1 chiều Trong trƣờng hợp dữ liệu khơng tuyến tính, ta cần ánh xạ tập liệu lên khơng gian có số chiều lớn để thuận tiện cho việc phân loại liệu, nhiệm vụ cần phải tìm siêu phẳng cho khoảng cách tới biên liệu lớn Hiểu cách đơn giản phƣơng pháp nhƣ sau: cho tập mẫu huấn luyện, với mẫu đƣợc gắn vào nhãn, trình huấn luyện SVM xây dựng mơ hình cho phép dự 51 đốn tập diệu khác thuộc nhãn nào, tức phân loại tập liệu thuộc vào lớp Trƣớc hết cần phải nhận thấy SVM máy phân loại liệu, muốn sử dụng đƣợc ta cần phải có liệu, liệu kí tự mà ta cần nhận dạng đặc trƣng ảnh kí tự Giả sử ta cần phân loại 30 lớp liệu (tƣơng ứng với 30 kí tự biển số xe), với lớp liệu, ta tính tốn đƣợc 10 vector đặc trƣng (10 mẫu), vector đặc trƣng tƣng ứng với đặc trƣng ảnh Khi ta đƣa vào huấn luyện SVM toàn liệu này, sau với ảnh bất kì, ta tính tốn vector đặc trƣng ảnh đó, mơ hình SVM xem xét xem liệu (tức vector đặc trƣng này) thuộc vào lớp số lớp mà đƣợc huấn luyện 4.9 Kết luận chƣơng Trong chƣơng 4, từ sở lý thuyết có tiến hành vạch mục tiêu, hƣớng cho đề tài cách xây xựng thƣ viện OpenCV để xử lý ảnh kết nối camera vào Kit Raspberry Pi3 Sản phẩm sau hoàn thiện hoạt động ổn định, cho kết nhƣ mong muốn 52 KẾT LUẬN CHUNG Qua thời gian tìm hiểu nghiên cứu, c ng giúp đỡ thầy-cô hƣớng dẫn em hoàn thành đƣợc đồ án tốt nghiệp với đề tài “thiêt kế camera giám sát v h trê ề t g Raspberry Pi 3” Sau hoàn thiện đề tài em thực đƣợc yêu cầu đề tài nhƣ sau: Tìm hiểu hệ thống nhúng Tìm hiểu Kit Raspberry Pi Làm quen với hệ điều hành linux (Raspbian) Kỹ lập trình ngôn ngữ Python kết hợp với thƣ viện OpenCV để xử lý ảnh Tuy vậy, đề tài có vài hạn chế định - Camera quay đƣợc mặt phẳng chiều - Chỉ xử lý ảnh mức chƣa thể vào xử lý ảnh nâng cao, phức tạp Hƣớng phát triển Từ đề tài phát triển lên, xây dựng nhiều ứng dụng giám sát an ninh có hiệu thực tế Em đề xuất số hƣớng phát triển sau: - Phát triển thuật toán xử lý ảnh, cho nhận dạng đƣợc hình dạng đối tƣợng, nhận dạng biển số xe … - Tăng thêm bậc tự cho camera giúp cho camera giám sát đƣợc linh hoạt, theo nhiều chiều không gian Sinh viên thực Hồ Sỹ Quân 53 PHỤ LỤC Cài đặt python OpenCV: Bƣớc 1: cài đặt phụ thuộc $ sudo apt-get purge wolfram-engine - Cập nhật nâng cấp thƣ viện hệ thống $ sudo apt-get update $ sudo apt-get upgrade - Cài đặt gói thƣ viện cần thiết $ sudo apt-get install build-essential cmake pkg-config - Cài đặt gói I/O, gói cho phép load loại format ảnh khác nhƣ JPG, PNG, TIFF, etc … $ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev - Cài đặt thƣ viện GTK, thƣ viện d ng để xây dựng giao diện đồ họa GUIs cho phép hiển thị ảnh hình $ sudo apt-get install libgtk2.0-dev - Cài đặt thƣ viện để load file video sử dụng OpenCV $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev - Cài đặt thƣ viện để tối ƣu toán tử opencv $ sudo apt-get install libatlas-base-dev gfortran - Cài đặt tệp tin tiêu đề Python 2.7 Python để biên dịch OpenCV với ràng buộc Python: $ sudo apt-get install python2.7-dev Bƣớc 2: tải mã nguồn OpenCV $ cd ~ $ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip $ unzip opencv.zip - Cài đặt đầy đủ OpenCV3 $ wget -O opencv_contrib.zip https://github.com/Itseez/opencv/archive/3.1.0.zip $ unzip opencv_contrib.zip 54 Bƣớc 3: Python 2.7 - Cài đặt pip $ wget https://bootstrap.pypa.io/get-pip.py $ sudo python get-pip.py - Cài đặt môi trƣờng ảo $ sudo pip install virtualenv virtualenvwrapper $ sudo rm -rf ~/.cache/pip # virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh $ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile $ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile $ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile $ source ~/.profile - Tạo môi trƣờng ảo Python $ mkvirtualenv cv -p python2 $ source ~/.profile $ workon cv - Cài đặt NumPy Raspberry Pi $ pip install numpy Bƣớc 4: Biên dịch cài đặt OpenCV $ workon cv - Thiết lập xây dựng cách sử dụng CMake $ cd ~/opencv-3.1.0/ $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \ -D BUILD_EXAMPLES=ON 55 - Biên dịch OpenCV $ make -j4 $ make clean $ make $ sudo make install $ sudo ldconfig Bƣớc 5: Kết thúc cài đặt OpenCV Raspberry Pi3 $ ls -l /usr/local/lib/python2.7/site-packages/ $ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/ $ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so Bƣớc 6: Thử nghiệm cài đặt OpenCV $ source ~/.profile $ workon cv $ python >>> import cv2 >>> cv2. version '3.1.0' >>> $ rm -rf opencv-3.1.0 opencv_contrib-3.1.0 - Thêm thƣ viện cần thiết nhƣ: image, scipy, matplotlib … $ sudo pip install image $ sudo pip install scipy $ sudo apt-get install python-matplotlib Code thực thi from Tkinter import* from picamera import PiCamera, Color from time import sleep import cv2 import numpy as np from matplotlib import pyplot as plt root=Tk() 56 root.title('HỒ SỸ QUÂN') instructionLabel = Label(master=root, text='TRƢỜNG ĐẠI HỌC VINH') instructionLabel.pack() instructionLabel = Label(master=root, text='VIỆN KỸ THUẬT VÀ CÔNG NGHỆ') instructionLabel.pack() photo = PhotoImage(file="dhv.png") label = Label(root, image=photo) label.pack() instructionLabel = Label(master=root, text='ĐỒ ÁN TỐT NGHIỆP') instructionLabel.pack() instructionLabel = Label(master=root, text='ĐỀ TÀI: THIẾT B GIÁM SÁT SỬ DỤNG CAMERA TR N NỀN TẢNG RASPBERRY PI & XỬ L ẢNH') instructionLabel.pack() F=Frame(root) F.pack() def Video(self): camera = PiCamera() camera.start_preview() camera.start_recording('/home/pi/DO_AN/video.h264') sleep(15) camera.stop_recording() camera.stop_preview() camera.close() def Camera(self): camera = PiCamera() camera.resolution = (480, 320) camera.start_preview() sleep(5) camera.capture('/home/pi/DO_AN/Image.jpg') camera.stop_preview() 57 camera.close() def gray(self): image = cv2.imread('Image.jpg') gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow("image", image) cv2.imshow("Image_Gray", gray_image) cv2.waitKey(0) cv2.destroyAllWindows def filter_image(self): img = cv2.imread('Image.jpg') kernel = np.ones((5,5),np.float32)/25 dst = cv2.filter2D(img,-1,kernel) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(dst),plt.title('Averaging') plt.xticks([]), plt.yticks([]) plt.show() def smoothing(self): img = cv2.imread('Image.jpg') blur = cv2.blur(img,(10,10)) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(blur),plt.title('Blurred') plt.xticks([]), plt.yticks([]) plt.show() Nut=Button(F,text="Video") Nut.bind("", Video) Nut.pack(side="left") Nut=Button(F,text="Image") Nut.bind("", Camera) Nut.pack(side="left") 58 Nut=Button(F, text="filter_image") Nut.bind("", filter_image) Nut.pack(side="left") Nut=Button(F, text="smoothing_image") Nut.bind("", smoothing) Nut.pack(side="left") Nut=Button(F, text="image_gray") Nut.bind("", gray) Nut.pack(side="left") root.mainloop() code điểm trùng hai ảnh import numpy as np import cv2 import matplotlib.pyplot as plt img1 = cv2.imread('opencv-feature-matching-template.jpg',1) img2 = cv2.imread('opencv-feature-matching-image.jpg',1) orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img1,None) kp2, des2 = orb.detectAndCompute(img2,None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) matches = bf.match(des1,des2) matches = sorted(matches, key = lambda x:x.distance) img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10],None, flags=2) plt.imshow(img3) plt.show() 59 TÀI LIỆU THAM KHẢO [1] Nguyễn Đình Phú, Giáo trì h vi , Trƣờng Đại học Sƣ phạm Kỹ thuật, 2006 [2] Adrian Kaehler & Gary Bradski, Computer Vision with the OpenCV Library, publisher O’Reilly Media, 2008 [3] John C Russ, The Image Processing Handbook, publisher CRC Press, 1992 [4] https://lvluat.wordpress.com/2015/05/28/raspberry-pi-model-b-03-cai-dathe-dieu-hanh-va-thiet-lap-ban-dau/ truy cập lần cuối 05/05/2017 [5] http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3raspbian-jessie-opencv-3/ truy cập lần cuối 10/05/2017 [6] http://ktmt.github.io/blog/2014/09/23/xu-ly-anh-bang-python-va-opencvmo-dau/ truy cập lần cuối 12/05/2017 60 ... 37 3. 3 .3 Dịch 37 3. 3.4 Vòng xoay 37 3. 4 Phƣơng pháp lọc số ảnh 38 3. 4.1 Lọc hình ảnh 38 3. 4.2 Lọc Gaussian 39 3. 4 .3 Lọc... 36 3. 1.2 Nội suy song tuyến tính 36 3. 2 Thay đổi v ng màu 36 3. 3 Chuyển đổi hình học hình ảnh 37 3. 3.1 Chuyển đổi 37 3. 3.2 Nhân rộng... nhúng Raspberry Pi Với việc sử dụng board mạch máy tính nhúng em tìm hiểu nghiên cứu đề tài: ? ?thiết bị giám sát sử dụng camera xử lý ảnh tảng Raspberry Pi 3? ?? Đề tài tập trung nghiên cứu thiết kế camera