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

Đề tài nghiên cứu công nghệ tăng tính thực tế ảo augmented reaily và ứng dụng augmanted reality trên ios

46 15 0

Đ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 46
Dung lượng 1,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2 I N I Đ U Với sự phát triển như v bão của công nghệ thông tin hiện nay, việc đi tắt đón đầu những công nghệ mới của thế giới để bắt k p đà phát triển của công nghệ thông tin thế giới

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

-

BÁO CÁO

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Tên đồ án: Đ T I NGHI N C U CÔNG NGHỆ T NG T NH

TH C T ẢO AUG ENTED EAI V NG D NG

AUGMANTED REALITY TRÊN IOS

Nghệ An, tháng 12 năm 2014

Trang 2

-

BÁO CÁO

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Tên đồ án: Đ T I NGHI N C U CÔNG NGHỆ T NG T NH

TH C T ẢO AUG ENTED EAI V NG D NG

AUGMANTED REALITY TRÊN IOS

Nghệ An, tháng 12 năm 2014

Trang 3

Để hoàn thành đề tài này, ngoài nỗ lực cố gắng của bản thân, em đã nhận được

sự giúp đỡ nhiệt tình của các thầy giáo, cô giáo trong khoa CNTT đã tạo điều kiện cho

em thực hiện được đồ án tốt nghiệp cuối khóa

Em xin bày tỏ lời cảm ơn sâu sắc tới Th.S.Trương Trọng Cần người đã tận tình hướng dẫn, giúp đỡ và chỉ bảo trong suốt quá trình thực hiện đề tài

Em c ng xin chân thành cảm ơn các thầy cô giáo trong tổ bộ môn phương pháp giảng dạy của khoa CNTT Trường Đại Học Vinh

Đồng thời em c ng xin cảm ơn sự hỗ trợ của công ty Lifetime Technologies và sự nhiệt tình hướng dẫn của trưởng nhóm anh Nguyễn Thanh Tùng cùng các anh và các bạn đã giúp đỡ em trong quá trình hoàn thành đồ án

Em xin chân thành cảm ơn các bạn cùng lớp đã động viên, đoàn kết, yêu thương nhau, giúp đỡ nhau trong suốt thời gian học tập

Cuối cùng em xin bày tỏ lòng biết ơn đối với gia đình động viên, giúp đỡ em hoàn thành đồ án này

Mặc dù đã cố gắng tiếp thu ý kiến của giảng viên hướng dẫn và mọi người xung quanh và nỗ lực trong nghiên cứu, song đề tài này chắc chắn không thể tránh những sai sót Vì vậy, rất mong được sự góp ý của các thầy cô giáo và các bạn để Em có được cái nhìn sâu sắc hơn về vấn đề nghiên cứu, hoàn thiện đề tài, đạt chất lượng cao hơn Mọi đóng góp và thảo luận về đề tài xin g i về đ a chỉ email:

mrdinhluong@gmail.com

Em xin chân thành cảm ơn!

Vinh, Ngày 20 tháng 11 năm 2014

Sinh Viên thực hiện Phan Đình Lương

Trang 4

2

I N I Đ U

Với sự phát triển như v bão của công nghệ thông tin hiện nay, việc đi tắt đón đầu những công nghệ mới của thế giới để bắt k p đà phát triển của công nghệ thông tin thế giới thì việc tìm hiểu các công nghệ cao có sẵn và nghiên cứu dựa trên đó là điều rất quan trọng đối với công nghệ thông tin nước ta nói chung và đối với ngành kỹ sư công nghệ thông tin nói riêng

Những năm gần đây thế giới đã chứng kiến những sự đổi mới trong cách tương tác của các thiết b công nghệ hiện đại với con người mang lại những tiện ích mang tính đột phá như Google Glass, hệ thống dẫn đường tự động, game tương tác người máy

Với khuôn khổ trong đề tài, Em xin trình bày quy trình xây dựng công nghệ tăng tính thực tế ảo với sự áp dụng trên hệ điều hành iOS dành cho các thiết b như iPhone, iPod, iPad (Do hãng Apple phát hành và phát triển) S dụng các kỹ thuật như nhận diện ảnh, camera calibration

Đề tài này em xin trình bày công nghệ tăng cường thực tế ảo mà Em nghiên cứu được trong 3 phần

Phần 1 : X lý ảnh – Image Processing: Cơ bản về ảnh và x lý ảnh

