Đề tài nghiên cứu phương pháp kết nối webcam với board nhúng km 9260

15 879 0
Đề tài nghiên cứu phương pháp kết nối webcam với board nhúng km 9260

Đ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

1 CHƯƠNG 1: MỞ ĐẦU 1.1. Đặt vấn đề Các ứng dụng của xử lý ảnh vào thực tế ngày càng nhiều. Nhưng việc nghiên cứu và ứng dụng phương pháp xử lý ảnh vào thực tế đối với các sinh viên Việt Nam nói chung và sinh viên Lạc Hồng nói riêng gặp một khó khăn đó là: phải sử dụng máy tính để thu nhận và xử lý các dữ liệu ảnh. Mà máy tính thì cồng kềnh không thích hợp cho các ứng dụng thực tế. M ục đích của đề tài là sử dụng board nhúng KM9260 đang có bán trên thị trường Việt Nam kết hợp với webcam để thu nhận và xử lý ảnh phục vụ cho các ứng dụng nhúng thích hợp. 1.2. Mục tiêu và phạm vi nghiên cứu Mục tiêu của đề tài là sử dụng board nhúng KM9260 thu nhận dữ liệu ảnh từ webcam, xử lý ảnh thu được và xuất tín hiệu điều khiển ra. Tín hiệu điều khiển ở ngõ ra có thể được dùng để điều khiển robot hoặc cho các mục đích điều khiển khác tùy theo nhu cầu của người sử dụng. Hình 1.1: Sơ đồ khối của hệ thống Phần thử nghiệm và đánh giá kết quả: Có thể dùng dữ liệu ảnh thu được điều khiển một robot hoặc truyền dữ liệu ảnh thu được về máy tính để hiển th ị. 1.3. Nội dung và phương pháp nghiên cứu Nội dung nghiên cứu: − Cài đặt hệ điều hành Linux nhúng trên board KM9260. − Cài đặt thư viện xử lý ảnh OpenCV trên nền Linux nhúng. − Thử nghiệm thu nhận và xử lý ảnh từ webcam. − Tổng hợp và báo cáo kết quả. Phương pháp nghiên cứu: − Tìm hiểu lý thuyết và cách thức thực hiện bằng các tài liệu hướng dẫn liên quan. − Thử nghi ệm bằng máy tính và trực tiếp trên board KM9260. BOARD NHÚNG KM9260 USB COM Webcam Tín hiệu điều khiển ngõ ra 2 CHƯƠNG 2: TỔNG QUAN 2.1. Tổng quan tình hình nghiên cứu Trên thế giới đã có những sản phẩm tương tự, chất lượng tốt, nhưng giá đắt hơn và khó khăn trong vận chuyển và thanh toán. Unibrain Fire-i board Pro™ Remote CCD. [2] Hình 2.1: Fire-i board Pro™ Remote CCD Model Fire-i VGA Pro Fire-i XGA Pro Image Sensor 1/3" progressive scan CCD Sony ICX-424AQ / ICX-424AL 1/3" progressive scan CCD Sony ICX-204AK / ICX-204AL Effective Pixels 330,000 pixels 659 (H) x 494 (V) 800,000 pixels 1034(H) x 779(V) Picture Size 640 x 480 1024 x 768, 800 x 600, 640 x 480 Data Path 8 bit or 12 bit color RAW and YUV 422 or 12 bit b/w CELL size 7.40 um x 7.40 um 4.65 um x 4.65 um Frame Rate 86 fps (Format-7), 60, 30, 15, 7.5, 3.75 36 fps (Format-7), 30, 15, 7.5, 3.75 External Trigger Mode 0, 1, 2, 3, 4, 5, 12, 13, 14, 15 Control Functions Auto-Exposure, Auto-shutter, Brightness, Sharpness Digital Interface One or Two 1394a 6pin port / IIDC v1.31 - 8~30V DC from cable Gain Control 0 ~ 18 dB Shutter Speed 1 usec ~ 3600 sec Gamma 0.4 ~ 2.5 Advanced Features RS-232 (SIO) pass through, Format-7, One shot & multi shot, Multi camera auto-sync, Binning 2x2, 1x2 (b/w model) S/N ratio 56 dB or better Power Requirements 200 mA max, @ +12V DC Dimensions / Weight Single 1394 port model: 47(W) x 70(H) x 21(D) mm / Approx. 34 gr 3 Dual 1394 port model: 47(W) x 81(H) x 21(D) / Approx 40 gr Operation Temp. -5 to +45°C Storage Temp. -20 to +60°C Regulations FCC, CE, MIC, RoHS Price $590.00 $690.00 2.2. Giới thiệu board nhúng KM9260 [1] KM9260 là board nhúng trên nền vi điều khiển ARM9. Board có kích thước nhỏ gọn và có tính năng mạnh, sử dụng dòng vi điều khiển AT91SAM9 của ATMEL cho phép hệ thống chạy với các hệ điều hành nhúng Linux, WinCE và µC/OS-II RTOS. Hoặc có thể chạy chương trình ứng dụng standalone như các hệ thống vi điều khiển thông thường. Tính năng: - MPU AT91SAM9260, 16/32 bit ARM926EJ-S 180Mhz. - Connector theo chuẩn JTAG 20 pin cho phép lập trình, debug hệ thống. - 32MB SDRAM. - 256MB NAND FLASH. - 512kB SPI serial dataflash. - Ethernet 10/100 base RJ45 connector. - USB host, device connector. - RS232 connector. - Micro SD card slot. - Nút nhấn, LED hiển thị. - Connector mở rộng. - Nguồn cung cấp 5VDC. Hình 2.2: Board nhúng KM9260 4 Một số ứng dụng:  Giám sát, đo lường, điều khiển từ xa qua mạng.  Kiểm soát an ninh  Các ứng dụng xử lý ảnh nhúng … 2.3. Cài đặt hệ điều hành Linux nhúng lên KM9260 Chuẩn bị: − Một thẻ microSD dung lượng tối thiểu 2GB. − Máy tính cài hệ điều hành Linux (Ubuntu 10) - PC Linux. − Chép file Debian_km9260_rootfs_121209.tar.bz2 (đĩa kèm theo board) vào một thư mục trên PC Linux. Các bước thực hiện: − Dùng đầu đọc thẻ cắm microSD vào PC Linux. − Dùng Disk Utility (System/Administration/Disk Utility) Fdisk + Format microSD theo dạng ext2. − Mở Applications/Accessories/Terminal để dùng dòng lệnh: $ cd /media/<microSD_name> $ sudo tar –jxvf /<Path>/ Debian_km9260_rootfs_121209.tar.bz2 − Sau khi giải nén root lấy microSD gắn vào khe cắm trên board KM9260 và thực hiện boot Linux. 2.4. Cài đặt thư viện xử lý ảnh OpenCV OpenCV là một thư viện chứa các thuật toán xử lý ảnh được thế giới nghiên cứu và chuyển thành mã nguồn mở (Open source code) bởi Intel. Với OpenCV ta có thể thực hiệ n việc thu nhận và xử lý ảnh được dễ dàng và các ứng dụng xử lý ảnh sẽ được thực hiện một cách thuận tiện hơn. Việc cài đặt và sử dụng OpenCV trên máy tính đã được rất nhiều người thực hiện. Phần này sẽ trình bày cách cài đặt OpenCV trên hệ điều hành Linux nhúng trên board KM9260. Chuẩn bị: − Download source OpenCV được built sẵn dưới dạng file .deb. Từ [3] download các file sau: 1. libavcodec51_0.svn20080206-18+lenny3_arm.deb 2. libgtk2.0-dev_2.12.12-1~lenny2_arm.deb 3. libjasper1_1.900.1-5.1+lenny1_arm.deb 5 4. libpng12-0_1.2.27-2+lenny4_arm.deb 5. zlib1g_1.2.3.3.dfsg-12_arm.deb 6. libjpeg62-dev_6b-14_arm.deb 7. zlib1g-dev_1.2.3.3.dfsg-12_arm.deb 8. swig_1.3.36-1_arm.deb 9. libavcodec-dev_0.svn20080206-18+lenny3_arm.deb 10. libjasper-runtime_1.900.1-5.1+lenny1_arm.deb 11. libtiff4_3.8.2-11.4_arm.deb 12. libpng12-dev_1.2.27-2+lenny4_arm.deb 13. python2.5_2.5.2-15+lenny1_arm.deb 14. libdc1394-13_1.1.0-5_arm.deb 15. libavformat52_0.svn20080206-18+lenny3_arm.deb 16. libgtk2.0-0_2.12.12-1~lenny2_arm.deb 17. libjpeg62_6b-14_arm.deb 18. pkg-config_0.22-1_arm.deb 19. libjasper-dev_1.900.1-5.1+lenny1_arm.deb 20. libtiff4-dev_3.8.2-11.4_arm.deb 21. python2.5-dev_2.5.2-15+lenny1_arm.deb 22. libdc1394-13-dev_1.1.0-5_arm.deb 23. libcv1_1.0.0-6.1_arm.deb 24. libcv-dev_1.0.0-6.1_arm.deb 25. libhighgui1_1.0.0-6.1_arm.deb 26. libhighgui-dev_1.0.0-6.1_arm.deb 27. libcvaux1_1.0.0-6.1_arm.deb 28. libcvaux-dev_1.0.0-6.1_arm.deb − Chép các file trên vào một thư mục gọi là OpenCV. − Dùng WinSCP chép thư mục OpenCV này lên board KM9260. Cài đặt: − Chuyển đến thư mục OpenCV $ cd /<Path>/OpenCV 6 − Lần lượt cài đặt các file trên bằng lệnh: $ dpkg -i <filename.deb> Ví dụ: $ dpkg -i libavcodec51_0.svn20080206-18+lenny3_arm.deb 7 CHƯƠNG 3: THỰC NGHIỆM 3.1. Dùng KM9260 và OpenCV xử lý ảnh từ webcam nhận dạng màu đỏ Lưu đồ giải thuật: Hình 3.1: Lưu đồ giải thuật nhận dạng màu OpenCV hỗ trợ các hàm thu nhận ảnh từ file và từ camera trong thư viện “highgui.h”. Thu nhận ảnh từ webcam: CvCapture* capture = cvCreateCameraCapture(-1); rgbimage = cvQueryFrame(capture); Không gian màu RGB không thích hợp cho việc nhận dạng màu sắc, để phân biệt màu sắc người ta thường dùng không gian màu HSV. Trong OpenCV, H (Hue) có giá trị trong khoảng (0, 179) mang thông tin về màu sắc. S (Saturation) có giá trị Begin Thu ảnh từ camera thường ở không màu RGB Xác định màu Chuyển sang không gian màu HSV So sánh các thành phần H, S, V End Y N 8 (0, 255) cho thông tin về độ thuần khiết của màu. V (Value) có giá trị (0, 255) cho biết độ sáng của điểm ảnh. Chuyển đổi không gian màu từ RGB sang HSV: cvCvtColor(rgbimage,hsvimage,CV_BGR2HSV); Màu đỏ thường thành phần H có giá trị trong khoảng (0 - 7) & (174 - 179). Các thành phần S và V thường chọn trong lân cận 100 tùy theo điều kiện ánh sáng môi trường và yêu cầu về độ thuần khiết của màu. Code mẫu: /* * main.c * Created on: Apr 8, 2011 * Author: ptnvt */ #include <stdio.h> #include <cv.h> #include <highgui.h> # define threshold 2000 int main(int argc, char **argv) { CvCapture* capture = cvCreateCameraCapture(-1); IplImage* frame; frame = cvQueryFrame(capture); CvSize size = cvGetSize(frame); cvWaitKey(3000); IplImage* hsvimg = cvCreateImage(size,IPL_DEPTH_8U,3); frame = cvQueryFrame(capture); cvCvtColor(frame,hsvimg,CV_BGR2HSV); int i, j; unsigned long N; int height = hsvimg->height; int width = hsvimg->width; int step = hsvimg->widthStep/sizeof(uchar); int channels = hsvimg->nChannels; uchar* hsv = (uchar *)hsvimg->imageData; while(1) { frame = cvQueryFrame(capture); cvCvtColor(frame,hsvimg,CV_BGR2HSV); N = 0; for(i=0; i < height; i++) { for(j=0; j < width; j++) { if((hsv[i*step+j*channels+0]<6||hsv[i*step+j*channels+0]>74)& & hsv[i*step+j*channels+1]>120&&hsv[i*step+j*channels+2]>100) { N++; } 9 } } if (N > threshold) { printf("Red Color\n"); } cvWaitKey(1000); } return 0; } Biên dịch dùng lệnh: $ gcc color.c -I /usr/include/opencv -lcv -lhighgui -o color Gọi ứng dụng: $ ./color Kết quả: Log gọi ứng dụng color trên Putty. Khi đưa một vật có màu đỏ trước Webcam thì board sẽ thông báo “Red Color”. sam9-l9260:~/APP# ./color Corrupt JPEG data: 368 extraneous bytes before marker 0xd9 Corrupt JPEG data: premature end of data segment Corrupt JPEG data: premature end of data segment Corrupt JPEG data: 1005 extraneous bytes before marker 0xd9 Corrupt JPEG data: 103 extraneous bytes before marker 0xd9 Corrupt JPEG data: premature end of data segment Red Color Corrupt JPEG data: premature end of data segment Red Color Corrupt JPEG data: 117 extraneous bytes before marker 0xd9 Corrupt JPEG data: 119 extraneous bytes before marker 0xd9 Corrupt JPEG data: 506 extraneous bytes before marker 0xd9 Red Color Corrupt JPEG data: 266 extraneous bytes before marker 0xd9 Red Color 10 Corrupt JPEG data: 70 extraneous bytes before marker 0xd9 Red Color Corrupt JPEG data: premature end of data segment Red Color Corrupt JPEG data: premature end of data segment Red Color Red Color Corrupt JPEG data: premature end of data segment Red Color Corrupt JPEG data: premature end of data segment 3.2. Phát hiện đối tượng chuyển động bằng phương pháp trừ nền Đối tượng (foreground) là một vật thể di động trước một khung cảnh cố định gọi là nền (background). Phương pháp trừ nền để phát hiện đối tượng chuyển động như sau [4]: − Lấy N frame ảnh liên tiếp từ webcam. − Tính giá trị trung bình và trung bình bình phương các giá trị pixel t ại một vị trí trong N frame: N jip jiM N frame ∑ = = 1 ),( ),( N jip jiSq N frame ∑ = = 1 2 ),( ),( trong đó, p(i,j) là giá trị của pixel tại vị trí (i,j). − Tính phương sai: ),(),(),( 2 jiMjiSqji −= σ − Khi đó, một pixel tại vị trí (i,j) trong một frame được coi là thuộc một đối tượng nếu thỏa mãn điều kiện: ),(),(),( jijipjiM λσ ≥− hoặc ),(),(),( 22 2 jijipjiM σλ ≥− . của đề tài là sử dụng board nhúng KM9 260 đang có bán trên thị trường Việt Nam kết hợp với webcam để thu nhận và xử lý ảnh phục vụ cho các ứng dụng nhúng. tiếp trên board KM9 260. BOARD NHÚNG KM9 260 USB COM Webcam Tín hiệu điều khiển ngõ ra 2 CHƯƠNG 2: TỔNG QUAN 2.1. Tổng quan tình hình nghiên cứu Trên thế

Ngày đăng: 10/12/2013, 15:59

Hình ảnh liên quan

2.1. Tổng quan tình hình nghiên cứu - Đề tài nghiên cứu phương pháp kết nối webcam với board nhúng km 9260

2.1..

Tổng quan tình hình nghiên cứu Xem tại trang 2 của tài liệu.
Hình 2.1: Fire-i board Pro™ Remote CCD - Đề tài nghiên cứu phương pháp kết nối webcam với board nhúng km 9260

Hình 2.1.

Fire-i board Pro™ Remote CCD Xem tại trang 2 của tài liệu.
Hình 3.1: Lưu đồ giải thuật nhận dạng màu - Đề tài nghiên cứu phương pháp kết nối webcam với board nhúng km 9260

Hình 3.1.

Lưu đồ giải thuật nhận dạng màu Xem tại trang 7 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan