Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
1,35 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP Sinh viên: Lê Minh Quý Lớp: CT1802 Mã SV: 1412101051 Ngành: Công ngh ệ thông tin Tên đề tài: Kỹ thuật đối sánh hình dạng sử dụng đặc trưng dựa đường bao đối tượng Lê Minh Quý - CT1802 MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU DANH MỤC HÌNH VẼ CHƯƠNG 1: TỔNG QUAN VỀ PHÁT HIỆN BIÊN VÀ ĐỐI SÁNH ẢNH 1.1 Biên phát biên 1.1.1 Khái niệm về biên 1.1.2 Phân loại kỹ thuật phát biên 1.1.3 Quy trình phát biên trực tiếp 1.1.4 Một số phương pháp phát biên 10 1.2 Mơ tả hình dạng dựa đường bao 15 1.2.1 Mô tả theo tiếp cận toàn cục .16 1.2.2 Mô tả theo tiếp cận cấu trúc 18 1.3 Đối sánh ảnh .24 1.3.1 Giới thiệu về đối sánh ảnh 24 1.3.2 Đối sánh ảnh dựa đặc trưng 27 CHƯƠNG 2: ĐỐI SÁNH HÌNH DẠNG SỬ DỤNG NGỮ CẢNH HÌNH DẠNG .30 2.1 Giới thiệu 30 2.2 Độ đo khoảng cách hình dạng 30 2.2.1 Khoảng cách min-max 30 2.2.2 Khoảng cách Euclid 31 2.2.3 Khoảng cách toàn phương 31 2.2.4 Khoảng cách Chi Squared distance 31 2.2.5 Khoảng cách Hausdorff 31 2.2.6 Độ đo khoảng cách 32 2.3 Mô tả ảnh sử dụng ngữ cảnh hình dạng (Shape context) 35 2.4 Đối sánh hình dạng ngữ cảnh .36 2.4.1 Đối sánh shape sử dụng quy hoạch động 36 2.4.2 Đối sánh hình dạng dựa đồ thị .37 CHƯƠNG 3: THỰC NGHIỆM 44 Lê Minh Quý - CT1802 3.1 Môi trường thực nghiệm .44 3.1.1 Phần cứng 44 3.1.2 Phần mềm 44 3.2 Đối sánh ảnh dựa ngữ cảnh hình dạng sử dụng opencv 45 3.2.1 Tìm đường bao lấy mẫu điểm đường bao 45 3.2.2 Tìm khoảng cách đối sánh hai đường bao lấy mẫu 49 KẾT LUẬN 54 TÀI LIỆU THAM KHẢO 55 Lê Minh Quý - CT1802 LỜI MỞ ĐẦU Phát biên ảnh nhiệm vụ quan trọng xử lý ảnh Nhận dạng ảnh dùng máy tính liên quan tới việc nhận dạng phân loại đối tượng ảnh phát biên công cụ quan trọng Phát biên làm giảm cách đáng kể khối lượng liệu cần xử lý loại bỏ thông tin không cần thiết đảm bảo thuộc tính quan trọng về cấu trúc ảnh Có nhiều kỹ thuật phát biên sử dụng, kỹ thuật thường làm việc cách có hiệu cao loại đường biên cụ thể Cịn nghiên cứu hình dạng thúc đẩy chủ yếu nhận dạng đối tượng, kỹ thuật mơ tả biểu diễn hình dạng chủ yếu dựa vào ứng dụng cụ thể Trong đó, hiệu xác mối quan tâm kỹ thuật Hình dạng (Shape) đặc trưng quan trọng việc phân đoạn vùng ảnh, tính hiệu thiết thực đóng vai trị quan trọng việc tra cứu ảnh Phép biểu diễn hình dạng sử dụng đường cong rời rạc để làm đơn giản hóa đường viền giúp cho thuận lợi việc lọc nhiễu hai tác giả Latecki Lakamper nghiên cứu, việc sử dụng đường cong rời rạc loại bỏ đặc trưng hình dạng khơng thích hợp Một phương pháp mơ tả hình dạng để đo độ tương tự sử dụng Shape Context để đối sánh hình dạng, phương pháp đề xuất tác giả Belongie, ưu điểm phương pháp tối ưu, đơn giản hiệu mang lại chưa cao cho việc liên quan đến biến đổi hình học tra cứu dựa hình dạng Trong phạm vi đề tài này, em tập trung tìm hiểu về kỹ thuật phát biên, mơ tả điểm đặc trưng sử dụng ngữ cảnh hình dạng đối sánh tập đặc trưng để ước lượng khoảng cách hai ảnh hình dạng đối tượng Lê Minh Q - CT1802 DANH MỤC HÌNH VẼ Hình 1-1: Một số kiểu đường biên thông dụng Hình 1-2: Tốn tử Sobel 11 Hình 1-3: Tốn tử Prewitt 11 Hình 1-4: Tốn tử Roberts 12 Hình 1-5: Kỹ thuật Laplace 13 Hình 1-6: Toán tử Laplacian 15 Hình 1-7: Minh họa độ lệch tâm hình dạng 16 Hình 1-8: Các hướng đoạn thẳng đơn vị: (a): hướng, (b): hướng 20 Hình 1-9: Biểu diễn chuỗi mã ( theo hướng hướng) 20 Hình 1-10: Biểu diễn hình dạng sử dụng shape number 21 Hình 1-11: Các bước tính tốn shape number 22 Hình 1-12: Phân tích đường cong mịn 23 Hình 1-13: Ảnh gốc 29 Hình 1-14: Phát cạnh 29 Hình 2-1: Ví dụ khoảng cách 32 Hình 2-2: Ví dụ về khoảng cách x y hình O 33 Hình 2-3: Quá trình biểu diễn khoảng cách đối tượng 34 Hình 2-4: Tính tốn ngữ cảnh hình dạng 36 Hình 3-1: Hình hiển thị Shape 46 Hình 3-2: Kết tìm biên phương pháp Canny từ ảnh đầu vào 47 Hình 3-3: Kết tìm đường bao lấy mẫu 49 Lê Minh Quý - CT1802 CHƯƠNG 1: TỔNG QUAN VỀ PHÁT HIỆN BIÊN VÀ ĐỐI SÁNH ẢNH 1.1 Biên phát biên 1.1.1 Khái niệm biên Biên phần chủ yếu phân tích ảnh kỹ thuật phân đoạn ảnh chủ yếu dựa vào biên Một điểm ảnh coi điểm biên có thay đổi đột ngột về mức xám Tập hợp điểm biên tạo thành biên hay đường bao ảnh ảnh Ví dụ, ảnh nhị phân, điểm gọi biên điểm đen có điểm trắng lân cận Để hình dung tầm quan trọng biên ta xét ví dụ sau: Khi người hoạ sĩ vẽ bàn gỗ, cần vài nét phác thảo về hình dáng mặt bàn, chân bàn mà không cần thêm chi tiết khác, người xem nhận bàn, ứng dụng ta phân lớp nhận diện đối tượng, coi nhiệm vụ hồn thành Tuy nhiên đòi hỏi thêm về chi tiết khác vân gỗ hay màu sắc,v.v với chừng thơng tin chưa đủ Nhìn chung về mặt toán học người ta coi điểm biên ảnh điểm có biến đổi đột ngột về độ xám Đường biên tập điểm biên Một số kiểu đường biên hay gặp thực tế minh họa hình 1-1 Trong đó: a) Biên dạng nhẩy bậc b) Biên dốc c) Biên dạng xung vng d) Biên dạng hình nón Lê Minh Quý - CT1802 Hình 1-1: Một số kiểu đường biên thông dụng Phát biên công cụ quan trọng xử lý ảnh số Phương pháp phát biên làm giảm cách đáng kể khối lượng liệu cần tính tốn, giữ lại số thông tin cần thiết đồng thời bảo toàn cấu trúc quan trọng ảnh Như phát biên cách lý tưởng xác định tất đường bao đối tượng Định nghĩa toán học biên sở cho kỹ thuật phát biên Điều quan trọng biến thiên mức xám ảnh vùng thường nhỏ, biến thiên mức xám điểm vùng giáp ranh (khi qua biên) lại lớn 1.1.2 Phân loại kỹ thuật phát biên Xuất phát từ định nghĩa toán học biên người ta thường sử dụng hai phương pháp phát biên phương pháp phát biên trực tiếp phương pháp phát biên gián tiếp Các phương pháp trình bày phần Lê Minh Quý - CT1802 1.1.2.1 Phương pháp phát biên trực tiếp Phương pháp nhằm làm biên dựa vào biến thiên về giá trị độ sáng điểm ảnh Kỹ thuật chủ yếu dùng phát biên kỹ thuật đạo hàm Nếu lấy đạo hàm bậc ảnh ta có phương pháp Gradient; lấy đạo hàm bậc hai ta có kỹ thuật Laplace Hai phương pháp gọi phương pháp dò biên cục Ngồi người ta cịn sử dụng phương pháp “đi theo đường bao” gọi phương pháp dò biên tổng thể dựa vào nguyên lý quy hoạch hoạt động 1.1.2.2 Phương pháp gián tiếp Nếu cách đấy, ta phân ảnh thành vùng đường phân ranh vùng biên Việc phân vùng ảnh thường dựa vào kết cấu (texture) bề mặt ảnh Cũng cần lưu ý rằng, kỹ thuật dò biên phân vùng ảnh hai toán đối ngẫu Thực vậy, dò biên để thực phân lớp đối tượng phân lớp xong có nghĩa phân vùng ảnh Và ngược lại, phân vùng, ảnh phân lập thành đối tượng, ta phát biên Phương pháp dò biên trực tiếp tỏ hiệu chịu ảnh hưởng nhiễu song biến thiên độ sáng không đột ngột, phương pháp lại hiệu Phương pháp dò biên gián tiếp có khó cài đặt xong lại áp dụng tốt biến thiên độ sáng nhỏ 1.1.3 Quy trình phát biên trực tiếp Bước 1: Khử nhiễu ảnh Vì ảnh thu nhận thường có nhiễu, nên bước phải khử nhiễu, việc khử nhiễu thực kỹ thuật khử nhiễu khác Bước 2: Làm biên Tiếp theo làm biên toán tử đạo hàm Bước 3: Định vị điểm biên Lê Minh Quý - CT1802 Vì kỹ thuật làm biên có hiệu ứng phụ tăng nhiễu, có số điểm biên giả cần loại bỏ Bước 4: Liên kết trích chọn biên Như nói, phát biên phân vùng ảnh tốn đối ngẫu, phát biên thông qua việc phân vùng ảnh 1.1.4 Một số phương pháp phát biên Các phương pháp phát biên truyền thống thường dựa kết phép tích chập (convolution) ảnh cần nghiên cứu lọc 2D (filter) thường gọi mặt nạ (mask) Cấu trúc giá trị toán tử phát biên xác định hướng đặc trưng mà tốn tử nhạy cảm với biên Có số tốn tử thích hợp cho đường biên có hướng nằm ngang, số tốn tử lại thích hợp cho việc tìm kiếm biên dạng thẳng đứng hay theo hướng đường chéo Hiện có nhiều phương pháp phát biên sử dụng, nhiên có hai phương pháp phát biên là: Phương pháp Gradient phương pháp Laplace 1.1.4.1 Phương pháp Gradient Đạo hàm bậc theo hướng ngang dọc tính theo cơng thức sau: f Gx x f Gy f y (1.1) Biên độ gradient vector hay độ lớn tổng cộng giá trị đạo hàm nằm biên kết hợp hai giá trị theo công thức: f f Gx2 G y2 (1.2) Hướng gradient vector xác định theo: Lê Minh Quý - CT1802 10 G f tan 1 x G y (1.3) Hướng biên vng góc với hướng gradient vector 1.1.4.1.1 Toán tử sobel Trên thực tế Sobel sử dụng hai mặt nạ có kích thước [3 x 3] mặt nạ đơn giản quay mặt nạ góc 900 hình1- Các mặt nạ thiết kế để tìm đường biên theo chiều đứng chiều ngang cách tốt Khi thực phép convolution ảnh mặt nạ ta nhận gradient theo chiều đứng chiều ngang Gx, Gy Toán tử Sobel có dạng hình 1-2 Hình 1-2: Tốn tử Sobel 1.1.4.1.2 Toán tử Prewitt Phương pháp Prewitt gần giống với Sobel Đây phương pháp lâu đời nhất, cổ điển Tốn tử Prewitt mơ tả hình 1-3 Hình 1-3: Tốn tử Prewitt 1.1.4.1.3 Tốn tử Roberts Tương tự Sobel, ta tính đường biên ngang dọc cách riêng rẽ dùng hai mặt nạ hình 1-4, sau tổng hợp lại đường biên thực ảnh Tuy nhiên mặt nạ Robert nhỏ nên kết bị ảnh hưởng nhiều nhiễu Lê Minh Quý - CT1802 11 Lê Minh Quý - CT1802 41 2.4.2.3 Bài toán ghép cặp với trọng số lớn Input: Đồ thị hai phần đầy đủ G = (X∪Y, E), X = {X1, X2, , Xn}, Y = {Y1, Y2, , Yn} cho ma trận vng C cỡ n×n, c[i, j] trọng số cạnh nối đỉnh Xi với Yj Giả thiết c[i, j] ≥ với i, j Output: Ghép cặp hoàn hảo với trọng số lớn Lê Minh Quý - CT1802 42 2.4.2.3.1 Thuật toán Bước 1: Khởi tạo: Một ghép cặp M = ∅ Khởi tạo hai dãy Fx Fy thỏa mãn Fx[i]+Fy[j] ≥ c[i, j] với i, j; chẳng hạn gán Fx[i] với giá trị lớn dòng i ma trận C Fy[j] = Bước 2: Với đỉnh x∗ ∈ X, ta tìm cách ghép x∗ sau: Với cách hiểu 0−cạnh cạnh thỏa mãn c[i, j] = Fx[i]+Fy[j], đỉnh X∗, thử tìm đưởng mở x∗.Có hai khả xảy ra: Hoặc tìm đường mở dọc theo đường mở, ta loại bỏ cạnh ghép khỏi M thêm vào M cạnh chưa ghép, ta ghép cặp nhiều ghép cũ cạnh đỉnh x∗ trở thành ghép Hoặc khơng tìm đường mở ta xác định hai tập: VisitedX = Tập X_đỉnh đến từ x∗ đường xen kẽ; VisitedY = Tập Y_đỉnh đến từ x∗ đường xen kẽ; Đặt ∆ = x∈[a;b]{Fx[i]+Fy[j]−c[i, j], X[i] thuộc V isitedX, Y [j] không thuộc V isitedY} Với X[i] thuộc tập VisitedX, gán Fx[i]:= Fx[i]−∆; Với Y [j] thuộc tập VisitedY, gán Fx[j]:= Fx[j] + ∆; Lặp lại thủ tục tìm đường mở xuất phát từ x∗ tìm đường mở Bước 3: Sau bước X_đỉnh đều ghép, ta ghép cặp hoàn hảo với trọng số lớn Lê Minh Quý - CT1802 43 CHƯƠNG 3: THỰC NGHIỆM 3.1 Môi trường thực nghiệm 3.1.1 Phần cứng Thành phần Thông số CPU Core i5-2540M 2.60GHz RAM 4GB Hệ điều hành Windows 10 Pro 64-bit Bộ nhớ 250GB 3.1.2 Phần mềm Chương trình cài đặt mơi trường visual studio 2017 với thư viện mã nguồn mở OpenCV (Open Source Computer Vision Library) OpenCV thư viện mã nguồn mở về thị giác máy tính học máy Thư viện xây dựng để cung cấp nền tảng cho ứng dụng thị giác máy tính nhằm đẩy mạnh phát triển về hàm lượng tri thức máy tính sản phẩm thương mại Nhờ giấy phép quyền BSD nhiều công ty lớn hàng đầu giới Google, Yahoo, Microsoft, Intel, IBM, … đóng góp xây dựng thư viện, OpenCV công cụ mạnh sử dụng rộng rãi trường học công ty khởi nghiệp Thư viện OpenCV bao gồm nhiều giao diện dành cho C++, C, Python, Java, MATLAB hỗ trợ cho hệ điều hành khác Windows, Linux, Android, MacOS Trong phiên OpenCV 3.1, giao diện sử dụng cho CUDA OpenCL phát triển hoàn thiện OpenCV viết nguyên ngôn ngữ C++ OpenCV có nhiều chức Sau tóm tắt về hệ thống nhóm hàm OpenCV Image and Video I/O Là nhóm hàm cho phép đọc liệu ảnh từ file trực tiếp từ video Lê Minh Quý - CT1802 44 Các thuật toán xử lý ảnh thị giác máy (General computer-vision and image-processing algorithms (mid – and low level APIs)): Bao gồm hàm thực thuật toán xử lý ảnh từ video Graphic: Bao gồm hàm cho phép viết chữ vẽ hình ảnh Thêm vào hàm cịn sử dụng để ghi nhãn đánh dấu Ví dụ ta viết chương trình cần nhận dạng nhiểu đối tượng có ích cho tạo nhãn ảnh (label image) với kích thước vị trí OpenCV cho Linux MacOSX đóng gói gói mã nguồn lưu trữ Ta phải xây dựng thư viện tĩnh đối tượng chia sẻ (shared-object) Ta cần xây dựng RPM trước tiên cài đặt từ nó, biên dịch cài đặt Cấu trúc cho hai nằm INSTALL Với Window ta cài đặt OpenCV, copy file OpenCV vào thư mục mà ta chọn Mặc định cài đặt đến C:/Program Files/OpenCV/ Trong thư mục OpenCV có vài thư mục khác Thư mục docs chứa file văn html cho toàn hàm OpenCV kiểu liệu Từ file văn ta làm ví dụ, ta muốn xem thư mục “samples” Những file header cần thiết ta dịch chương trình sử dụng OpenCV 3.2 Đối sánh ảnh dựa ngữ cảnh hình dạng sử dụng opencv 3.2.1 Tìm đường bao lấy mẫu điểm đường bao Bước 1: Đọc hiển thị ảnh Hàm đọc ảnh opencv: imread Mat imread(const string&filename, int flags) Filename: Tên ảnh đầu vào Flags: Lê Minh Quý - CT1802 45 CV_LOAD_IMAGE_ANYDEPTH: Nếu ảnh đầu vào có chiều sâu tương ứng ảnh trả về 16-bit/32-bit, cịn ngược lại trả về ảnh 8bit CV_LOAD_IMAGE_COLOR: Nếu dùng hàm này, ảnh chuyển đổi thành ảnh màu CV_LOAD_IMAGE_GRAYSCALE: Nếu dùng hàm này, trả về hình ảnh đa mức xám Hàm hiển thị ảnh opencv: imshow Void imshow(const string & winname, InputArray mat) Winname: Tên cửa sổ hiển thị ảnh Image: Hình ảnh hiển thị Hàm imshow hiển thị hình ảnh cửa sổ định Nếu cửa sổ tạo CV_WINDOW_AUTOSIZE, hình ảnh hiển thị với kích thước ban đầu nó, nhiên bị giới hạn độ phân giải hình Nếu khơng, hình ảnh thu nhỏ để vừa với cửa sổ Hàm chia tỷ lệ hình ảnh, tùy thuộc vào độ sâu Ví dụ đọc hiển thị ảnh: Mat img = imread("D:/Anh/Shape1.jpg"); imshow("Shape", img); Hình 3-1: Hình hiển thị Shape Lê Minh Quý - CT1802 46 Bước 2: Tìm đường bao Sử dụng hàm findContours(currentQuery, _contoursQuery, RETR_LIST, CHAIN_APPROX_NONE) để tìm đường bao currentQuery: Ảnh đầu vào contoursQuery: Các đường bao tìm.Mỗi đường bao lưu trữ vector điểm RETR_LIST: Trả về tất đường bao mà không thiết lập mối quan hệ thứ bậc CHAIN_APPROX_NONE: Lưu trữ tất điểm đường bao.Nghĩa điểm liền x 1, y1 x2, y2 đường bao thuộc láng giềng ngang, dọc chéo, nghĩa max(abs(x1-x2), abs(y2-y1))=1 Kết tìm đường bao theo thủ tục minh họa hình 3-2: Hình 3-2: Kết tìm biên phương pháp Canny từ ảnh đầu vào Lê Minh Quý - CT1802 47 Bước 3: Lấy mẫu n điểm đường bao Trong trường hợp số điểm thực tế đường bao nhỏ n thêm điểm vào cho đủ: Lấy mẫu n điểm ngẫu nhiên đường bao sử dụng phương thức: random_shuffle(contoursQuery.begin(), contoursQuery.end()); vector contQuery; for (int i = 0; i < n; i++) { contQuery.push_back(contoursQuery[i]); } Việc tìm đường bao lấy mẫu thực theo thủ tục sau: int k = _contoursQuery.size(); std::vector colors; for (int i = 0; i computeDistance(contQuery1,contQuery2); int bestMatch = 0; float bestDis = FLT_MAX; moveWindow("TEST", 0, 0); std::cout