Phần 2: Nhận diện vật – Object Detecting

Phần 3: Xây dựng thuật toán và tạo một ứng dụng Augmented Reality

Trong quá trình nghiên cứu đề tài này do giới hạn về thời và phạm vi nghiên cứu nên đề tài vẫn chưa được xây dựng hoàn hảo, do đó vẫn còn tồn tại một số thiếu sót nhất đ nh, vậy nên kính mong quý Thầy Cô và các bạn góp ý để bài nghiên cứu của

Em được hoàn thiện hơn

Sinh Viên Phan Đình Lương

Trang 5

3

Các thuật ngữ dùng trong báo cáo:

Threshold Lấy ngưỡng ảnh t một ngưỡng nhất đ nh

Camera calibration

Hiệu chỉnh camera, tức là lấy các thông số của camera và thông số bên ngoài camera để phục

vụ cho việc xây dựng không gian 3D

Marker Vật được nhận dạng s dụng trong chương

trình

Binary Image Ảnh nh phân đen trắng

Trang 6

4

ục ục

LỜI CẢM N 1

MỞ ĐẦU 5

CHƯ NG 1: LẤY ẢNH V X L ẢNH T CAMERA 6

1.1 Cấu trúc ảnh số 7

1.2 Cơ bản về OpenCV framework 11

1.3 X lý ảnh với OpenCV 12

1.3.1 Các kiểu dữ liệu cơ bản trong OpenCV 12

1.3.2 Chuyển đổi giữa các không gian màu 12

CHƯ NG 2: NH N DI N ẢNH 14

2.1 Nhận diện ảnh s dụng machine learning 14

2.2 Nhận diện ảnh s dụng cơ sở dữ liệu sẵn có 14

CHƯ NG 3: X Y D NG THU T TO N NH N DI N ẢNH S D NG PHƯ NG PH P T M ĐƯỜNG VI N V K T H P V I C C THU T TO N KH C 30

3.1 Lấy khung hình t video stream trong iOS 31

3.2 Cài đặt thông số cho camera 31

3.3 Xác đinh Marker - Marker Detection 31

3.4 Xác đ nh tọa độ marker trong 3D – Placing marker in 3D 32

3.5 Render vật 3D ảo 37

K T LU N 43

T I LI U THAM KHẢO 44

Trang 7

ục ti u

- Nhận diện chính xác vật cần nhận diện t các frames t camera của thiết

b

- Tạo không gian 3D chính xác

- Vẽ vật 3D với các thuộc tính đầy đủ như nomals, disfuse, color

Đ nh hư ng v giải pháp

- S dụng các kỹ thuật trong computer vision để bóc tách đối tượng t ảnh cósẵn

- Xây dựng không gian 3D s dụng kỹ thuật camera calibration

- Render vật 3D ảo lên màn hình s dụng OpenGL

Trang 8

Quá trình x lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho

ra kết quả mong muốn Kết quả đầu ra của một quá trình x lý ảnh có thể là một ảnh

“tốt hơn” hoặc một kết luận

Th giác máy tính (computer vision) là một lĩnh vực bao gồm các phương pháp thu nhận, x lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh và, nói chung là

dữ liệu đa chiều t thế giới thực để cho ra các thông tin số hoặc biểu tượng, ví dụ trong các dạng quyết đ nh.Việc phát triển lĩnh vực này có bối cảnh t việc sao chép các khả năng th giác con người bởi sự nhận diện và hiểu biết một hình ảnh mang tính điện t

Sự nhận diện hình ảnh có thể xem là việc giải quyết vấn đề của các biểu tượng thông tin t dữ liệu hình ảnh qua cách dùng các mô hình được xây dựng với sự giúp đỡ của các ngành lý thuyết học, thống kê, vật lý và hình học Th giác máy tính c ng được mô

tả là sự tổng thể của một dải rộng các quá trình tự động và tích hợp và các thể hiện cho các nhận thức th giác

Th giác máy tính là một môn học khoa học liên quan đến lý thuyết đằng sau các hệ thống nhân tạo có trích xuất các thông tin t các hình ảnh Dữ liệu hình ảnh có thể nhiều dạng, chẳng hạn như chuỗi video, các cảnh t nhiều camera, hay dữ liệu đa chiều t máy quét y học Th giác máy tính còn là một môn học kỹ thuật, trong đó tìm kiếm việc áp dụng các mô hình và các lý thuyết cho việc xây dựng các hệ thống th giác máy tính

