ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU Nhận Dạng Cơ Thể Con Người
ĐỀ TÀI: Nhận Dạng Cơ Thể Con Người
Khoa Điện Tử Viễn Thông, Trường Đại học Bách Khoa, Đại học Đà Nẵng
GVHD : TS. Phạm Văn Tuấn
Khoa Điện Tử Viễn Thông, Trường Đại họcBách Khoa, Đại học Đà Nẵng
LIỆT KÊ HÌNH
Hình 1.1. Quá trình xử lý ảnh……………………………...………………………5
Hình 1.2. Các bước cơ bản trong một hệ thống xử lý ảnh………………...………5
Hình 1.3. Quá trình hiển thị và chỉnh sửa, lưu trữ ảnh thông qua DIB…..……10
Hình 1.4. Sự chuyển đổi giữa các mô hình biểu diễn ảnh………….……………10
Hình 1.5. Mô hình tổng quát của bài toán nhận dạng cơ thể người……….……12
Hình 2.1. Lan truyền ngược………………………………………………………17
Hình 2.2. Minh họa việc tính δj cho việc tính nút ẩn j………………...…………20
Hình 3.1. Hướng của véc tơ riêng…………………………………………...……30
Hình 3.2. Minh hoạ phát hiện vị trí tứ chi, mình, đầu trên cơ thể…………...…32
Hình 3.3. Minh hoạ kiểu kết hợp toàn cục và bộ phận…………………..………34
Hình 3.4. Sự phân phối dữ liệu trong không gian 3 chiều và các trục tương ứng của PCA và ICA……….………………………………………………..…………36
Hình3.5. minh họa kiến trúc 1 trong mô hình ICA………………………………37
Hình3.6. Minh họa kiến trúc 2 trong mô hình ICA…………………...…………37
Hình3.7. Mô hình tổng hợp ảnh cho kiến trúc 2 của ICA trên pixel……,,,……38
Hình 4.1. Các bước cơ bản trong xử lý ảnh………………………………...……42
Hình 4.2. Sơ đồ khối tổng quát của chương trình……………………….………52
MỤC LỤC
CÁC TỪ VIẾT TẮT……………………………….….…………………………...3
MỞ ĐẦU…………………………………………………………………..………..4
CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH……………………………….….5
1.1 Giới thiệu chương ……………………………………………………………..5
1.2 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh …..……….….…….…………5
1.2.1 Xử lý ảnh là gì? …………………………………………………….………...5
1.2.2 Các vấn đề cơ bản trong xử lý ảnh ……………...………………….………6
1.3 Thu nhận và biểu diễn ảnh …………………………...……………….………8
1.3.1 Thu nhận, các thiết bị thu nhận ảnh …...…………………………….…….8
1.3.2 Biểu diễn ảnh …...…………………………………………………….….…..9
1.4 Tổng quan về nhận dạng cơ thể con người……...……………………….….11
1.4.1 Đề xuất mô hình giải quyết ứng với từng khâu của bài toán nhận dạng cơ thể người. …………………………………………………………………………12
1.5 Kết luận chương…...…………………………………………………….…...13
CHƯƠNG 2: CÁC THUẬT TOÁN NHẬN DẠNG CƠ THỂ CON NGƯỜI...14
2.1 Giới thiệu chương ……...……………………………….……...………….....14
2.2 Phương pháp xác định cơ thể con người…………………………….….......14
2.2.1 Giới thiệu mạng nơron.................................................................................14
2.2.2 Giới thiệu về PCA……………………………...…………………….……..21
2.3 Nhận dạng cơ thể con người dùng thuật toán PCA………………….……..22
2.3.1 Một số khái niệm toán học……………………...………………….………22
2.3.2 Quá trình nhận dạng ....................................................................................26
CHƯƠNG3: DÒ TÌM VÀ XÁC ĐỊNH CƠ THỂ CON NGƯỜI TRONG ẢNH..........................................................................................................................30
3.1 Giới thiệu chương...………………………….………………….…………….30
3.2 Đề xuất phương pháp ………….……………………….......………………..30
3.2.1 Các phương pháp đã được thực hiện..........................................................30
3.2.2 Phương pháp đề xuất trong báo cáo…………………………….…………35
3.3 Kết luận chương ………………..……….………...………………………….39
CHƯƠNG 4: CHƯƠNG TRÌNH MÔ PHỎNG…………………………...……40
4.1. Giới thiệu chương …………………………………….……...………………40
4.2 Giới thiệu chung về phần mềm Matlab………………………...……………40
4.2.1 Khái niệm về Matlab……………………...………………………………...40
4.2.2 Hệ thống Matlab……………………...……………………………………..41
4.3 Xử lý ảnh với Matlab………………………...……………………………….42
4.3.1 Xử lý ảnh………………………...…………………………………………..42
4.3.2 Các giai đoạn xử lý ảnh………………………...…………………………..42
4.3.3 Các hàm xử lý ảnh cơ bản trong Matlab…………………...……………..44
4.4 Sơ đồ khối và Code chương trình………………….…...……………………52
4.4.1 Sơ đồ khối……….…………………………………………...……………...52
4.4.2 Code chương trình…….………………………………………...………….52
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI………………………….….63
TÀI LIỆU THAM KHẢO………………………………...……………………...64
MỞ ĐẦU
Trong nhiều năm qua có rất nhiều nghiên cứu về bài toán nhận dạng cơ thể con người từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một cơ thể con người nhìn thẳng vào thiết bị thu hình và cơ thể con người thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều cơ thể trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản cho đến môi trường xung quanh rất phức tạp nhằm đáp ứng nhu cầu của con người.
Mục tiêu của đề tài “Nhận Dạng Cơ Thể Con Người” là thực hiện chương trình tìm kiếm, phân biệt cơ thể con người trong một bức ảnh sử dụng thuật toán PCA.
Để tiện theo dõi tôi xin trình bày đề tài theo ba phần như sau:
- Phần đầu là giới thiệu về tổng quan của xử lý ảnh
- Phần tiếp theo là giới thiệu về thuật toán PCA là bài toán được sử dụng rất nhiều trong viễn thông. Và đề tài này sử dụng thuật toán PCA.
- Phần cuối cùng là giới thiệu giao diện chương trình và code matlab.
Do tài liệu tham khảo hạn chế, kinh nghiệm trong thực tiễn còn non kém, nên đề tài không tránh khỏi những thiếu sót. Rất mong được nhận những ý kiến đóng góp, giúp đỡ, quý báu của quý thầy cô cùng các bạn sinh viên.
CHƯƠNG 1: TỔNG QUAN VỀ XỬ LÝ ẢNH
1.1 Giới thiệu chương
Chương này trình bày tổng quan về xử lý ảnh, các khái niệm cơ bản, sơ đồ tổng quát của một hệ thống xử lý ảnh và các vấn đề cơ bản trong xử lý ảnh
1.2 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh
1.2.1 Xử lý ảnh là gì?
Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống. Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác người máy.
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.
Hình 1.1. Quá trình xử lý ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c1, c2,..., cn). Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều.
Sơ đồ tổng quát của một hệ thống xử lý ảnh:
Hình 1.2. Các bước cơ bản trong một hệ thống xử lý ảnh
1.2.2 Các vấn đề cơ bản trong xử lý ảnh
1.2.2.1 Một số khái niệm cơ bản
* Ảnh và điểm ảnh: Điểm ảnh được xem như là dấu hiệu hay cường độ sáng tại 1 toạ độ trong không gian của đối tượng và ảnh được xem như là 1 tập hợp các điểm ảnh.
* Mức xám, màu: Là số các giá trị có thể có của các điểm ảnh của ảnh
1.2.2.2 Chỉnh mức xám
Nhằm khắc phục tính không đồng đều của hệ thống gây ra. Thông thường có 2 hướng tiếp cận:
• Giảm số mức xám: Thực hiện bằng cách nhóm các mức xám gần nhau thành một bó. Trường hợp chỉ có 2 mức xám thì chính là chuyển về ảnh đen trắng. Ứng dụng: In ảnh màu ra máy in đen trắng.
• Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy. Kỹ thuật này nhằm tăng cường độ mịn cho ảnh
1.2.2.3 Trích chọn đặc điểm
Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh. Có thể nêu ra một số đặc điểm của ảnh sau đây:
- Đặc điểm không gian: Phân bố mức xám, phân bố xác suất, biên độ, điểm uốn v.v..
- Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc thực hiện lọc vùng (zonal filtering). Các bộ vùng được gọi là “mặt nạ đặc điểm” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn v.v..)
- Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng và do vậy rất hữu ích trong việc trích trọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng. Các đặc điểm này có thể được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) v.v.. Việt trích chọn hiệu quả các đặc điểm giúp cho việc nhận dạng các đối tượng ảnh chính xác, với tốc độ tính toán cao và dung lượng nhớ lưu trữ giảm xuống.
1.2.2.4 Nhận dạng
Nhận dạng tự động (automatic recognition), mô tả đối tượng, phân loại và phân nhóm các mẫu là những vấn đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau. Tuy nhiên, một câu hỏi đặt ra là: mẫu (pattern) là gì? Watanabe, một trong những người đi đầu trong lĩnh vực này đã định nghĩa: “Ngược lại với hỗn loạn (chaos), mẫu là một thực thể (entity), được xác định một cách ang áng (vaguely defined) và có thể gán cho nó một tên gọi nào đó”. Ví dụ mẫu có thể là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, cơ thể người hoặc một ký đồ tín hiệu tiếng nói. Khi biết một mẫu nào đó, để nhận dạng hoặc phân loại mẫu đó có thể:
- Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân biệt (discriminant analyis), trong đó mẫu đầu vào được định danh như một thành phần của một lớp đã xác định.
- Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong đó các mẫu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó. Các lớp này cho đến thời điểm phân loại vẫn chưa biết hay chưa được định danh.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:
1. Thu nhận dữ liệu và tiền xử lý.
2. Biểu diễn dữ liệu.
3. Nhận dạng, ra quyết định.
Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là:
1. Đối sánh mẫu dựa trên các đặc trưng được trích chọn.
2. Phân loại thống kê.
3. Đối sánh cấu trúc.
4. Phân loại dựa trên mạng nơ-ron nhân tạo.
Trong các ứng dụng rõ ràng là không thể chỉ dùng có một cách tiếp cận đơn lẻ để phân loại “tối ưu” do vậy cần sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau. Do vậy, các phương thức phân loại tổ hợp hay được sử dụng khi nhận dạng và nay đã có những kết quả có triển vọng dựa trên thiết kế các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp.
Việc giải quyết bài toán nhận dạng trong những ứng dụng mới, nảy sinh trong cuộc sống không chỉ tạo ra những thách thức về thuật giải, mà còn đặt ra những yêu cầu về tốc độ tính toán. Đặc điểm chung của tất cả những ứng dụng đó là những đặc điểm đặc trưng cần thiết thường là nhiều, không thể do chuyên gia đề xuất, mà phải được trích chọn dựa trên các thủ tục phân tích dữ liệu.
1.2.2.5 Nén ảnh
Nhằm giảm thiểu không gian lưu trữ. Thường được tiến hành theo cả hai cách khuynh hướng là nén có bảo toàn và không bảo toàn thông tin. Nén không bảo toàn thì thường có khả năng nén cao hơn nhưng khả năng phục hồi thì kém hơn. Trên cơ sở hai khuynh hướng, có 4 cách tiếp cận cơ bản trong nén ảnh:
• Nén ảnh thống kê: Kỹ thuật nén này dựa vào việc thống kê tần xuất xuất hiện của giá trị các điểm ảnh, trên cơ sở đó mà có chiến lược mã hóa thích hợp. Một ví dụ điển hình cho kỹ thuật mã hóa này là *.TIF
• Nén ảnh không gian: Kỹ thuật này dựa vào vị trí không gian của các điểm ảnh để tiến hành mã hóa. Kỹ thuật lợi dụng sự giống nhau của các điểm ảnh trong các vùng gần nhau. Ví dụ cho kỹ thuật này là mã nén *.PCX
• Nén ảnh sử dụng phép biến đổi: Đây là kỹ thuật tiếp cận theo hướng nén không bảo toàn và do vậy, kỹ thuật thướng nến hiệu quả hơn. *.JPG chính là tiếp cận theo kỹ thuật nén này.
• Nén ảnh Fractal: Sử dụng tính chất Fractal của các đối tượng ảnh, thể hiện sự lặp lại của các chi tiết. Kỹ thuật nén sẽ tính toán để chỉ cần lưu trữ phần gốc ảnh và quy luật sinh ra ảnh theo nguyên lý Fractal
1.3 Thu nhận và biểu diễn ảnh
1.3.1 Thu nhận, các thiết bị thu nhận ảnh
Các thiết bị thu nhận ảnh bao gồm camera, scanner các thiết bị thu nhận này có thể cho ảnh đen trắng Các thiết bị thu nhận ảnh có 2 loại chính ứng với 2 loại ảnh thông dụng Raster, Vector. Các thiết bị thu nhận ảnh thông thường Raster là camera các thiết bị thu nhận ảnh thông thường Vector là sensor hoặc bàn số hoá Digitalizer hoặc được chuyển đổi từ ảnh Raster.
Nhìn chung các hệ thống thu nhận ảnh thực hiện 1 quá trình:
• Cảm biến: biến đổi năng lượng quang học thành năng lượng điện
• Tổng hợp năng lượng điện thành ảnh
1.3.2 Biểu diễn ảnh
Ảnh trên máy tính là kết quả thu nhận theo các phương pháp số hoá được nhúng trong các thiết bị kỹ thuật khác nhau. Quá trình lưu trữ ảnh nhằm 2 mục đích:
• Tiết kiệm bộ nhớ
• Giảm thời gian xử lý
Việc lưu trữ thông tin trong bộ nhớ có ảnh hưởng rất lớn đến việc hiển thị, in ấn và xử lý ảnh được xem như là 1 tập hợp các điểm với cùng kích thước nếu sử dụng càng nhiều điểm ảnh thì bức ảnh càng đẹp, càng mịn và càng thể hiện rõ hơn chi tiết của ảnh người ta gọi đặc điểm này là độ phân giải. Việc lựa chọn độ phân giải thích hợp tuỳ thuộc vào nhu cầu sử dụng và đặc trưng của mỗi ảnh cụ thể, trên cơ sở đó các ảnh thường được biểu diễn theo 2 mô hình cơ bản
1.3.2.1 Mô hình Raster
Đây là cách biểu diễn ảnh thông dụng nhất hiện nay, ảnh được biểu diễn dưới dạng ma trận các điểm (điểm ảnh). Thường thu nhận qua các thiết bị như camera, scanner. Tuỳ theo yêu cầu thực thế mà mỗi điểm ảnh được biểu diễn qua 1 hay nhiều bít Mô hình Raster thuận lợi cho hiển thị và in ấn. Ngày nay công nghệ
phần cứng cung cấp những thiết bị thu nhận ảnh Raster phù hợp với tốc độ nhanh và chất lượng cao cho cả đầu vào và đầu ra. Một thuận lợi cho việc hiển thị trong môi trường Windows là Microsoft đưa ra khuôn dạng ảnh DIB (Device Independent Bitmap) làm trung gian. Hình 1.4 thể hình quy trình chung để hiển thị ảnh Raster thông qua DIB.
Một trong những hướng nghiên cứu cơ bản trên mô hình biểu diễn này là kỹ thuật nén ảnh các kỹ thuật nén ảnh lại chia ra theo 2 khuynh hướng là nén bảo toàn và không bảo toàn thông tin nén bảo toàn có khả năng phục hồi hoàn toàn dữ liệu ban đầu còn nếu không bảo toàn chỉ có khả năng phục hồi độ sai số cho phép nào đó. Theo cách tiếp cận này người ta đã đề ra nhiều quy cách khác nhau như BMP, TIF, GIF, PCX…
Hiện nay trên thế giới có trên 50 khuôn dạng ảnh thông dụng bao gồm cả trong đó các kỹ thuật nén có khả năng phục hồi dữ liệu 100% và nén có khả năng phục hồi với độ sai số nhận được.
Hình 1.3. Quá trình hiển thị và chỉnh sửa, lưu trữ ảnh thông qua DIB
1.3.2.2 Mô hình Vector
Biểu diễn ảnh ngoài mục đích tiết kiệm không gian lưu trữ dễ dàng cho hiển thị và in ấn còn đảm bảo dễ dàng trong lựa chọn sao chép di chuyển tìm kiếm… Theo những yêu cầu này kỹ thuật biểu diễn vector tỏ ra ưu việt hơn.
Trong mô hình vector người ta sử dụng hướng giữa các vector của điểm ảnh lân cận để mã hoá và tái tạo hình ảnh ban đầu ảnh vector được thu nhận trực tiếp từ các thiết bị số hoá như Digital hoặc được chuyển đổi từ ảnh Raster thông qua các chương trình số hoá.
Công nghệ phần cứng cung cấp những thiết bị xử lý với tốc độ nhanh và chất lượng cho cả đầu vào và ra nhưng lại chỉ hỗ trợ cho ảnh Raster. Do vậy, những nghiên cứu về biểu diễn vectơ đều tập trung từ chuyển đổi từ ảnh Raster.
Hình 1.4. Sự chuyển đổi giữa các mô hình biểu diễn ảnh
1.4 Tổng quan về nhận dạng cơ thể con người
Có nhiều nghiên cứu tìm phương pháp xác định cơ thể con người, từ ảnh xám đến ngày nay là ảnh màu. Ta sẽ trình bày một cách tổng quát nhất những hướng giải quyết chính cho bài toán.
Dựa vào tính chất của các phương pháp xác định cơ thể con người trên ảnh. Các phương pháp này được chia làm bốn hướng tiếp cận chính. Ngoài bốn hướng này, nhiều nghiên cứu có khi liên quan đến không những một hướng tiếp cận mà có liên quan nhiều hơn một hướng chính:
- Hướng tiếp cận dựa trên tri thức: Mã hóa các hiểu biết của con người về cơ thể con người thành các luật. Thông thường các luật mô tả quan hệ của các đặc trưng cơ thể con người so với cơ thể các loài động vật khác.
- Hướng tiếp cận dựa trên đặc trưng không thay đổi: Mục tiêu các thuật toán đi tìm các đặc trưng mô tả cấu trúc cơ thể con người mà các đặc trưng này sẽ không thay đổi khi tư thế hoạt động của cơ thể con người, vị trí đặt thiết bị thu hình hoặc điều kiện ánh sáng thay đổi.
- Hướng tiếp cận dựa trên so khớp mẫu: Dùng các mẫu chuẩn của cơ thể con người (các mẫu này được chọn lựa và lưu trữ) để mô tả cho cơ thể con người hay các đặc trưng cơ thể (các mẫu này phải chọn làm sao cho tách biệt nhau theo tiêu chuẩn mà các tác giả định ra để so sánh). Các mối tương quan giữa dữ liệu ảnh đưa vào và các mẫu dùng để xác định cơ thể con người.
- Hướng tiếp cận dựa trên diện mạo: Trái ngược hẳn với so khớp mẫu, các mô hình (hay các mẫu) được học từ một tập ảnh huấn luyện trước đó. Sau đó hệ thống (mô hình) sẽ xác định cơ thể con người. Hay một số tác giả còn gọi hướng tiếp cận này là hướng tiếp cận theo phương pháp học.
1.4.1 Đề xuất mô hình giải quyết ứng với từng khâu của bài toán nhận dạng cơ thể người.
Mô hình tổng quát của bài toán nhận dạng cơ thể người:
Hình 1.5. Mô hình tổng quát của bài toán nhận dạng cơ thể người
Bài toán nhận dạng cơ thể con người cần xác định bốn vấn đề chính:
+ Dùng phương pháp nào để xác định cơ thể con người nằm tại vị trí nào trong ảnh
+ Dùng đặc trưng nào trên cơ thể con người để rút trích đặc trưng cho cơ thể: chân, tay, đầu, mình,.. hay kết hợp tất cả các đặc trưng trên.
+ Áp dụng phương pháp nào để rút trích đặc trưng.
+ Dùng phương pháp nào để huấn luyện cho máy nhận dạng khi đã có tập đặc trưng của cơ thể.
1.5 Kết luận chương
Chương một đã chỉ ra những khó khăn đề ra trong việc nhận dạng cơ thể con người. Đó là những biến đổi quá lớn của cơ thể con người trong bức ảnh cần nhận dạng. Gồm trạng thái cơ thể như đứng, ngồi, ánh sáng, vị trí của camera quan sát (bên trái , phải, trên xuống, dưới lên). Giới hạn về số ảnh cần thiết cho việc huấn luyện, tập các ảnh cơ thể huấn luyện không thể bao quát được tất cả các biến đổi có thể có trên cơ thể của một bức ảnh cần nhận dạng trong thế giới thực. Giúp ta có cái nhìn tổng quan hơn về mặt hạn chế và hướng khắc phục cho bài toán nhận dạng.
CHƯƠNG 4: CHƯƠNG TRÌNH MÔ PHỎNG
4.1 Giới thiệu chương
Chương này sẽ giúp chúng ta thấy được mối quan hệ giữa Matlab – Xử lý ảnh. Tìm hiểu về Matlab và cách sử dụng các hàm trong hệ thống Matlab cho viêc Xử lý ảnh – Nhận Dạng Cơ Thể Người
4.2 Giới thiệu chung về phần mềm Matlab
4.2.1 Khái niệm về Matlab
Matlab là một ngôn ngữ lập trình thực hành bậc cao được sử dụng để giải các bài toán về kỹ thuật. Matlab tích hợp được việc tính toán, thể hiện kết quả, cho phép lập trình, giao diện làm việc rất dễ dàng cho người sử dụng. Dữ liệu cùng với thư viện được lập trình sẵn cho phép người sử dụng có thể có được những ứng dụng sau đây.
Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường.
- Cho phép lập trình tạo ra những ứng dụng mới.
- Cho phép mô phỏng các mô hình thực tế.
- Phân tích, khảo sát và hiển thị dữ liệu.
- Với phần mềm đồ hoạ cực mạnh.
- Cho phép phát triển, giao tiếp với một số phần mềm khác như C++, Fortran
Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (mảng này không đòi hỏi về kích thước). Chúng cho phép giải quyết các vấn đề liên quan đến lập trình bằng máy tính, đặc biệt sử dụng các phép tính về ma trận hay vectơ và có thể sử dụng ngôn ngữ C học Fortran lập trình rồi thực hiện ứng dụng lập trình đó bằng các câu lệnh gọi từ Matlab. Matlab được viết tắt từ chữ “MATrix LABoratory” tức là thư viện về ma trận, từ đó phần mềm Matlab được viết nhằm cung cấp cho việc truy cập vào phần mềm ma trận một cách dễ dàng, phần mềm ma trận này được phát triển bởi các công trình Linpack và Eispack. Ngày nay Matlab được phát triển bởi Lapack và Artpack tạo nên một nghệ thuật phần mềm cho ma trận.
Toolbox là một công cụ quan trọng trong Matlab. Công cụ này được Matlab cung cấp cho phép bạn ứng dụng các kỹ thuật để phân tích, thiết kế, mô phỏng các mô hình. Ta có thể tìm thấy toolbox ở trong mô trường làm việc của.
- Mạng nơron.
- Logic mờ.
- Simulink.
4.2.2 Hệ thống Matlab
Hệ thống giao diện của Matlab được chia thành 5 phần:
- Môi trường phát triển.Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh và các file, ta có thể liệt kê một số như sau.
+ Desktop.
+ Command Window.
+ Command History.
+ Browsers for viewinghelp.
- Thư viện, các hàm toán học bao gồm các cấu trúc như tính tổng, sin cosin atan, atan2 etc..., các phép tính đơn giản đến các phép tính phức tạp như tính ma trận nghich đảo, trị riêng, chuyển đổi fourier, laplace, symbolic library.
- Ngôn ngữ Matlab. Đó là các ngôn ngữ cao về ma trận và mảng, với các dòng lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.
- Đồ hoạ trong Matlab. Bao gồm các câu lệnh thể hiện đồ họa trong môi trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tương tác giữa người sử dụng và máy tính.
- Giao tiếp với các ngôn ngữ khác. Matlab cho phép tương tác với các ngôn ngữ khác như C, Fortran …
4.3 Xử lý ảnh với Matlab
4.3.1 Xử lý ảnh
Các bước cần thiết trong xử lý ảnh. Đầu tiên, ả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. Hình dưới đây mô tả các bước cơ bản trong xử lý ảnh.
Hình 4.1. Các bước cơ bản trong xử lý ảnh
4.3.2 Các giai đoạn xử lý ảnh
4.3.2.1 Thu nhận ảnh (Image Acquisition)
- Ảnh được thu từ nhiều nguồn khác nhau:máy ảnh, máy quay phim, máy quét, ảnh vệ tinh…
- Mục đích: biến đổi thông tin hình ảnh về các cấu trúc được lưu trữ trong máy tính, có thể hiển thị ra các thiết bị ngoại vi như là máy in, màn hình…
- Gồm hai tiến trình:
+ Biến đổi năng lượng quang học thành năng lượng điện.
+ Tổng hợp năng lượng điện thành ảnh hoặc ma trận số.
4.3.2.2 Tiền xử lý (Image Processing)
- Là quá trình sử dụng các kỹ thuật xử lý ảnh để làm ảnh tốt lên theo mục đích sử dụng.
- Mục đích:
+ Điều chỉnh độ chiếu sáng để khắc phục hậu quả của việc chiếu sáng không đều.
+ Giảm nhỏ thành phần nhiễu của ảnh tức là các đối tượng xuất hiện ngoài ý muốn.
+ Hiệu chỉnh giá trị độ sáng giữa nền và đối tượng.
+ Chuẩn hoá độ lớn, màu, dạng của ảnh.
+Điều chỉnh bộ lọc để khuyếch đại và nén các tần số.
4.3.2.3 Phân đoạn (Segmentation)
- Là quá trình phân chia nội dung các đối tượng cần khảo sát ra khỏi ảnh.
- Phân chia các đối tượng tiếp giáp nhau.
- Phân tách các đối tượng riêng biệt thành các đối tượng con.
4.3.2.4 Biểu diễn ảnh (Image Representation)
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lận cận. Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính. Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được.
Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác.
4.3.2.5 Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thường thu được bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước. Nội suy là phán đoán theo ý nghĩa trên cơ sở nhận dạng.
Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội suy thành mã điện thoại. Có nhiều cách phân loai ảnh khác nhau về ảnh. Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
- Nhận dạng theo tham số.
- Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng cơ thể người…
4.3.2.6 Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh theo cách của con người. Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người. Vì vậy, ở đây các cơ sở tri thức được phát huy.
4.3.3 Các hàm xử lý ảnh cơ bản trong Matlab
4.3.3.1. Đọc và ghi dữ liệu ảnh
- Đọc một ảnh đồ hoạ
- Hàm imread đọc một ảnh từ bất kì định dạng nào được trợ giúp trong bất kì chiều sâu bit nào được trợ giúp. Hầu hết các file ảnh sử dụng 8 bit để chứa giá trị của pixel. Khi chúng được đọc vào bộ nhớ, Matlab chứa chúng dưới dạng uint8. Với các file trợ giúp 16 bít dữ liệu, PNG và TIFF, Matlab chứa chúng dưới dạng uint16. Chú ý: Với ảnh chỉ số, imread luôn luôn đọc bản đồ màu vào trong một chuỗi thuộc lớp double, thậm chí mảng ảnh tự nó thuộc lớp uint8 hay uint16
- Chẳng hạn, đoạn mã sau sẽ đọc một ảnh RGB vào không gian làm việc của Matlab lưu trong biến RGB.
RGB=imread(‘football.jpg’);
Trong ví dụ này, imread sẽ nhận ra định dạng file để sử dụng từ tên file. Ta cũng có thể chỉ ra định dạng file như một tham số trong hàm imread. Matlab trợ giúp rất nhiều định dạng đồ hoạ thông dụng chẳng hạn: BMP, GIF, JPEG, PNG, TIFF … Để biết thêm các kiểu gọi hàm và tham số truyền vào, xem trợ giúp online của Matlab.
- Đọc nhiều ảnh từ một file đồ hoạ
- Matlab trợ giúp một số định dạng file đồ hoạ chẳng hạn như: HDF và TIFF, chúng chứa nhiều ảnh. Theo mặc định, imread chỉ trợ giúp ảnh đầu tiên trong file. Để nhập thêm các ảnh từ file, sử dụng cú pháp được trợ giúp bởi định dạng file. Chẳng hạn, khi được sử dụng với TIFF, ta có thể sử dụng một giá trị chỉ số với imread để chỉ ra ảnh mà ta muốn nhập vào.
Ví dụ sau đây đọc một chuỗi 27 ảnh từ một file TIFF và lưu những ảnh này trong một mảng 4 chiều. Ta có thể sử dụng hàm iminfo để xem bao nhiêu ảnh đã được lưu trữ trong file:
mri = uint8(zeros(128,128,1,27)); % preallocate 4-D array
for frame=1:27
[mri(:,:,:,frame),map] = imread('mri.tif',frame);
End
- Khi file chứa nhiều ảnh theo một số kiểu nhất định chẳng hạn theo thứ tự thời gian, ta có thể lưu ảnh trong Matlab dưới dạng mảng 4 chiều. Tất cả các ảnh phải có cùng kích thước.
- Ghi một ảnh đồ hoạ
- Hàm imwrite sẽ ghi một ảnh tới một file đồ hoạ dưới một trong các định dạng được trợ giúp. Cấu trúc cơ bản nhất của imwrite sẽ yêu cầu một biến ảnh và tên file. Nếu ta gộp một phần mở rộng trong tên file, Matlab sẽ nhận ra định dạng mong muốn từ nó.
Ví dụ sau tải một ảnh chỉ số X từ một file Map với bản đồ màu kết hợp với nó map sau đó ghi ảnh xuống một file bitmap.
load clown
whos
Name Size Bytes Class
X 200x320 512000 double array
caption 2x1 4 char array
map 81x3 1944 double array
Grand total is 64245 elements using 513948 bytes
imwrite(X,map,'clown.bmp')
- Chỉ ra định dạng phụ - Tham số đặc biệt
- Khi sử dụng imwrite với một số định dạng đồ hoạ, ta có thể chỉ ra các tham số phụ. Chẳng hạn, với định dạng PNG ta có thể chỉ ra độ sâu bit như một tham số phụ. Ví dụ sau sẽ chi một ảnh cường độ I với một file ảnh 4 bit PNG.
imwrite(I,'clown.png','BitDepth',4 );
- Để biết thêm các cấu trúc khác của hàm xem phần trợ giúp trực tuyến của Matlab.
- Đọc và ghi ảnh nhị phân theo định dạng 1 bit
- Trong một số định dạng file, một ảnh nhị phân có thể được lưu trong một định dạng 1 bit. Nếu định dạng file trợ giúp nó, Matlab ghi ảnh nhị phân như ảnh 1 bit theo mặc định. Khi ta đọc một ảnh nhị phân với định dạng 1 bit, Matlab đại diện nó trong không gian làm việc như một mảng lôgic.
- Ví dụ sau đọc một ảnh nhị phân và ghi nó dưới dạng file TIFF. Bởi vì định dạng TIFF trợ giúp ảnh 1 bit, file được ghi lên đĩa theo định dạng 1 bit:
BW = imread('text.png');
imwrite(BW,'test.tif');
Để kiểm tra chiều sâu bit của file test.tif, gọi hàm iminfo và kiểm tra trường BitDepth của nó:
info = imfinfo('test.tif');info.BitDepth
ans =1
Chú ý: Khi ghi file nhị phân, Matlab thiết lập trường ColorType thành ‘grayscale’.
- Xem lớp lưu trữ của file
- Hàm imwrite sử dụng luật sau đây để quyết định lớp lưu trữ được sử dụng trong ảnh kết quả:
+ logical: Nếu định dạng ảnh ra (Output Image) được chỉ rõ là trợ giúp ảnh 1 bit, hàm imwrite tạo một file ảnh 1 bit. Nếu định dạng ảnh ra được chỉ rõ là không trợ giúp ảnh 1 bit (như JPEG), hàm imwrite chuyển ảnh tới một ảnh thuộc lớp uint8.
+ uint8: Nếu định dạng ảnh ra được chỉ rõ là trợ giúp ảnh 8 bit, hàm imwrite tạo một ảnh 8 bit
+ uint16: Nếu định dạng ảnh ra được chỉ rõ trợ giúp ảnh 16 bit (PNG hoặc TIFF), hàm imwrite tạo một ảnh 16 bit. Nếu định dạng ảnh ra không trợ giúp ảnh 16 bit, hàm chuyển đổi dữ liệu ảnh tới lớp uint8 và tạo một ảnh 8 bit.
+ double: Matlab chuyển dữ liệu ảnh tới dạng uint8 và tạo một ảnh 8 bit bởi vì hầu hết các file ảnh sử dụng định dạng 8 bit.
- Truy vấn một file đồ hoạ
- Hàm imfinfo cho phép ta có thể nhận được thông tin về một file ảnh được trợ giúp bởi toolbox.
Cú pháp: imfinfo(filename,fmt)
Các thông tin được cung cấp bởi hàm imfinfo là: filename, filemodedate, filesize, format, formatversion, width, height, bitdepth, colortype … Thông tin mà ta nhận được phụ thuộc vào kiểu của file nhưng nó luôn bao gồm những thông tin sau:
- Tên của file ảnh.
- Định dạng file ảnh.
- Số version của định dạng file.
- Ngày sửa đổi file gần nhất.
- Kích thước file tính theo byte.
- Chiều rộng ảnh tính theo pixel.
- Chiều cao ảnh tính theo pixel.
- Số lượng bít trên một pixel.
- Kiểu ảnh: RGB, chỉ số …
4.3.3.2 Hiển thị ảnh
- Dùng hàm imview
- Để hiển thị một ảnh sử dụng hàm imview, dùng hàm imview, chỉ rõ ảnh mà ta muốn hiển thị. Ta có thể sử dụng imview để hiển thị một ảnh mà đã được nhập vào trong không gian làm việc của Matlab.
moonfig = imread('moon.tif');
imview(moonfig);
Ta cũng có thể chỉ định tên của file ảnh như trong ví dụ sau:
imview('moon.tif');
- File ảnh phải có mặt trong thư mục hiện tại hoặc trong đường dẫn của Matlab. Cấu trúc này có thể hữu ích cho việc quét qua nhiều ảnh. Tuy nhiên, lưu ý, khi sử dụng cấu trúc này, dữ liệu ảnh không được lưu trong không gian làm việc của Matlab.
- Nếu ta gọi hàm imview mà không chỉ ra mất kì tham số nào, nó sẽ hiển thị một hộp chọn file cho phép ta chỉ ra tên file muốn hiển thị.
- Xem nhiều ảnh
- Nếu ta chỉ ra một file mà chứa nhiều ảnh, hàm imview chỉ hiển thị ảnh đầu tiên trong file đó. Để xem tất cả các ảnh trong file, sử dụng hàm imread để nhập mỗi ảnh vào trong không gian làm việc của Matlab sau đó gọi hàm imview nhiều lần để hiển thị mỗi ảnh riêng biệt.
- Dùng hàm imshow
- Để xem ảnh, ta có thể sử dụng hàm imshow thay cho imview. Ta sử dụng imshow để hiển thị một ảnh đã được nhập vào trong không gian làm việc như ví dụ sau:
moon = imread('moon.tif');
imshow(moon);
Ta cũng có thể chỉ ra tên của file ảnh như một tham số truyền vào cho hàm như ví dụ sau: imshow('moon.tif');
Khi sử dụng cấu trúc này thì dữ liệu ảnh không được nhập vào trong không gian làm việc. Tuy nhiên, ta có thể mang ảnh vào trong không gian làm việc bằng cách sử dụng hàm getimage. Hàm này sẽ nhận dữ liệu ảnh từ handle của một đối tượng ảnh hiện tại. Chẳng hạn: moon = getimage; Sẽ gán dữ liệu ảnh từ moon.tif vào biến moon.
4.3.3.3 Các hàm chuyển đổi kiểu ảnh
- Với các thao tác nhất định sẽ thật hữu ích khi có thể chuyển đổi ảnh từ dạng này sang dạng khác. Chẳng hạn, nếu ta muốn lọc một màu ảnh được lưu trữ dưới dạng ảnh chỉ số đầu tiên ta nên chuyển đổi nó thành dạng ảnh RGB.
Khi ta áp dụng phép lọc tới ảnh RGB, Matlab sẽ lọc giá trị cường độ trong ảnh tương ứng. Nếu ta cố gắng lọc ảnh chỉ số, Matlab đơn giản chỉ áp đặt phép lọc tới ma trận ảnh chỉ số và kết quả sẽ không có ý nghĩa.
Chú ý: Khi chuyển đổi một ảnh từ dạng này sang dạng khác, ảnh kết quả có thể khác ảnh ban đầu. Chẳng hạn, nếu ta chuyển đổi một ảnh màu chỉ số sang một ảnh cường độ, kết quả ta sẽ thu được một ảnh đen trắng.
- Danh sách sau đây sẽ liệt kê các hàm được sử dụng trong việc chuyển đổi kiểu ảnh:
- dither: Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng cách trộn, tạo một ảnh chỉ số từ một ảnh RGB bằng cách trộn (dither).
- gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng.
- grayslice: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng bằng cách đặt ngưỡng.
- im2bw: Tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số hay ảnh RGB trên cơ sở của ngưỡng ánh sáng.
- ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.
- ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số.
- mat2gray: Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma trận bằng cách lấy tỉ lệ giữ liệu.
- rgb2gray: Tạo một ảnh cường độ đen trắng từ một ảnh RGB.
- rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.
- Ta cũng có thể thực hiện các phép chuyển đổi kiểu chỉ sử dụng cú pháp của Matlab. Chẳng hạn, ta có thể chuyển đổi một ảnh cường độ sang ảnh RGB bằng cách ghép nối 3 phần copy của ma trận ảnh gốc giữa 3 chiều:
RGB=cat(3,I,I,I );
- Ảnh RGB thu được có các ma trận đồng nhất cho các mặt phẳng R, G, B vì vậy ảnh hiển thị giống như bóng xám.
- Thêm vào những công cụ chuyển đổi chuẩn đã nói ở trên, cũng có một số hàm mà trả lại kiểu ảnh khác như một phần trong thao tác mà chúng thực hiện.
- Chuyển đổi không gian màu
- ...................................
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Nội dung đồ án giúp ta hiểu được phép phân tích thành phần chính PCA (Principal Componens Analysis) là một kỹ thuật hữu ích trong các ứng dụng nhận dạng cơ thể và nén ảnh, và là một kỹ thuật phổ biến để tìm mẫu trong các dữ liệu nhiều chiều. Chất lượng và độ chính xác khi xử lý ảnh dùng phương pháp PCA đạt rất cao. Tuy nhiên chúng ta cũng tìm ra được những khuyết điểm của PCA là sự phụ thuộc thống kê bậc cao vẫn còn tồn tại trong phép phân tích PCA. Phát triển phương pháp PCA có ý nghĩa quan trọng đối với xử lý ảnh.
Hướng phát triển tiếp theo của đồ án là cung cấp một mô hình xác suất tốt hơn của dữ liệu, tìm một cơ sở không cần thiết trực giao mà có thể xây dựng lại dữ liệu tốt hơn PCA. Để từ đó ta có một phương pháp xử lý ảnh tốt nhất
Nội dung đồ án cũng đã trình bày những vấn đề về hệ thống mô phỏng Matlab và cách sử dụng các hàm trong hệ thống Matlab cho viêc Xử lý ảnh – Nhận Dạng Cơ Thể Người. Lưu đồ thuật toán và chương trình mô phỏng ở chương 4 đã phần nào chứng minh cho kết luận ở các chương trước đó.
Do thời gian để thực hiện đề tài này có hạn, khả năng dịch và hiểu tài liệu tiếng anh chưa tốt nên nội dung đồ án này chưa đề cập được sâu, rộng một số vấn đề liên quan đến phương pháp PCA và các phương pháp xác định cơ thể người khác. Một số phần trình bày chưa được rõ ràng, hợp lý có thể khiến người đọc khó hiểu. Rất mong được nhận những ý kiến đóng góp, giúp đỡ, quý báu của quý thầy cô cùng các bạn sinh viên.
TÀI LIỆU THAM KHẢO
- Phạm Thế Bảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn, Phan Phú Doãn (2007): Tổng quan các phương pháp xác định khuôn mặt người.
- Phạm Thế Bảo: Phân tích đa chiều- phân tích thành phần chính PCA – ĐHQG TPHCM
- Nguyễn Đình Thúc (2000): Trí tuệ nhân tạo, mạng NơRon phương pháp và ứng dụng - NXB Giáo Dục 2000.
- Phạm Hồng Liên: MATLAB và ứng dụng trong viễn thông - NXB ĐH QG TPHCM