Giáo án - bài giảng: Giới thiệu về các bài tập thực hành thị giác trong máy tính với opencv

69 1.8K 3
Giáo án - bài giảng:  Giới thiệu về các bài tập thực hành thị giác trong máy tính với opencv

Đ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

Bộ môn TGMT và KH Rô-bốt Khoa Công nghệ thông tin ĐH Khoa học tự nhiên TP HCM SỬ DỤNG OPENCV [CTT451] – [Nhập môn Thị giác Máy tính] Tháng 3/2013 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 1 MỤC LỤC 1. Chuẩn bị: 2 2. Cấu hình OpenCV với Visual Studio C++ 2 3. Chương trình đầu tiên 6 4. Chương trình thứ hai: 7 5. Bài tập 8 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 2 CẤU HÌNH OPENCV VỚI VS C++ 1. Chuẩn bị: Download OpenCV tại: http://opencv.org/downloads.html, hoặc download thư viện OpenCV đã được biên dịch sẵn: http://www.mediafire.com/?gda0fgqi5u8h7. Gồm 3 thư mục như sau: 2. Cấu hình OpenCV với Visual Studio C++ Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 3 Tạo project Lab1: Từ Menu Project  References… Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 4 Chọn Configuration Properties  C/C++  General Chọn Configuration Properties  Linker  General Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 5 Chọn Configuration Properties  Linker  Input Sao chép các file đuôi *.dll vào thư mục debug của Project Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 6 3. Chương trình đầu tiên Viết chương trình tải và hiện một tập tin ảnh cho trước lên màn hình. Sau khi tạo project, bổ sung đoạn chương trình sau: #include "stdafx.h" #include <cv.h> #include <cxcore.h> #include <highgui.h> int _tmain(int argc, _TCHAR* argv[]) { IplImage * img = cvLoadImage("C:\\hinh1.jpg"); if ( img != NULL ) { cvNamedWindow( "My window" ); cvShowImage( "My window", img ); cvWaitKey();//Đợi người dùng nhấn 1 phím bất kỳ cvReleaseImage( &img ); //Giải phóng vùng nhớ cvDestroyWindow( "My window" ); //Đóng cửa sổ } return 0; } Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 7 Đoạn chương trình trên sẽ tải một ảnh lên bộ nhớ và hiển thị ra màn hình. Ta xem xét một số dòng lệnh chính: IplImage * img = cvLoadImage("C:\\hinh1.jpg"); Hàm cvLoadImage() thực hiện tải ảnh dựa vào tên file được truyền vào, đồng thời cấp phát một vùng nhớ cần thiết cho cấu trúc dữ liệu ảnh. Hàm này trả về một con trỏ trỏ tới vùng nhớ được cấp phát trên. cvNamedWindow( "My window" ); Hàm cvNamedWindow tạo một cửa sổ trên màn hình để chứa và hiển thị ảnh. cvShowImage( "My window", img ); Chúng ta đã có một ảnh dưới dạng một con trỏ IplImage *, và hiển thị lên của sổ vừa tạo thông qua hàm cvShowImage(). 4. Chương trình thứ hai: Viết chương trình phát một đoạn video: #include <highgui.h> int main( int argc, char** argv ) { cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE ); CvCapture* capture = cvCreateFileCapture("C:\\video1.avi"); IplImage* frame; while(1) { frame = cvQueryFrame( capture ); if( !frame ) break; cvShowImage( "Example2", frame ); char c = cvWaitKey(33); if( c == 27 ) break; } cvReleaseCapture( &capture ); cvDestroyWindow( "Example2" ); } CvCapture* capture = cvCreateFileCapture("video1.avi"); Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 8 Hàm cvCreateFileCapture() với tham số truyền vào là tên đoạn video cần load đoạn video và sẽ trả về con trỏ trỏ tới cấu trúc CvCapture. Cấu trúc này sẽ chứa toàn bộ thông tin đoạn video đã được đọc. frame = cvQueryFrame( capture ); Bên trong vòng lặp while, bắt đầu đọc đoạn video. Hàm cvQueryFrame() bắt frame kế tiếp trong đoạn video trên vào vùng nhớ (vùng nhớ này là một phần của cấu trúc CvCapture đã được cấp phát trước đó). Một con trỏ được trả về cho frame được bắt giữ này. Vì cvQueryFrame sử dụng vùng nhớ đã được cấp phát cho cấu trúc nên không cần gọi hàm cvReleaseImage() cho frame này. 5. Bài tập Viết chương trình chuyển ảnh sang ảnh mức xám (grayscale). Bộ môn TGMT và KH Rô-bốt Khoa Công nghệ thông tin ĐH Khoa học tự nhiên TP HCM LẬP TRÌNH VỚI OPENCV [CTT451] – [Nhập môn Thị giác Máy tính] Tháng 3/2013 [...]... "Distortion.xml", distortion_coeffs ); 3 Bài tập - Từ tập các ảnh bàn cờ (http://courses.fit.hcmus.edu.vn/file.php/1893/Checkerboard.rar ) tìm các điểm góc và tính các tham số intrinsic và extrinsic - Hiển thị ảnh Undistort Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 4 [CTT451] – [Nhập môn Thị giác Máy tính] Tháng 4/2013 CANNY EDGE DETECTION Bộ môn TGMT và KH Rô-bốt Khoa Công nghệ thông tin... Tháng 3/2013 Trang 8 [CTT451] – [Nhập môn Thị giác Máy tính] Tháng 3/2013 CAMERA CALIBRATION Bộ môn TGMT và KH Rô-bốt Khoa Công nghệ thông tin ĐH Khoa học tự nhiên TP HCM MỤC LỤC 1 Một số hàm Camera Calibration trong OpenCV 2 2 Tính các tham số intrinsic và extrinsic của camera .3 2.1 Xác định các điểm góc trên ảnh bàn cờ: 3 2.2 Tìm các tham số intrinsic và extrinsic 4 3 Bài tập. .. 4 5 4 2 Bước 2: Tính độ lớn và góc của Gradient Tính đạo hàm ( Roberts, Prewitt, Sobel ) và ( ) theo chiều x và y của ảnh Một số bộ lọc như: Bộ lọc Sobel 3x3: -1 0 1 1 2 1 -2 0 2 0 0 0 -1 0 1 -1 -2 -1 Độ lớn Gradient: √ ( ) ( ) Góc Gradient: ( ( ( ) ) ) Tính θ’ bằng cách làm tròn từ góc θ vào một trong bốn hướng: 00, 450, 900, 1350 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 4/2013 3 Bước... Gaussian với ảnh đầu vào - Không gian tỉ lệ được chia thành từng octave, mỗi octave gồm 1 số nguyên s ảnh Các ảnh tích chập với lọc Gaussian khác nhau ở tham số k, Phải tạo ra s + 3 ảnh cho mỗi octave, ảnh được làm mờ thứ i trong octave sẽ là Difference-of-Gaussian được sử dụng để phát hiện điểm trọng yếu (keypoint) trong không gian tỉ lệ, bằng cách trừ 2 ảnh L kế nhau trong octave như trong Error!...MỤC LỤC 1 Một số hàm thông dụng trong OpenCV 2 2 Tải và hiển thị ảnh 3 3 Chuyển ảnh từ hệ màu sang ảnh độ xám .5 4 Tách các kênh màu của ảnh RGB 6 5 Bài tập 7 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 3/2013 Trang 1 LẬP TRÌNH VỚI OPENCV 1 Một số hàm thông dụng trong OpenCV Hàm đọc ảnh từ file: IplImage* cvLoadImage(string... như trong Error! Reference source not found - , tích chập (1.1) - Sau khi xử lý xong trên 1 octave, ảnh đầu tiên trong octave kế tiếp được giảm kích thước đi một nữa Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 4/2013 3 1.2 Dò tìm cực trị cục bộ - Tìm cực đại và cực tiểu của các , mỗi điểm được so sánh với 8 lân cận trong ảnh hiện tại, và 9 lân cận trong scale trên và scale dưới Một điểm được... 1 1 Thuật toán Phát hiện cạnh Canny 3 2 Cài đặt thuật toán phát hiện cạnh bằng OpenCV 4 3 Bài tập 6 Tài liệu tham khảo 7 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 4/2013 2 1 Thuật toán Phát hiện cạnh Canny Bước 1: Giảm nhiễu Thông thường để giảm nhiễu sử dụng các bộ lọc làm mờ Có thể sử dụng bộ lọc Gaussian để tích chập với ảnh: 2 4 5 4... cực đại (Non-Maximum Surpression) Bước này chỉ giữ lại những pixel thuộc cạnh mà có độ lớn gradient lớn nhất Xem xét 3 pixel trong vùng 3 x 3 xung quanh pixel (x,y): - Nếu θ(x, y) = 00 thì (x+1, y), (x, y) và (x-1, y) được xem xét Nếu θ(x, y) = 900 thì (x, y+1), (x, y) và (x, y-1) Nếu θ(x, y) = 450 thì (x+1, y+1), (x, y) và (x-1, y-1) Nếu θ(x, y) = 1350 thì (x-1, y+1), (x, y) và (x+1, y-1) Nếu pixel... = 10 1.5 Gán hướng cho keypoint Gán một hướng thích hợp cho keypoint dựa trên đặc tính cục bộ của ảnh, vì vậy bất biến với phép quay ảnh Với mỗi ảnh được làm mờ L(x,y) ở scale gần nhất mà keypoint được phát hiện, độ lớn gradient và hướng được tính: √ Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 4/2013 5 ( ) o Lược đồ hướng gồm 36 bins để biểu diễn hết 360 của các hướng gradient Các điểm xung... Gán hướng cho keypoint 5 1.6 Miêu tả đặc trưng 6 2 Thuật toán phát hiện góc Harris 7 3 Thuật toán phát hiên Blob 8 4 Bài tập 9 Tài liệu tham khảo 10 Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM | Tháng 4/2013 2 1 Scale invariant feature transform (SIFT) 1.1 Xây dựng không gian tỉ lệ - Không gian tỉ lệ (scale space) gồm các . c a c u tr c CvCapture đã đư c cấp phát trư c đó). Một con trỏ đư c trả về cho frame đư c bắt giữ này. Vì cvQueryFrame sử dụng vùng nhớ đã đư c cấp phát cho c u tr c nên không c n gọi hàm cvReleaseImage(). Trộn c c kênh màu: void cvCvtPlaneToPix( const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst); Bộ môn TGMT & KHR | Khoa CNTT | ĐH KHTN TP.HCM. hàm Camera Calibration trong OpenCV 2 1. Tính c c tham số intrinsic và extrinsic c a camera 3 2. 2.1. X c định c c điểm g c trên ảnh bàn c : 3 2.2. Tìm c c tham số intrinsic và extrinsic 4

Ngày đăng: 22/04/2014, 14:51

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