Các lĩnh vực con của th giác máy tính bao gồm tái cấu trúc cảnh, dò tìm sự kiện, theo d i video, nhận diện bố cục đối tượng, sinh trắc học, chỉ mục, đánh giá chuyển động và phục hồi ảnh

Ảnh tự nhiên t thế giới ngoài được thu nhận qua các thiết b thu (như Camera, máy chụp ảnh) Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại Camera ống kiểu CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy ra t Camera, sau đó nó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho x lý tiếp theo (Máy ảnh số hiện nay là một thí dụ gần g i) Mặt khác, ảnh c ng có thể tiếp nhận t vệ tinh có thể quét t ảnh chụp bằng máy quét ảnh

Trong phạm vi đề tài, Em trình bày việc x lý video stream trên iOS devices Việc lấy và x lý các frame t video stream Em xin trình bày ở nội dung chương 3

Trang 9

Hình 1.1: Cấu trúc ảnh số

Đối với ảnh xám, mỗi điểm ảnh lưu trữ giá tr mức xám của nó trong một byte = 8bit

Vậy nên giá tr mức xám có giá tr t 0 – 255

Còn đối với ảnh nh phân thì mỗi điểm ảnh lưu trữ màu sắc là đen hoặc trắng tương ứng với 0 và 1, vậy nên mỗi pixel chỉ cần 1 bit để lưu trữ dữ liệu màu

Còn đối với ảnh màu thì phức tạp hơn, mỗi pixel lưu trữ màu sắc theo mã màu

và theo số kênh màu tương ứng mà ta có các kiểu cấu trúc dữ liệu màu sắc khác nhau

Trang 10

8

- Mô hình màu RGB s dụng mô hình bổ sung trong đó ánh sáng đỏ, xanh lá

cây và xanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo thành các màu khác T viết tắt RGB trong tiếng Anh có nghĩa là đỏ (red), xanh lá cây (green) và xanh lam (blue), là ba màu gốc trong các mô hình ánh sáng bổ sung C ng lưu ý rằng mô hình màu RGB tự bản thân nó không đ nh nghĩa thế nào là "đỏ", "xanh

lá cây" và "xanh lam" một cách chính xác, vì thế với cùng các giá tr như nhau của RGB có thể mô tả các màu tương đối khác nhau trên các thiết b khác nhau có cùng một mô hình màu Trong khi chúng cùng chia sẻ một mô hình màu chung, không gian màu thực sự của chúng là dao động một cách đáng kể

Hình 1.2: Mô hình màu RGB Biểu diễn dạng số 24 bit

Khi biểu diễn dưới dạng số, các giá tr RGB trong mô hình 24 bpp( bit per pixel) thông thường được ghi bằng cặp ba số nguyên giữa 0 và 255, mỗi số đại diện cho cường độ của màu đỏ, xanh lá cây, xanh lam trong trật tự như thế

Số lượng màu tối đa sẽ là: 256 x 256 x 256, hay 256^3, hay 2^24 = 16.777.216≈17 triệu màu

Ví dụ:

Trang 11

9

(0, 0, 0) là màu đen, (255, 255, 255) là màu trắng, (255, 0, 0) là màu đỏ, (0, 255, 0) là màu xanh lá cây, (0, 0, 255) là màu xanh lam, (255, 255, 0) là màu vàng, (0, 255, 255) là màu xanh ngọc, (255, 0, 255) là màu hồng cánh sen

Đ nh nghĩa trên s dụng thỏa thuận được biết đến như là toàn bộ khoảng RGB.Thông thường, RGB cho video kỹ thuật số không phải là toàn bộ khoảng này.Thay vì thế video RGB s dụng thỏa thuận với thang độ và các giá tr tương đối chẳng hạn như (16, 16, 16) là màu đen, (235, 235, 235) là màu trắng v.v Ví dụ, các thang đo và giá tr tương đối này được s dụng cho đ nh nghĩa RGB kỹ thuật số trong CCIR 601

Kiểu 16 bit

Còn có kiểu 16 bpp, trong đó hoặc là có 5 bit cho mỗi màu, gọi là kiểu 555 hay thêm một bit còn lại cho màu xanh lá cây (vì mắt có thể cảm nhận màu này tốt hơn so với các màu khác), gọi là kiểu 565 Kiểu 24 bpp nói chung được gọi là thật màu, trong khi kiểu 16 bpp được gọi là cao màu

số của 2, so với các dữ liệu không được sắp xếp như vậy

Kiểu 48 bit

"Kiểu 16-bit" c ng có thể để chỉ tới 16 bit cho mỗi màu thành phần, tạo ra trong kiểu 48 bpp Kiểu này làm cho nó có khả năng biểu th 65.535 sắc thái mỗi màu thành phần thay vì chỉ có 255.Nó đầu tiên được s dụng trong chỉnh s a hình ảnh chuyên nghiệp, như Photoshop của Adobe để duy trì sự chính xác cao hơn khi có hơn một thuật toán lọc hình ảnh được s dụng đối với hình ảnh đó Với chỉ có 8 bit cho mỗi màu, các sai số làm tròn có xu hướng tích l y sau mỗi thuật toán lọc hình ảnh được s dụng và làm biến dạng kết quả cuối cùng

- RGBA

Với nhu cầu về các hình ảnh ghép đã xuất hiện phương án của RGB trong đó thêm vào kênh 8 bit dư cho độ trong suốt, vì thế tạo ra đ nh dạng 32 bpp Kênh trong suốt được biết đến phổ biến hơn như là kênh alpha, vì thế đ nh dạng này có tên là RGBA C ng lưu ý rằng vì nó không thay đổi bất kỳ cái gì trong mô hình RGB, nên RGBA không phải là một mô hình màu khác biệt, nó chỉ là đ nh dạng tệp (file) trong

Trang 12

10

đó bổ sung thêm thông tin về độ trong suốt cùng với thông tin về màu trong cùng một tệp

- CMYK

C= Cyan trong tiếng Anh có nghĩa là màu xanh lơ hay cánh chả

M= Magenta trong tiếng Anh có nghĩa là màu cánh sen hay hồng sẫm

Y= Yellow trong tiếng Anh có nghĩa là màu vàng

K= Key (trong tiếng Anh nên hiểu theo nghĩa là cái gì đó then chốt hay chủ yếu

để ám chỉ màu đen mặc dù màu này có tên tiếng Anh là black do chữ B đã được s dụng để chỉ màu xanh lam (blue) trong mô hình màu RGB để tạo các màu khác

Hỗn hợp của các màu CMY lý tưởng là loại tr (các màu này khi in cùng một chỗ trên nền trắng sẽ tạo ra màu đen) Nguyên lý làm việc của CMYK là trên cơ sở hấp thụ ánh sáng Màu mà người ta nhìn thấy là t phần của ánh sáng không b hấp thụ Trong CMYK hồng sẫm cộng với vàng sẽ cho màu đỏ, cánh sen cộng với xanh lơ cho màu xanh lam, xanh lơ cộng với vàng sinh ra màu xanh lá cây và tổ hợp của các màu xanh lơ, cánh sen và vàng tạo ra màu đen

Vì màu 'đen' sinh ra bởi việc trộn các màu gốc loại tr là không thực sự giống như mực đen thật sự hay màu đen của vật đen tuyệt đối (là vật hấp thụ toàn bộ ánh sáng), việc in ấn trên cơ sở bốn màu (đôi khi gọi là in các màu mặc dù điều này không chính xác) phải s dụng mực đen để bổ sung thêm vào với các màu gốc loại tr là các màu vàng, cánh sen và xanh lơ

Việc s dụng công nghệ in ấn bốn màu sinh ra kết quả in ấn cuối cùng rất cao cấp với độ tương phản cao hơn Tuy nhiên màu của vật thể mà người ta nhìn thấy trên màn hình máy tính thông thường có sự sai khác chút ít với màu của nó khi in ra vì các

mô hình màu CMYK và RGB (s dụng trong màn hình máy tính) có các gam màu khác nhau Mô hình màu RGB là mô hình dựa trên cơ sở phát xạ ánh sáng (màu bổ sung) trong khi mô hình CMYK làm việc theo cơ chế hấp thụ ánh sáng (màu loại tr )

- HSV: HSV và c ng gần tương tự như HSL là không gian màu được dùng

nhiều trong việc chỉnh sữa ảnh, phân tích ảnh và một phần của lĩnh vực th giác máy tính Hệ không gian này dựa vào 3 thông số sau để mô tả màu sắc H = Hue: màu sắc,

S = Saturation: độ đậm đặc, sự bảo hòa, V = value: giá tr cường độ sáng.Không gian màu này thường được biểu diễn dưới dạng hình trụ hoặc hình nón

Theo đó, đi theo vòng tròn t 0 -360 độ là trường biểu diễn màu sắc(Hue) Trường này bắt đầu t màu đỏ đầu tiên (red primary) tới màu xanh lục đầu tiên (green

Trang 13

11

primary) nằm trong khoảng 0-120 độ, t 120 - 240 độ là màu xanh lục tới xanh lơ (green -primary - blue primary) T 240 - 360 là t màu đen tới lại màu đỏ

Hình 1.3: Mô hình màu HSV

1.2 Cơ bản v OpenCV framewor

OpenCV(Open Source Computer Vision) là thư viện mã nguồn mở đồ sộ với sự góp sức của rất nhiều các developers trên thế giới thì hiện nay OpenCV là một thư viện về th giác máy tính mạnh và phổ biến nhất hiện nay

OpenCV là một thư viện mã nguồn mở về th giác máy tính

(tại http://SourceForge.net/projects/opencvlibrary) với hơn 500 hàm và hơn

2500 các thuật toán đã được tối ưu về x lý ảnh, và các vấn đề liên quan tới th giác máy tính OpenCV được thiết kế một cách tối ưu, s dụng tối đa sức mạnh của các dòng chip đa l i… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau( cros-patform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS …

OpenCV bao gồm trong các lĩnh vực: Th giác(Vision), phân tích cấu trúc sản phẩm (factory product inspection), y học(medical imaging), an ninh(Security), tương tác người s dụng( User interface), Camera Calibration, Steoreo Vision, Robotics Việc s dụng thư viện OpenCV tuân theo các quy đ nh về s dụng phần mềm

mã nguồn mở BSD do đó bạn có thể s dụng thư viện này một cách miễn phí cho cả

Trang 14

có khá nhiều điểm khác biệt so với phiện bản thứ nhất Thư viện OpenCV ban đầu được sự hỗ trợ t Intel, sau đó được hỗ trợ bở Wilow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot Cho đến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none-profit foundation) và được sự hưởng ứng rất lớn của cộng đồng

1.3 ảnh v i OpenCV

1.3.1 Các i u dữ iệu cơ bản trong OpenCV

 Kiểu dữ liệu sơ khai:

 CvPoint: CvPoint2f, Cv Point2d, CvPoint3f, CvPoint3d

 CvRect, CvScalar, CvSize

 Kiểu dữ liệu Ma trận và kiểu ảnh

 CvArr: kiểu dữ liệu mảng(Array) dùng cho OpenCV

 lplImage

 CvMat: tùy vào t ng loại ảnh mà ta có các kiểu của CvMat là CV_8UC1(8 bit 1 channel), CV_8UC2(8 bit 2 channels), CV_8UC3( 8 bit 3 channels)

1.3.2 Chuy n i giữa các h ng gian m u

Chuy n i GB ang C K v ngược ại

Như đã nói ở trên, thành phần K là thành phần phụ dùng để in cho những điểm màu có màu đen trong hệ CYMK, do vậy để chuyển không gian màu t RGB sang CMYK trước hết ta chuyển RGB sang CMY sau đó tìm thành phần K còn lại Công thức chuyển t RGB sang CMY:

(C', M', Y') = ((255 - R), (255 - G), (255 - B))

Việc tính giá tr của K lại là một vấn đề khác vì nó liên quan tới nhà sản xuất công nghệ in, tuy nhiên về mặt lý thuyết có thể chấp nhận rằng K = min {C'/2,55, M'/2,55, Y'/2,55} , như vậy 0<= K <=100

Nếu K = 100, thì C = M = Y =0 (trường hợp in màu đen)

Nếu 0< K < 100: C = (C'/2.55 - K) * 100 /(100 - K), M = (M'/2.55 - K) * 100 /(100 - K), Y = (Y'/2.55 - K) *100 /(100 - K) và K = K Trong đó, C, M, Y, K được làm tròn tới để lấy chỉ số nguyên

Trang 15

13

Chuy n i GB ang HSV v ngược ại

Giả s ta có một điểm màu có giá tr trong hệ RGB là (R, G, B).ta chuyển sang không gian HSV như sau:

Đặt M = Max(R, G, B), m = Min(R, G, B) và C = M - m

Nếu M = R, H' = (G - B)/C mod 6 Nếu M = G, H' = (B - R)/C + 2 Nếu M = B, H' = (R - G)/C + 4 Và H = H'x60 Trong trường hợp C = 0, H = 0 độ

V = M

S = C/V Trong trường hợp V hoặc C bằng 0, S = 0

Để chuyển t HSV sang RGB ta làm như sau:

Giả s ta có không gian màu HSV với H = [0, 360], S = [0, 1], V = [0, 1] Khi

đó, ta tính C = VxS H' = H/60

X = C(1 - |H' mod2 -1|) Ta biểu diễn hệ (R1, G1, B1) như sau:

Đặt m = V - C và ta có kết quả cuối cùng: (R, G, B) = (R1 + m, G1 + m, G1 +m)

Chuy n i các h ng gian m u trong OpenCV

Để chuyển đổi các không gian màu trong OpenCV ta dùng hàm sau:

cvCvtColor(const CvArr *src, CvArr *dst, int code) Trong đó, src là ảnh đầu vào, dst là ảnh đích chứa kết quả chuyển đổi code là mã chuyển đổi, ví dụ ta cần chuyển t RGB sang HSV thì code là CV_RGB2HSV, CV_RBG2CMYK

Trang 16

14

Chương 2: Nhận Diện Ảnh 2.1 Nhận diện ảnh dụng machine earning

Nhận diện ảnh s dụng Haar Classifier

Nhận dạng vật s dụng Haar feature-based cascade classifiers là một phương pháp nhận diện vật được đề xuất bởi Paul Viola và Michael Jones trong bài báo của họ

có tên ”Rapid Object Detection using a Boosted Cascade of Simple Features” vào năm

2001 Nó là một thuật toán học máy dựa trên chức năng phân tầng các đặc điểm được trích xuất t tập ảnh chuẩn và ảnh không chuẩn để phát hiện vật trong ảnh cần detect Nhận diện khuôn mặt dựa và các vector mô tả cục bộ Trong OpenCV s dụng

cơ sở dữ liệu là các file *.xml chứa các bộ vector mô tả các đặc điểm nhận dạng

Đây là một hướng trong việc phát hiện vật trong ảnh Việc s dụng các tệp xml này được các bộ loader hỗ trợ đầy đủ trong thư viên OpenCV

2.2 Nhận diện ảnh dụng cơ dữ iệu n c

2.2.1 Nhận diện ảnh s dụng thuật toán keypoints

Keypoint gì

Trang 17

15

Key point là một điểm hoặc một vùng trong ảnh chứa rất nhiều thông tin cục bộ

và không b thay đổi bới các hoạt động nhiễu toàn cục hay đ a phương, như là: biến

đổi hình học affine, tỉ lệ, quay, độ chiếu sáng…

ng dụng c a Keypoint

Keypoint hiện nay đươc ứng dụng trong nhiều lĩnh vực như google image search engine, detect traffic jum

Các thuật toán tìm Keypoint

Do David Lowe đưa ra t năm 2004 và đến này đã có nhiều cải tiến trong thuật toán Đặc trưng được trích chọn là keypoints

Sift bao gồm 4 bước chính:

- Phát hiện các điểm cực tr Scale – space ( Scale- space extrema detection) Là bước tìm kiếm tất cả các điểm keypoint trên tất cả các tỉ lệ và các v trí của ảnh Nó s dụng hàm deffirent of Gaussian(doG) để xác đ nh các điểm tiềm năng mà bất biến với quy mô và hướng của ảnh

- Đ nh v các keypoints ( keypoints localization): một hàm sẽ được đưa ra để kiểm tra để quyết đ nh xem các keypoint tiềm năng có được lựa chọn hay không

- Gắn hướng cho keypoints( Keypoint assignment): xác đ nh hướng cho các điểm hấp dẫn được chọn

- Mô tả các keypoints ( Keypoint description): Các key point sau khi được gán hướng sẽ được mô tả bằng các vector mô tả nhiều chiều

Hình 2.1: Sơ đồ tìm keypoints

Trang 18

16

Tập các keypoint thu được thường phụ thuộc rất ít vào các phép biến đổi cơ bản như xoay, phóng to, thu nhỏ, tăng giảm cường độ sáng, vì vậy có thể xem đây là các đặc trưng mang tính cục bộ của ảnh Để đối sánh và nhận dạng hai ảnh thì ta tìm tập keypoint giống nhau trong hai ảnh, dựa vào hướng và tỉ lệ để có thể biết đối tượng trong ảnh gốc đã xoay, thu phóng bao nhiêu so với ảnh đem đối sánh

Thuật toán này dựa vào điểm bất biến cục bộ của ảnh, chúng được trích xuất ra, được đ nh hướng và mô tả sao cho hai keypoint ở hai vùng khác nhau thì khác nhau Tuy nhiên một yếu tố ảnh hưởng không nhỏ đến tốc độ thuật toán là số lượng các keypoint được lấy ra là không nhỏ Trung bình một ảnh kích thước 500 x 500 pixels thì sẽ trích xuất được khoảng 1000 điểm (số lượng điểm này phụ thuộc vào tùy t ng ảnh và tham số lọc khác nhau) Số lượng các keypoint có một tầm quan trọng trong vấn đề nhận dạng đối tượng Để nhận dạng một đối tượng nhỏ trong một ảnh chứa tập hợp các đối tượng hỗn độn thì cần ít nhất ba keypoint giống nhau để phát hiện và và bóc tách đối tượng

Đối với vấn đề xây dựng một cơ sở dữ liệu ảnh và thực hiện nhận dạng đối tượng bất kì thì ban đầu thường s dụng SIFT để tạo một hệ dữ liệu các đặc trưng (keypoints) được trích xuất t dữ liệu ảnh gốc Sau đó với mỗi ảnh đối tượng đem nhận dạng ta dùng giải thuật SIFT trích xuất tập đặc trưng t ảnh và đem đối sánh với

hệ dữ liệu đặc trưng để tìm ra tập keypoint giống nhau, t đó nhận dạng đối tượng trong cơ sở dữ liệu ảnh ban đầu Tuy nhiên việc đối sánh này cần chi phí đối sánh rất lớn đối với cơ sở dữ liệu ảnh có số lượng lớn do số lượng các đặc trưng ở mỗi ảnh là lớn

PCA- SIFT (Principal Component Analysis – SIFT ): Là một giải thuật đưa

dữ liệu nhiều chiều về không gian có số chiều nhỏ hơn, là việc tìm một không gian mới có số chiều nhỏ hơn so với không gian c để tăng hiệu suất x lý PCA – SIFT có các thuộc tính sau:

- Giúp giảm số chiều dữ liệu

- Thay vì giữ lại các trục tọa độ không gian c , PCA xấy dựng lại một không gian mới có số chiều ít hơn mà vẫn giữ được tính biểu diễn dữ liệu tốt tương đương không gian c

- Các trục tọa độ mới trong không gian mới là tổ hợp tuyến tính của không gian

c , do đó về mặt ngữ nghĩa PCA xây dựng đặc trưng mới dựa trên các đặc trưng đã quan sát được Điểm hay là những đặc trưng này vẫn biểu diễn tốt dữ liệu ban đầu

Trang 19

17

- Trong không gian mới, các liên kết tiềm ẩn của dữ liệu có thể được khám phá,

mà nếu đặt trong không gian c thì khó phát hiện hơn, hoặc những liên kết như thế không thể hiện r

Nhận x t thuật toán v m c ng dụng tr n iOS

- Thuật toán đối sánh s dụng keypoints mang tính chính xác khá cao

- Các thuật toán s dụng keypoints s dụng một lượng lớn keypoints kéo theo

đó là việc tính toán khá nhiều trên keypoints để có được các bộ descriptor để đối sánh

- Việc ứng dụng vào ứng dụng tính toán thời gian thực hiện này trên các thiết

b phần cứng như PC, iMAC là khả thi, nhưng với việc ứng dụng trên iOS thì có hạn chế về mặt hiệu suất do việc trễ (delay) do tính toán và s dụng nhiều bộ nhớ do việc

x lý số lượng ảnh nhiều trong một khoảng thời gian ngắn nên ứng dụng còn b giật

lạc do b delay frame

- Với tốc độ phát triển của phần cứng như hiện nay thì tương lai không xa việc

ứng dụng thuật toán này trên iOS là khả thi

2.2.2 Nhận diện ảnh s dụng hàm Match Template

Cấu trúc hàm :void matchTemplate(InputArray image, InputArray templ,

OutputArray result, int method)

Trong đó :

- Input array image : Ảnh gốc dùng để đối sánh tìm ảnh mấu trong ảnh gốc

- Input array templ: Ảnh mẫu dùng để làm mẫu đối sánh

- Output array: Ma trận kết quả

- Method: phương thức lưu trư dữ liệu trong t ng pixel result array Có các

CV_TM_CCORR_NORMED

Hàm matchTemplate được s dụng trong OpenCV s dụng kỹ thuật template matching Để tìm một vùng trên ảnh gốc với giống hoặc tương tự với ảnh th ( template image)

Để thực hiện, ta cần 2 tham số là ảnh gốc cần tìm và ảnh th ngiệm

- Ảnh gốc( source image (I)): Ảnh mà chúng ta muốn tìm ảnh mẫu trong nó

- Ảnh mẫu( template image (T)): Ảnh mẫu dùng để so khớp

Trang 20

18

Hình 2.2 Hình ảnh mẫu trên ảnh gốc

Để nhận diện ảnh, chúng ta trượt ảnh mẫu trên ảnh gốc để tìm ra v trí khớp nối

Hình 2.3 Hướng trượt của ảnh mẫu

Mỗi v trí khi trượt T qua I chúng ta lưu trữ số liệu trong một ma trận – result matrix( R) Mỗi v trí (x,y) trong ma trận R chứa số liệu so khớp sau khi trượt ảnh

Hình 2.4 Ma trận kết quả tìm được

Trang 21

19

Như hình trên chúng ta thấy, kết quả ma trận R được tìm ra s dụng phương

thức dữ liệu lưu trữ TM_CCORR_NORMED, V trí sáng nhất chỉ ra v trí khớp nhất

so với các v trí khác nên ta kết hợp với hàm minMaxLoc để tìm ra v trí của vật được phát hiện, ở đây là max location

2.2.3 Nhận diện ảnh dụng các h m OpenCV t hợp

Nhận diện marker trong ảnh thu được

Một marker thường được thiết kế là một hình vuông với các vùng đen và trắng bên trong nó, và chúng có giới hạn về số lượng trong đó

Đầu tiên, chúng ta cần tìm ra các đường viền trong ảnh đưa vào và uốn thẳng lại thành hình vuông giống với marker ban đầu

Trong demo chương trình này, Em s dụng marker này làm ví dụ đơn giản

Hình 2.5 Hình ảnh marker

Trang 22

20

Chuy n ảnh ang dạng ảnh xám - Grayscale conversion

Việc chuyển đổi qua ảnh xám là việc cần thiết vì các marker luôn chỉ chứa các vùng trắng hoặc đen, và việc thao tác trên ảnh xám là dễ dàng hơn do chỉ s dụng 1 kênh nên việc thao tác được tối ưu hóa

Ảnh đầu ra nằm ở tham số thứ 2 trong hàm

y ảnh nh ph n - Image binarization

Việc thực hiện chuyển đổi ảnh nh phân là chuyển mỗi pixel thành đen hoặc trắng Bước này là bắt buộc để tìm ra các contour.Có vài phương thức để tạo ra ảnh nh phân; mỗi phương thức đều có mặt mạnh và mặt yếu riêng.Cách dễ dàng và nhanh nhất là lấy threshold dùng ngưỡng cứng Còn có một cách khác

là lấy ngưỡng động bằng cách s dụng tính trung bình giá tr ngưỡng xám các pixel rồi t đó lấy ngưỡng thích hợp cho việc lấy threshold

Hàm được s dụng để lấy ảnh nh phân:

void MarkerDetector::performThreshold(const cv::Mat& grayscale,

cv::Mat& thresholdImg)

{

cv::adaptiveThreshold(grayscale, // Input image

Trang 23

Sau khi lấy threshold ta được ảnh tương tự như ảnh dưới:

Hình 2.6 Ảnh nh phân thu được sau khi lấy ngưỡng

Tìm t t cả ư ng bi n - Contours detection

S dụng hàm findContour để tìm tất cả các đường biên trong ảnh nh phân

void MarkerDetector::findContours(const cv::Mat& thresholdImg,

std::vector<std::vector<cv::Point>>& contours,int minContourPointsAllowed)

{

std::vector< std::vector<cv::Point>> allContours;

cv::findContours(thresholdImg,allContours,CV_RETR_LIST,CV_CHAIN_APPR OX_NONE);

contours.clear();

Ngày đăng: 25/08/2021, 15:41

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w