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

Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440

80 403 1

Đ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 80
Dung lượng 3,52 MB

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

Nội dung

Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440

Trang 1

Cuối cùng nhóm thực hiện đề tài xin chân thành cảm ơn sự đóng góp ý kiến của các bạn sinh viên

Sinh viên thực hiện

Nguyễn Hữu Trung Nguyễn Huy Minh

Trang 2

MỤC LỤC

LỜI CẢM ƠN i

MỤC LỤC ii

LIỆT KÊ HÌNH v

LIỆT KÊ BẢNG viii

LIỆT KÊ TỪ VIẾT TẮT ix

TÓM TẮT xii

ABSTRACT xiii

CHƯƠNG 1: GIỚI THIỆU 1

1.1 Vai trò và ứng dụng của công nghệ hiện nay 1

1.2 Lý do chọn đề tài 1

1.3 Mục tiêu đề tài 2

1.4 Giới hạn đề tài 2

1.5.Bố cục của đồ án 2

CHƯƠNG 2:CƠ SỞ LÝ THUYẾT 3

2.1 Giới thiệu về hệ thống xử lí ảnh 3

2.1.1 Phần thu nhận ảnh (Image Acquisition) 4

2.1.2.Tiền xử lý (Image Processing) 4

2.1.3 Phân đoạn (Segmentation) hay phân vùng ảnh 4

2.1.4.Biểu diễn ảnh (Image Representation) 4

2.1.5 Nhận dạng và nội suy ảnh (Image Recognition and Interpretation) 5

2.1.6 Cơ sở tri thức (Knowledge Base) 5

2.2 Những vấn đề cơ bản trong hệ thố ng xử lí ảnh 5

2.2.1 Điểm ảnh (Picture Element) 5

2.2.2 Độ phân giải của ảnh 6

2.2.3 Mức xám c ủa ảnh 6

2.2.4 Khử nhiễu 6

2.2.5 Chỉnh mức xám 7

2.2.6 Nhận dạng ảnh 7

2.3 Các hình thái c ủa ảnh 8

Trang 3

2.3.1 Chuyển ảnh màu thành ảnh xám 8

2.3.2 Lược đồ xám của ảnh (Histogram) 9

2.3.3 Không gian màu 10

2.4 Tổng quan về hệ thống nhúng 14

2.4.1 Lịch sử phát triển của hệ thống nhúng 14

2.4.2 Khái niệm hệ thống nhúng 15

2.4.3 Đặc trưng của hệ thống nhúng 16

2.4.4 Hệ điều hành thời gian thực (RTOS) và kernel thời gian thực 18

2.4.5 Chương trình, tác vụ và luồng 19

2.4.6 Kiến trúc hệ thống thời gian thực 20

2.4.7 Các thành phần của hệ điều hành Embedded Linux 21

2.4.8 Các bước xây dựng một hệ thống Embedded Linux 25

2.5 Giới thiệu về KIT Mini2440 27

CHƯƠNG 3: KỸ THUẬT PHÂN TÁCH MÀU DA 36

3.1 Kỹ thuật phân tách vùng màu da 36

3.2 Thuật toán phân tách vùng màu da 37

3.3 Kĩ thuật phân tách vùng màu da PEER ET AL, 2003 39

3.4 Kĩ thuật phân tách vùng màu da TAREK M.MAHMOUD, 2008 39

CHƯƠNG 4: BIÊN DỊCH ỨNG DỤNG TRÊN BOARD NHÚNG MINI2440 41

4.1 Cài đặt trình biên dịch chéo AMR-LINUX-GCC trên Host 41

4.2 Cài đặt thư viện Tslib trên Host 42

4.3 Cài đặt thư viện QtEveryWhere trên Host 45

4.4 Cài đặt thư viện OpenCV cho Host 49

4.5 Cài đặt hệ điều hành Linux cho Target 52

4.6 Cấu hình TouchScreen cho Target 52

4.7 Cài đặt thư viện OpenCV cho Target 54

CHƯƠNG 5: KẾT QUẢ THỰC HIỆN 56

5.1 Kết quả thực hiện phần mềm Matlab 56

5.1.1 Lưu đồ giải thuật trên Matlab 56

5.1.2 Giới thiệu chương trình mô phỏng Matlab 57

5.2 Kết quả thực hiện phần cứng 62

5.2.1 Lưu đồ giải thuật trên Qt 62

Trang 4

5.2.2 Cài đặt được hệ điều hành lên kit mini2440 63

5.2.3 Xây dựng được hệ thống nhận dạng màu da dựa trên hệ thống nhúng trên kit mini2440 64

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66

6.1 Kết quả đạt được 66

6.2 Hạn chế của đề tài 66

6.3 Hướng phát triển đề tài 66

Tài liệu tham khảo 67

Trang 5

LIỆT KÊ HÌNH

Hình 2.1: Các bước cơ bản trong xử lý ảnh 3

Hình 2.2 Ảnh RGB 8

Hình 2.3: Lược đồ histogram 9

Hình 2.4: Các màu cơ sở 10

Hình 2.5: Không gian màu RGB 11

Hình 2.6: Không gian màu YCrCb 12

Hình 2.7: Không gian màu HSV 13

Hình 2.8: Tổng quan hệ thống nhúng 16

Hình 2.9: Hệ thống thời gian thực 19

Hình 2.10: Tác vụ và luồng 19

Hình 2.11 : Kiến trúc điều khiển theo vòng lặp Polling 20

Hình 2.12: Kiến trúc điều khiển theo mô hình sắp xếp mức độ ưu tiên 21

Hình 2.13: Kiến trúc hệ điều hành Linux 22

Hình 2.14 : Cấu trúc kit phát triển nhúng mini2440 28

Hình 2.15 : Bộ nhớ ngoài 30

Hình 2.16 : Bộ nhớ Flash 31

Hình 2.17 : Khối nguồn 31

Hình 2.18 : Khối Reset 32

Hình 2.19 : Khối Nút nhấn 32

Hình 2.20 : Khối Analog 33

Hình 2.21 : Khối Speaker 33

Hình 2.22 : Khối Serial Port 33

Hình 2.23 : Khối USB 34

Hình 2.24 : Khối LCD 34

Hình 2.25 : Khối EEPROM 34

Hình 2.26 : Khối Network Interface 35

Hình 3.1 : Mật độ các màu da người trên thế giới 37

Hình 3.2: Mô hình màu da trong không gian YCrCb 38

Hình 3.3: Phân tách màu da từ 1 ảnh màu 39

Hình 4.1: Nội dung file bashrc 41

Hình 4.2: Arm-linux-gcc được cài đặt thành công 41

Trang 6

Hình 4.3: Cài đ ặt tiện ích autoconf 42

Hình 4.4: Cài đ ặt tiện ích libtool 42

Hình 4.5: Tải gói cài đ ặt Tslib 42

Hình 4.6: Quá trình chuẩn bị file cần thiết để cài đặt 43

Hình 4.7: Quá trình kiểm tra các điều kiện của hệ thống cần cho việc cài đặt 43

Hình 4.8: Biên dịch thư viện Tslib 44

Hình 4.9: Cài đ ặt thư viện Tslib 44

Hình 4.10 : Quá trình cài đặt thư viện Tslib thành công 45

Hình 4.11: Nội dung file g++.conf 46

Hình 4.12: Nội dung file qmake.conf 46

Hình 4.13: Quá trình kiểm tra các điều kiện của hệ thống c ần cho việc cài đặt 48

Hình 4.14: Quá trình cài đặt QtEveryWhere thành công 48

Hình 4.15: Quá trình cài đặt các gói thư viện cần thiết 49

Hình 4.16: Kiểm tra sự hoạt động các định dạng ảnh cho Host 49

Hình 4.17: Quá trình cài đ ặt OpenCV thành công 50

Hình 4.18: Nội dung file opencv.conf 50

Hình 4.19: Nội dung file bash.bashrc 51

Hình 4.20: Kết quả test ho ạt động của thư viện OpenCV trên Host 51

Hình 4.21: Quá trình cài đ ặt hệ điều hành Target 52

Hình 4.22: Quá trình truyền tải file từ Host xuống Target 52

Hình 4.23 : Đăng nhập vào Target thông qua giao thức FTP 53

Hình 4.24 : Các thư mục bên trong Board mini2440 53

Hình 4.25: Nội dung file profile 54

Hình 4.26: Kiểm tra sự hoạt động các định dạng ảnh cho Target 55

Hình 4.27: Download thư viện OpenCV xuống Target 55

Hình 5.1: Lưu đồ giải thuật trên Matlab 56

Hình 5.2: Giao diện giới thiệu 57

Hình 5.3: Giao diện chính 58

Hình 5.4: Giao diện chọn ảnh 59

Hình 5.5: Kết quả sau khi nhận dạng ảnh tĩnh 60

Hình 5.6: Kết quả sau khi nhận dạng bằng camera 61

Hình 5.7: Lưu đồ giải thuật trên Qt 62

Trang 7

Hình 5.8: Các thư mục hệ thống sau khi đã cài đ ặt xuống kit 63 Hình 5.9: Giao diện phần cứng 64 Hình 5.10: Kết quả thực hiện 65

Trang 8

LIỆT KÊ BẢNG

Bảng 2.1 : Cấu hình kỹ thuật kit mini2440 29 Bảng 2.2 : Các cổng kết nối điều khiển Leds 32

Trang 9

LIỆT KÊ TỪ VIẾT TẮT

A

ARM Acorn RISC Machine Cấu trúc vi xử lý 32 bit kiểu RISC

AIN0 ADC Input Ngõ vào bộ chuyển đổi số tương tự

international radio tuyến điện

Trang 10

HDD Hard Disk Drive Ổ cứng máy tính

I

I/O Input/Output Ngõ vào/ra trong hệ thống

L

LCD Liquid Crystal Display Màn hình tinh thể lỏng

LAN Local Area Network Mạng máy tính cục bộ

RTOS Real-time operating system Hệ điều hành thời gian thực

RS232 Recommended Standard 232 Chuẩn truyền thông nối tiếp

RAM Random Access Memory Bộ nhớ truy xuất ngẫu nhiên

S

SoC System On Chip Hệ thống được tích hợp trên một vi

mạch

Trang 11

SDRAM Synchronous Dynamic RAM đồng bộ

Random Access Memory

U

USB Universal Serial Bus Một chuẩn kết nối tuần tự đa dụng UART Universal Asynchronous Truyền thông nối tiếp bất đồng bộ Receiver/Transmitte

Trang 12

TÓM TẮT

Nhận dạng ảnh là một đề tài được nhiều người nghiên cứu Các nghiên cứu

đi từ bài toán đơn giản, từ việc nhận dạng màu da người trong ảnh đen trắng cho đến mở rộng cho ảnh màu Đến nay các bài toán xác định màu da nhằm tách màu da

ra khỏi ảnh nền, đã mở rộng với nhiều nghiên cứu như nhận dạng khuôn mặt, theo dõi mặt người hay nhận dạng cảm xúc mặt người, nhận dạng bàn tay…

Có rất nhiều hệ màu được sử dụng trong việc nhận dạng ảnh như hệ màu RGB, HSV, YCrCb, YES,… Nhưng nhóm thực hiện đề tài quyết định sử dụng hệ màu YCrCb với những ưu điểm dùng cho việc xử lý video số và thuật toán phân tách màu da trong hệ màu YCrCb để điều khiển thiết bị bằng cử động đóng mở bàn tay Việc thực hiện nhận dạng sẽ được mô phỏng trên Matlab và dùng chương trình

Qt trên hệ điều hành Linux để viết chương trình thực thi cho kit mini2440

Trang 13

ABSTRACT

Image processing projects are being researched The researches come from a simple mathematics in order to detect human skin from the black-white (binary) images to the colorful (red-green-blue) images Now, the skin detection's mathematics expand to the many researches as face recognition, human's emotional recognition, hand detection and etc

There are so many color standards as RGB, HSV, YCrCb, YES etc However, group decided to use YCrCb standard because of the fortes in digital video processing and skin detection in YCrCb The implementation is going to be simulated by Matlab and executed into kit mini2440 by Qt which is based on Ubuntu/Linux operation system

Trang 14

CHƯƠNG 1: GIỚI THIỆU 1.1 Vai trò và ứng dụng của công nghệ hiện nay

Với những tiến bộ vượt bậc của khoa học kỹ thuật, bộ môn khoa học xử lý ảnh đã và đang thu được những thành tựu lớn lao và chứng tỏ vài trò không thể thiếu với những ứng dụng sâu rộng trong khoa học kỹ thuật cũng như đời sống xã hội Một bộ phận của khoa học xử lý ảnh là lĩnh vực thị giác máy tính hiện đang thu hút rất nhiều sự quan tâm của các nhà nghiên cứu xử lý ảnh với mục tiêu xây dựng nên một thế giới trong đó hệ thống thị giác kỳ diệu của con người có thể được

mô phỏng bởi các hệ thống máy tính, đem lại khả năng cảm nhận bằng thị giác cho các hệ thống về môi trường xung quanh Mơ ước về một hệ thống máy tính có thể hoà nhập vào thế giới con người với đầy đủ các giác quan trong đó thị giác đóng vai trò quan trọng đang dần dần được hiện thực hoá với những đóng góp nghiên cứu của các nhà khoa học trên phạm vi toàn thế giới

Đồng thời việc phát triển của các thiết bị phần cứng cả về phương diện thu nhận, hiển thị, tốc độ xử lý đã mở ra nhiều hướng mới cho công nghệ xử lý ảnh Nó

có thể giải quyết các bài toán như giám sát tự động phục vụ trong cơ quan, ngân hàng, kho bạc, hoặc trong việc giám sát giao thông tự động, phục vụ tại bãi đỗ xe, trạm thu phí tự động hoặc việc phát hiện và nhận dạng mặt người phục vụ trong công tác quân sự, an ninh…

Phát hiện vùng màu da là một công cụ rất hữu ích trong việc nhận dạng ảnh

Nó cho phép nhiều khu vực của một ảnh được loại bỏ một cách nhanh chóng và hiệu quả, mà không lãng phí thời gian để làm tương quan tốn kém hoặc các hình thức tính toán phân tích đắt tiền khác

1.2 Lý do chọn đề tài

Trong vài năm gần đây, cùng với sự phát triển về khoa học và công nghệ, tương tác người máy đã trở thành một lĩnh vực nổi bật nhằm cung cấp cho con người khả năng phục vụ của máy móc Điều này bắt nguồn từ khả năng máy móc

có thể tương tác được với con người Máy móc cần các khả năng để trao đổi thông tin với con người và nhận dạng màu da là một trong những khả năng đó Xuất phát

Trang 15

từ những ý tưởng trên nên người thực hiện đã chọn đề tài :“ ĐIỀU KHIỀN

THIẾT BỊ BẰNG CỬ ĐỘNG CỦA BÀN TAY DÙNG KIT MINI 2440 ”

1.3 Mục tiêu đề tài

Nhóm thực hiện nghiên cứu với mục tiêu sau:

- Tìm hiểu tổng quát về lý thuyết xử lý ảnh

- Mô phỏng trên Matlab

- Tìm hiểu kit mini2440

- Cài đặt hệ thống nhúng trên kit phát triển nhúng mini2440

- Rèn luyện kỹ năng nghiên cứu, tìm hiểu tài liệu

- Xây dựng được hệ thống điều khiển thiết bị dựa trên hệ thống nhúng trên kit 2440

1.4 Giới hạn đề tài

- Khoảng cách đặt camera và ảnh cần thu nằm trong khoảng 0.4m

- Thực hiện nhận dạng tay đóng mở bằng phương pháp tính phần trăm của pixel màu da trên tổng pixel của ảnh

- Ảnh đưa vào phải là bàn tay và chỉ nhận dạng được hai trạng thái đóng mở của bàn tay

1.5.Bố cục của đồ án

Chương 1: Giới thiệu

Chương 2: Cơ sở lý thuyết

Chương 3: Kỹ thuật phân tích màu da

Chương 4: Biên dịch ứng dụng trên board nhúng mini2440

Chương 5: Kết quả thực hiện

Chương 6: Kết luận và hướng phát triển

Tài liệu tham khảo

Trang 16

CHƯƠNG 2:CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về hệ thống xử lí ảnh

Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng cho nó

Xét 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 vẽ dưới đây mô tả các bước cơ bản trong

xử lý ảnh

Hình 2.1: Các bước cơ bản trong xử lý ảnh

Sơ đồ này bao gồm các thành phần sau:

Phân đoạn ảnh

Biểu diễn

và mô tả

Nhận dạng và nội suy

Thu nhận

ảnh

Tiền xử lý ảnh

Cơ sở trí thức

Trang 17

2.1.1 Phần thu nhận ảnh

Ảnh có thể nhận qua camera màu hoặc đen trắng Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera đã số hoá (như loại CCD – Change Coupled Device) là

loại photodiot tạo cường độ sáng tại mỗi điểm ảnh

Camera thường dùng là loại quét dòng ; ảnh tạo ra có dạng hai chiều Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh)

2.1.2.Tiền xử lý

Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào bộ tiền

xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng

độ tương phản để làm ảnh rõ hơn, nét hơn

2.1.3 Phân đoạn hay phân vùng ảnh

Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong

bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dạng Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này

2.1.4.Biểu diễn ảnh

Đầ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

Trang 18

2.1.5 Nhận dạng và nội suy ảnh

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 mặt người…

2.2 Những vấn đề cơ bản trong hệ thống xử lí ảnh

2.2.1 Điểm ảnh

Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính (số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và

độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y)

Trang 19

Định nghĩa:

Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh

2.2.2 Độ phân giải của ảnh

Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân

bố theo trục x và y trong không gian hai chiều

Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là một lưới điểm theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh (320*200) Rõ ràng, cùng màn hình CGA 12” ta nhận thấy mịn hơn màn hình CGA 17” độ phân giải 320*200 Lý do: cùng một mật độ (độ phân giải) nhưng diện tích màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn

2.2.4 Khử nhiễu

Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh :

- Nhiều hệ thống: là nhiễu có quy luật có thể khử bằng các phép biến đổi

- Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân → khắc phục bằng các phép lọc

Trang 20

- 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

2.2.6 Nhận dạng ảnh

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 Mẫu ở đây có thể là ảnh của vân tay, ảnh của một vật nào đó được chọn, một chữ viết khuôn mặt người …

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

Trang 21

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

2.3 Các hình thái của ảnh

2.3.1 Chuyển ảnh màu thành ảnh xám

Đơn vị tế bào của ảnh số là pixel Tùy theo mỗi định dạng là ảnh màu hay ảnh xám mà từng pixel có thông số khác nhau Đối với ảnh màu từng pixel sẽ mang thông tin của 3 màu cơ bản tạo ra bản màu khả biến là đỏ (R), xanh lá (G) và xanh biển (B) [Thomas 1892] Trong mỗi pixel của ảnh màu, 3 màu cơ bản R, G và

B được bố trí sát nhau và có cường độ sáng khác nhau Thông thường, mỗi màu cơ bản được biểu diễn bằng 8 bit tương ứng 256 mức độ màu khác nhau

Như vậy mỗi pixel chúng ta có 28*3

=224 màu (khoảng 16,78 triệu màu) Đối với ảnh xám, thông thường mỗi pixel mang thông tin của 256 mức xám (tương ứng với 8 bit) như vậy ảnh xám hoàn toàn có thể tái hiện đầy đủ cấu trúc của một ảnh màu tương ứng thông qua 8 mặt phẳng bit theo tọa độ xám

Hình 2.2 Ảnh RGB

Trong hầu hết quá trình xử lý ảnh, chúng ta chủ yếu chỉ quan tâm đến cấu trúc ảnh và bỏ qua sự ảnh hưởng của yếu tố màu sắc Do đó bước chuyển từ ảnh

Trang 22

màu thành ảnh xám là 1 công đoạn phổ biến trong các quá trình xử lí ảnh vì nó làm tăng tốc độ xử lí giảm mức độ phức tạp của các thuật toán trên ảnh

2.3.2 Lược đồ xám của ảnh (Histogram)

Một phương pháp thường dùng trong xử lí ảnh số là xem xét cường độ sáng của ảnh f(x,y) như là biến ngẫu nhiên có hàm phân bố xác suất là pk (f) Hàm phân

bố xác suất của ảnh mang thông tin toàn cục về nội dung chứa trong ảnh Tuy nhiên hàm phân bố xác suất tổng quát thường không đáp ứng được do đó thường dùng hàm phân bố xác suất thực nghiệm xác định từ ảnh để thay thế gọi là hàm histogram Histogram của ảnh số với mức xám có tầm trong khoảng [0, L-1] là hàm:

( )

(2.1) Với là mức xám thứ k

là số pixel trong ảnh có mức xám thứ k tổng số pixel trong ảnh

: 0,1,2,…., L-1 Lược đồ xám bao gồm trục hoành biểu diễn mức xám và trục tung biểu diễn

số lượng điểm sáng tương ứng Đối với ảnh xám thông thường, giá trị của trục hoành nằm trong khoảng từ 0 - 255

Hình 2.3: Lược đồ histogram

Trang 23

2.3.3 Không gian màu

Như ta đã biết thì khi cho ánh sáng trắng đi qua lăng kính ta sẽ thu được một dãy phổ màu bao gồm 6 màu rộng: tím , lam , lục , vàng , cam , đỏ Nếu nhìn kỹ thì

sẽ không có ranh giới rõ ràng giữa các màu mà màu này sẽ từ từ chuyển sang màu kia.Mắt chúng ta nhìn thấy được là do ánh sáng phản xạ từ vật thể

Tất cả các màu được tạo ra từ 3 màu cơ bản (màu sơ cấp) là: đỏ (R),lam (B)

và lục (G).Các màu cơ bản trộn lại với nhau theo một tỉ lệ nhất định để tạo ra các màu thứ cấp

Trang 24

khi các tế bào cảm nhận màu xanh ánh vàng được kích thích nhiều hơn một chút so với tế bào cảm nhận màu xanh lá cây và màu đỏ cảm nhận được khi các tế bào cảm nhận màu vàng - xanh ụcá cây được kích thích nhiều hơn so với tế bào cảm nhận màu xanh lá cây

Các đặc trưng dùng để phân biệt một màu với màu khác là: độ sáng (brightness) , sắc màu (hue) và độ bảo hòa màu (Saturation)

Màu sắc có liên quan đến bước sóng ánh sáng Thông thường, sắc màu chính

là tên của màu Ví dụ: đỏ, cam, lục…

Độ sáng thể hiện về cường độ ánh sáng :mô tả nó sáng hay tối như thế nào

Độ bảo hòa màu : thể hiện độ thuần khiết của màu Khi độ bão hòa cao, màu sẽ sạch

và rực rỡ

2.3.3.1 Không gian màu RGB

Hình 2.5: Không gian màu RGB

Không gian màu RGB chia các màu ra các thành phần màu chính là R đỏ), G (Green-xanh lá), B (Blue-xanh dương) Các màu R, G, B được gọi là các màu chính hay màu cơ bản vì ánh sáng của ba màu này có thể phối hợp ở những cường độ khác nhau để tạo ra các màu khác Mô hình RGB được thể hiện bởi một hình lập phương Trong một ảnh 24 bit với 8 bit cho mỗi màu chính thì màu đỏ sẽ

(Red-có giá trị (255,0,0), màu xanh dương (0,0,255), màu xanh lá (0,255,0) Mô hình này được thiết kế cho phần lớn hệ thống đồ họa, tuy nhiên nó chưa phải là lý tưởng cho

Trang 25

các ứng dụng về phát hiện và nhận dạng vật thể Các thành phần màu đỏ, xanh dương, xanh lá có sự liên kết chặt chẽ sẽ gây khó khăn trong việc thực hiện một số thuật toán xử lý ảnh

2.3.2.3 Không gian màu YCrCb

YCrCb được định nghĩa nhằm phục vụ các mục đích xử lý video số Nó có quan hệ với một số không gian màu như YIQ, YUV Trong khi YCrCb là hệ thống màu số thì các không gian YIQ và YUV là hệ thống tương tự phục vụ cho các chuẩn PAL và NTSC Các không gian màu này sẽ chia RGB ra các thành phần chói,

và thành phần màu nhằm sử dụng cho các ứng dụng nén ảnh Do đó chúng thường được sử dụng trong các hệ thống truyền hình

Hình 2.6: Không gian màu YCrCb

YCrCb là không gian màu được sử dụng nhiều trong vấn đề nén ảnh màu sắc được biểu diễn bởi luma (đó là giá trị độ sáng tính từ không gian RGB) Gồm ba thành phần, một thành phần là tổng các trọng số từ RGB, hai thành phần màu Red

và Blue trong không gian màu RGB Công thức để chuyển đổi như sau:

Y = 0.299R +0.587G + 0.114B

{

(2.2)

Trang 26

Cr

Y

2072.18

9337.111

9660.24

7509.93

1592.74

5530.128

81.95.111

7745.37

4810.65

12812816

(2.3)

2.3.3.3 Không gian màu HSV

Không gian HSV bao gồm ba thành phần Hue (sắc màu), Saturation (bảo hòa màu) và Value (độ sáng, một số trường hợp có thể gọi là Brightness)

Sắc màu (Hue) thể hiện sự đáp ứng về màu sắc xung quanh thang đo sắc màu Các sắc màu trên thang đo sẽ chạy từ Đỏ-Vàng-Xanh lá-Xanh lam- Xanh Dương- Tím-Đỏ

Bão hòa màu để chỉ cường độ sáng của màu Một màu có độ bão hòa lớn nhất có thể xem như một màu tinh khiết và “sâu”, cũng như khi chúng ta giảm độ bão hòa, những màu sắc sẽ bị xóa dần cho đến khi đạt giá trị không nó sẽ trở thành màu trắng

Theo lý thuyết một không gian HSV có hình dáng như một hình nón Nếu quan sát ở mặt phẳng các đường tròn bao quanh hình nón, các giá trị về màu sắc (Hue) sẽ được thể hiện bởi góc của mỗi màu so với trục hình nón, (trục hình nón sẽ được gán với màu đỏ) Độ bão hòa màu được thể hiện như là khoảng cách từ tâm các đường tròn Độ bão hòa lớn nhất nằm ở biên của hình nón Độ sáng được mô tả bởi vị trí theo chiều dọc hình nón Ở vị trí đỉnh của hình nón, sẽ không có bất kì độ sáng nào Và ở đáy của nón, độ sáng sẽ lớn nhất

Hình 2.7: Không gian màu HSV

Trang 27

2.4 Tổng quan về hệ thống nhúng

2.4.1 Lịch sử phát triển của hệ thống nhúng

Hệ thống nhúng đầu tiên là Apollo Guidance Computer (máy tính dẫn đường Apollo) được phát triển bởi Charles Stark Draper tại phòng thí nghiệm của trường đại học MIT Hệ thống nhúng được sản xuất hàng loạt, đầu tiên là máy hướng dẫn cho tên lửa quân sự vào năm 1961 có tên gọi là Autonetics D-17, được xây dựng từ những bóng bán dẫn và một đĩa cứng để duy trì bộ nhớ Khi Minuteman II được đưa vào sản xuất năm 1996, D-17 đã được thay thế với một máy tính mới sử dụng mạch tích hợp Tính năng thiết kế chủ yếu của máy tính Minuteman là nó đưa ra thuật toán có thể lập trình lại Để làm cho tên lửa chính xác hơn, và máy tính có thể kiểm tra tên lửa, giảm trọng lượng của cáp điện và đầu nối điện Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã giảm giá và phát triển mạnh mẽ

về khả năng xử lý Bộ vi xử lý đầu tiên hướng đến người tiêu dùng là Intel 4004, được phát minh phục vụ máy tính điện tử và những hệ thống nhỏ khác Tuy nhiên

nó vẫn cần các chip nhớ ngoài và những hỗ trợ khác Vào những năm cuối 1970, những bộ xử lý 8 bit đã được sản xuất, nhưng nhìn chung chúng vẫn cần đến những chip nhớ bên ngoài.Vào giữa thập niên 80, kỹ thuật mạch tích hợp đã đạt trình độ cao dẫn đến nhiều thành phần có thể đưa vào một vi xử lý Các bộ vi xử lý được gọi

là các vi điều khiển và được chấp nhận rộng rãi Với giá cả thấp, các vi điều khiển

đã trở nên rất hấp dẫn để xây dựng các hệ thống chuyên dụng Đã có một sự bùng

nổ về số lượng các hệ thống nhúng trong tất cả các lĩnh vực thị trường và số các nhà đầu tư sản xuất theo hướng này Ví dụ, rất nhiều vi xử lý đặc biệt xuất hiện với nhiều giao diện lập trình hơn là kiểu song song truyền thống để kết nối các vi xử lý Vào cuối những năm 80, các hệ thống nhúng đã trở nên phổ biến trong hầu hết các thiết bị điện tử và khuynh hướng này vẫn còn tiếp tục cho đến nay Hiện nay có khá nhiều kiến trúc vi xử lý khác nhau sử dụng để xây dựng hệ thống nhúng như: ARM, MIPS, PowerPC, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8, …

Ngày nay, một hệ thống nhúng có các ứng dụng rất rộng rãi trong cuộc sống hàng ngày và có thể tìm gặp ở bất kì các thiết bị điện tử nào Ví dụ trong các thiết bị điện tử dân dụng (máy giặt, tủ lạnh, TV ), các thiết bị điện tử “thông minh” (điện

Trang 28

thoại di động), thiết bị truyền thông, thiết bị y tế, xe hơi, thậm chí cả trong một máy tính cá nhân (card mở rộng)

Hệ thống nhúng rất đa dạng, phong phú về chủng loại, đó có thể là những thiết

bị cầm tay nhỏ gọn như đồng hồ kĩ thuật số, máy chơi nhạc MP3, hay những sản phẩm lớn như đèn giao thông, các bộ kiểm soát trong nhà máy hay hệ thống kiểm soát các máy năng lượng hạt nhân, …Xét về độ phức tạp, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều thành phần, các thiết bị ngoại vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn Các ví dụ về hệ thống nhúng :

- Điện thoại tế bào

có một số lượng rất lớn các ứng dụng từ nhỏ đến lớn, từ trong dân dụng đến trong công nghiệp, từ điều khiển đơn giản đến xử lý phức tạp

Một hệ thống nhúng có thể định nghĩa như sau : hệ thống nhúng là một hệ thống chuyên dụng cho một mục đích xác định, bao gồm nhiều thành phần (bộ nhớ, I/O, module chức năng ) xung quanh một vi xử lý cùng với một hệ điều hành

Trang 29

nhỏ, gọn, nhanh nhằm mục đích điều khiển vi xử lý, tất cả nằm trên một con chip (SoC) hay một board mạch

hệ thống nhúng còn có thể là một phần nhỏ của một hệ thống lớn hơn, nên nó có thể nằm trên một board mạch với một vi xử lý riêng cùng với phần mềm được lưu trữ trong ROM Vì là một hệ thống chuyên dụng, nên hầu hết các hệ thống nhúng phải đáp ứng sự thay đổi ở các tín hiệu ngõ vào (input) trong thời gian ngắn nhất có thể, tức là phải đảm bảo tốc độ hoạt động của nó Vì vậy, các hệ thống nhúng đều có tốc

độ hoạt động rất cao là được xếp vào loại thời gian thực (real time) Với các ứng dụng đơn giản, nó chỉ cần một chương trình nhỏ (mà không cần hệ điều hành) để điều khiển hệ thống, tuy nhiên, một hệ điều hành cài đặt trên hệ thống nhúng để chạy các chương trình ứng dụng sẽ giúp cho hệ thống trở nên cực kỳ linh hoạt Tính quyết định : Đặc trưng này có nghĩa là tất cả các trạng thái bên trong của

hệ thống, các giá trị ngõ vào liên quan đến ngõ ra đều có thể tính toán trước được (về mặt nguyên tắc)

Một đặc tính khác cũng khá quan trọng và mang nét riêng của hệ thống nhúng

đó chính là thời gian thực Một hệ thống nhúng phải có khả năng thực hiện chức

Trang 30

năng của mình trong một khoảng thời gian hữu hạn, ít nhất và có thể biết trước Có

2 loại thời gian thực : thời gian thực cứng và thời gian thực mềm Đối với hệ thống thời gian thực cứng, tất cả các chức năng của nó phải được thực thi chính xác trong một khoảng thời gian xác định, nếu không cả hệ thống sẽ bị lỗi nghiêm trọng Ví dụ : hệ thống điều khiển không lưu, hệ thống dẫn đường tên lửa, thiết bị y tế Đối với hệ thống thời gian thực mềm, các chức năng phải được thực hiện trong một khoảng thời gian xác định nhỏ nhất nhưng không bắt buộc

Một hệ thống nhúng bao giờ cũng được “bao bọc” bởi một hệ thống phần cứng mà nó điều khiển Chính vì vậy, đối với người sử dụng cuối, họ không nhận ra

sự hiện diện của hệ thống nhúng trong một thiết bị phần cứng Do đó, đây cũng là

sự khác biệt giữa một hệ thống nhúng và một máy tính cá nhân Một hệ thống nhúng cũng có khả năng tương tác với thế giới bên ngoài, tuy nhiên giao diện người

sử dụng của nó lại thường khá đơn giản

Lĩnh vực hệ thống nhúng đòi hỏi sự kết hợp của nhiều ngành lại với nhau như:

kỹ thuật phần mềm, hệ điều hành, thiết kế phần cứng (thiết kế chip) Vì vậy, một

kỹ sư thiết kế hệ thống nhúng phải có khả năng hiểu được nhiều lĩnh vực khác nhau,

từ thiết kế phần cứng, xuống layout ra chip, đến lập trình phần mềm, cài đặt hệ điều hành

Việc xây dựng phần mềm trên hệ thống nhúng gặp phải những khó khăn về công cụ lập trình và debug Phần mềm được viết cho các hệ thống nhúng được gọi

là firmware và được lưu trữ trong các vi xử lý bộ nhớ chỉ đọc (read-only memory) hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc có nhưng với kích thước nhỏ, bộ nhớ hạn chế

Các hệ thống nhúng có thể không có giao diện (đối với những hệ thống đơn nhiệm) hoặc có đầy đủ giao diện giao tiếp với người dùng tương tự như các hệ điều hành trong các thiết bị để bàn Các hệ thống đơn giản sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc chỉ hiển thị số Trong một hệ thống phức tạp hơn, một màn hình đồ họa, cảm ứng hoặc có các nút bấm ở lề màn hình cho phép thực hiện các thao tác phức tạp Các hệ thống nhúng thường có một màn hình với một nút bấm dạng cần điểu khiển (joystick button) Sự phát triển mạnh mẽ của mạng toàn cầu đã mang đến cho những nhà thiết kế hệ nhúng một lựa chọn mới là sử dụng một giao

Trang 31

diện web thông qua kết nối mạng Điều này có thể giúp tránh được chi phí cho những màn hình phức tạp nhưng đồng thời vẫn cung cấp khả năng hiển thị và nhập liệu phức tạp khi cần đến, thông qua một máy tính khác Điều này là hết sức hữu dụng đối với các thiết bị điều khiển từ xa, hoặc các thiết bị cài đặt vĩnh viễn từ khi xuất xưởng

Các hệ thống nhúng thường nằm trong các cỗ máy được kỳ vọng là sẽ chạy hàng năm trời liên tục mà không bị lỗi hoặc có thể tự động khôi phục hệ thống khi gặp lỗi Vì thế, các phần mềm hệ thống nhúng cần phải được kiểm thử một cách cẩn thận hơn là phần mềm cho máy tính cá nhân Ngoài ra, các thiết bị rời không đáng tin cậy như ổ đĩa, công tắc hoặc nút bấm thường bị hạn chế sử dụng Việc khôi phục

hệ thống khi gặp lỗi có thể được thực hiện bằng cách sử dụng các kỹ thuật như watchdog timer, nếu phần mềm không đều đặn nhận được các tín hiệu watchdog định kì thì hệ thống sẽ tự khởi động lại Trường hợp hệ thống không thể ngừng để sửa chữa một cách an toàn Ví dụ, ở các hệ thống không gian, hệ thống dây cáp dưới đáy biển, các đèn hiệu dẫn đường, … Giải pháp đưa ra là chuyển sang sử dụng các hệ thống con dự trữ hoặc các phần mềm cung cấp một phần chức năng Đối với

hệ thống phải được chạy liên tục vì tính an toàn Ví dụ, các thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn trong các nhà máy hóa chất… thì cần phải chuẩn

bị sẵn sàng hệ thống khác tương tự để thay thế ngay khi cần thiết

2.4.4 Hệ điều hành thời gian thực (RTOS) và kernel thời gian thực

Một số các ứng dụng nhúng có thể thực hiện hiệu quả mà chỉ cần một chương trình đơn giản chạy độc lập điều khiển cả hệ thống Tuy nhiên, đối với đa số các ứng dụng mang tính thương mại, một hệ nhúng cần phải có hệ điều hành thời gian thực hoặc kernel thời gian thực Một kernel thời gian thực thường nhỏ hơn rất nhiều

so với một RTOS hoàn chỉnh Trong lý thuyết về hệ điều hành, kernel chính là một phần của hệ điều hành, nó sẽ được nạp lên bộ nhớ đầu tiên và vẫn tồn tại trong lúc chương trình hoạt động Một kernel thời gian thực sẽ cung cấp hầu hết các dịch vụ cần thiết cho các ứng dụng nhúng Do đó chỉ là một phần của hệ điều hành và được nạp thẳng lên bộ nhớ, nên một kernel thời gian thực thường có kích thước rất nhỏ, rất phù hợp cho các bộ nhớ có dung lượng thấp trong các hệ thống nhúng

Trang 32

Hình 2.9: Hệ thống thời gian thực 2.4.5 Chương trình, tác vụ và luồng

Một chương trình trên một hệ thống nhúng chính là một phần mềm có khả năng thực thi độc lập và có vùng nhớ riêng của mình Nó bao gồm môi trường thực thi một chức năng cụ thể và khả năng tương tác với hệ điều hành Một chương trình

có thể được bắt đầu chạy một cách độc lập hoặc có thể từ các chương trình khác Một hệ điều hành có khả năng thực thi nhiều chương trình cùng một lúc song song nhau Tuy nhiên, khi một chương trình có khả năng tự chia ra một vài phần có khả năng thực thi song song nhau, mỗi phần đó được gọi là một luồng Một luồng chính

là một phần trong chương trình và phụ thuộc về mặt chức năng so với các luồng khác nhưng lại có khả năng hoạt động độc lập nhau Các luồng sẽ chia sẻ chung một

bộ nhớ trong một chương trình Khái niệm về tác vụ và luồng có thể thay thế cho nhau

Hình 2.10: Tác vụ và luồng

Trang 33

2.4.6 Kiến trúc hệ thống thời gian thực

- Polling :

+ Trong kiến trúc điều khiển vòng lặp với polling, kernel sẽ thực thi một vòng lặp vô hạn, vòng lặp này sẽ chọn ra luồng trong một mẫu được định trước Nếu một luồng cần dịch vụ, nó sẽ được xử lý Có một vài biến thể của phương pháp này, tuy nhiên vẫn phải đảm bảo mỗi luồng đều có khả năng truy cập đến vi xử lý

Hình 2.11 : Ki ến trúc điều khiển theo vòng l ặp Polling

+ Mất rất nhiều thời gian, khi mà một luồng cần truy cập đến vi xử lý sẽ phải chờ đến lượt của mình, và một chương trình có quá nhiều luồng sẽ bị chậm đi rất nhiều

+ Phương pháp này không có sự phân biệt giữa các luồng, luồng nào quan trọng và luồng nào ít quan trọng, từ đó xác định mức độ ưu tiên giữa các luồng

- Mô hình sắp xếp mức độ ưu tiên :

Trong mô hình này, mỗi luồng sẽ đi kèm với mức độ ưu tiên của nó, lúc này vi

xử lý sẽ thiết lập đường truy cập tới luồng nào có mức độ ưu tiên cao nhất khi nó đòi hỏi được phục vụ Cũng có một vài biến thể của phương pháp này, tuy nhiên vẫn phải đảm bảo các luồng có mức độ ưu tiên thấp nhất vẫn phải có thể truy cập tới vi xử lý một vài lần

Trang 34

Hình 2.12: Kiến trúc điều khiển theo mô hình sắp xếp mức độ ưu tiên 2.4.7 Các thành phần của hệ điều hành Embedded Linux

2.4.7.1 Các thuật ngữ thường dùng trong hệ thống nhúng

- Host : Hướng đến máy trạm phát triển hệ thống có thể là một máy bàn hay server chạy hệ điều hành Linux

- Target : Là một kiến trúc hệ thống nhúng

- NOR FLASH : Giống như BIOS của PC

- NAND FLASH : Giống như là HDD của PC

- Cross-Development : Quá trình xây dựng, phát triển và biên dịch ứng dụng được thực hiện trên Host nhưng lại được chạy trên hệ thống Target

- Toolchain : Là một tập công cụ được dùng để xây dựng các ứng dụng hoặc tạo

image(Image: một dạng file được dùng trong hệ thống Embedded Linux Ví dụ: yaffs.img là root filesystem dạng yaffs hoặc uImage là kernel file.) cho một thiết bị nhúng Các toolchain còn cho phép biên dịch (compile) trên một kiến trúc cho một kiến trúc khác (như là biên dịch một image của ARM trên một máy tính cá nhân xài

hệ điều hành Linux, điều này được gọi là cross-development và các compiler được

gọi là ( Cross-compiler)

Trang 35

2.4.7.2 BootLoader

Trong một hệ thống nhúng, không tồn tại firmware giống như CMOS của

PC Vì vậy để khởi động một hệ thống nhúng, chúng ta phải xây dựng bootloader Bootloader là một phần rất quan trọng trong hệ thống nhúng

- Chức năng của bootloader như sau:

+ Sao chép kernel từ flash memory đến RAM và thực thi kernel

+ Khởi tạo phần cứng

+ Bootloader cũng bao gồm chức năng ghi dữ liệu đến flash memory (tải kernel hoặc RAM disk image xuống flash memory bằng cổng giao tiếp tuần tự hoặc các thiết bị nối mạng)

+ Cung cấp giao tiếp để gửi lệnh đến hoặc nhận về các trạng thái của bo mạch cần chạy

2.4.7.3 Kernel

Kernel là thành phần chính của hệ điều hành Embedded Linux, quản lý các tác vụ(task management), quản lý bộ nhớ (memory management), quản lý nhập/xuất (I/O management), quản lý timer (timer management), giao tiếp với các API (application programming interface),

Hình 2.13: Kiến trúc hệ điều hành Linux

Trang 36

- Trong hệ thống Embedded Linux, việc cấu hình kernel được thực hiện bằng cách dùng lệnh “make menuconfig” Sau đó lựa chọn các module cần thiết cho kernel bởi hệ thống danh sách (menu) Sau khi đã cấu hình kernel, thực hiện việc xây dựng (build) kernel bằng lệnh “make zImage” (đối với ARM9) hoặc “make uImage” (đối với MPC860) Tập tin cuối cùng nhận được sẽ là zImage hoặc uImage File này sẽ được tải xuống flash memory

- Root filesystem phải chứa mọi thứ cần thiết để hỗ trợ Embedded Linux Cấu trúc thư mục của root filesystem như sau :

+ Etc : Thư mục này chứa các file cấu hình toàn cục của hệ thống Có thể có nhiều thư mục con của thư mục này nhưng nhìn chung chúng chứa các file script

để khởi động hay phục vụ cho mục đích cấu hình chương trình trước khi khởi động

+ Sbin : Thư mục này chứa các file hay chương trình thực thi của hệ thống thường chỉ cho phép sử dụng bởi người quản trị

+ Bin : Thư mục này gồm chủ yếu các chương trình, phần lớn trong số chúng cần cho hệ thống trong thời gian khởi động (hoặc trong chế độ một người dùng khi bảo trì hệ thống)

+ Lib : Thư mục này chứa các file thư viện so hoặc a Các thư viện C và các

thư viện liên kết động cần cho chương trình khi chạy và cần cho toàn hệ thống Thư mục này tương tự thư mục System32 của Windows

+ Mnt : Thư mục này chứa các thư mục kết gán tạm thời đến các ổ đĩa hay thiết bị khác

Trang 37

+ Usr : Thư mục này chứa rất nhiều thư mục con như /usr/bin hay /usr/sbin Một trong những thư mục quan trọng trong /usr là /usr/local Bên trong thư mục local này có các thư mục con tương tự ngoài thư mục gốc như sbin, lib, bin…Nếu nâng cấp hệ thống thì các chương trình cài đặt trong /usr/local vẫn giữ nguyên và không sợ bị mất mát Thư mục này tương tự như Program File trên Windows

+ Dev : Thư mục này chứa các file thiết bị Trong Linux các thiết bị phần cứng được xem như làm một file

+ Lost_found : Thư mục này được đặt tên hơi lạ nhưng đúng nghĩa của nó Khi hệ thống khởi động hoặc khi chạy chương trình fsck, nếu tìm thấy một chuỗi

dữ liệu nào đó bị thất lạc trên đĩa cứng không liên quan đến các tập tin, linux sẽ gộp chúng lại và đặt trong thư mục này để nếu cần người dùng có thể đọc và giữ lại dữ liệu đã mất

+ Tmp : Đây là thư mục tạm dùng để chứa các file tạm mà chương trình sử dụng chỉ trong quá trình chạy Các file trong thư mục này sẽ được hệ thống dọn dẹp nếu không còn dùng đến nữa

- Có nhiều dạng initial RAM disk (initrd) : Cramfs (Compressed ROM file system), Cramfs được thiết kế nhỏ gọn, dung lượng không vượt quá 256MB JFFS (Journalling Flash File System), … Quá trình xây dựng một RAM disk image ngay

từ đầu tương đối phức tạp Do vậy người ta thường dùng các thư viện có sẵn (được cho dưới dạng tập tin nén, như initrd.gz) Sau đó giải nén, chép thêm các phần mềm điều khiển thiết bị (device driver) và ứng dụng vào, thêm hoặc sửa đổi một số tập tin, thư mục cần thiết sao cho phù hợp với đặc thù ứng dụng của mình Cuối cùng, dùng các công cụ để nén và chuyển tập tin nén thành dạng image để tải xuống flash memory

2.4.7.5 Device driver

Device driver là phần mềm giao tiếp giữa phần cứng và kernel của Embedded Linux Linux device driver có thể được tích hợp vào trong kernel theo 2 phương pháp : biên dịch trực tiếp vào kernel hoặc biên dịch thành một định dạng đối tượng (object format có tập tin là device_driver.o) để kernel có thể tải lên khi có nhu cầu (sử dụng lệnh install module “insmod device_driver.o”) Để biên dịch các tập tin

Trang 38

của device driver cần phải xây dựng một Makefile Kết quả thu được sẽ là tập tin có

phần mở rộng *.o

2.4.7.6 Ứng dụng (application)

Aplication là các ứng dụng chuyên biệt của người sử dụng, với mục đích điều khiển hệ thống tùy theo mục đích sử dụng Dùng Makefile để biên dịch ứng dụng Kết quả thu được là một file có thể chạy được (tương tự *.exe trên hệ điều hành DOS)

2.4.7.7 Chế độ Stand-alone

Thông thường hệ thống Embedded Linux phải có khả năng chạy độc lập Thay

vì dùng mount root filesystem từ một remote server (NFS filesystem), có thể dùng một Ram disk image Ramdisk image chứa trong flash memory và được tải lên RAM khi hệ thống khởi động Đồng thời để chạy các ứng dụng một cách tự động, ta phải sửa đổi nội dung tập tin /etc/init.d/rcS để hệ điều hành có thể tải các device driver lên và chạy các ứng dụng

2.4.8 Các bước xây dựng một hệ thống Embedded Linux

án

CPU được support bởi hệ điều hành nào : Sau khi lựa chọn CPU vendor, ta

sẽ có được danh sách CPU trong 1 dòng sản phẩm Điều đầu tiên ta cần xác định rõ CPU này được hỗ trợ bởi hệ điều hành nào, và có phù hợp với hệ điều hành mà

Trang 39

chúng ta cần phát triển hay không Ví dụ cho hệ điều hành Linux : CPU cần có MMU (Memory Management Unit) và hỗ trợ bus bộ nhớ ngoài Ngoài ra chúng ta cần xem xét đến tốc độ CPU, các ngoại vi cần phải có trong hệ thống Và cuối cùng là giá thành của CPU như thế nào, có sẵn trên thị trường hay không

- Tìm hiểu đặc tả, cơ chế boot của CPU :

+ Cấu hình chân của CPU (package type) : Năng lực sản xuất PCB trong nước

là có hạn, vì thế việc lựa chọn cấu hình chân CPU sẽ trở nên khó khăn và eo hẹp hơn

+ Cơ chế boot của CPU : Cơ chế boot của CPU là phần cực kỳ quan trọng mà ta cần phải xem xét đến Thông thường thì các đặt tả từ nhà sản xuất đề cập đến vấn đề này Khi có đầy đủ thông tin về cơ chế này, người thiết kế phần cứng sẽ có quyết định lựa chọn linh kiện nào phù hợp cho từng kiểu boot Ví dụ : NAND Flash, NOR FLash, SPI Dataflash, I2C EEPROM, MMC

Xây dựng sơ đồ nguyên lý cho hệ thống : Để có được schematic hoàn chỉnh

cho hệ thống, ta cần tập hợp thông tin từ các CPU vendor càng nhiều càng tốt, bao gồm các tài liệu về schematic check list, CPU user manual, design application note

Thiết kế PCB : Khi layout cần chú ý đến các đường bus giao tiếp bộ nhớ ngoài, các tụ trở mạch lọc cho PLL, các tụ lọc nguồn cho CPU

2.4.8.2 Thiết kế phần mềm

Cài đặt boot loader : Thông thường các hãng sản xuất chíp cung cấp cho

chúng ta mã nguồn, công cụ để xây dựng boot loader Đa số các CPU được sản xuất với ROM on chip và được cài sẵn chương trình boot Tuy nhiên, thông thường những chương trình này ko đủ khả năng boot được Linux OS, cần phải kết hợp chương trình này với các thiết bị lưu trữ để thực hiện những chương trình boot có tính năng mạnh hơn

Cài đặt Linux OS (porting) : Thành phần nòng cốt của Linux OS là kernel,

về bản chất nó chỉ là các mã lệnh chương trình thực thi trên CPU Tuy nhiên, kernel giữ vai trò quản lý các tiến trình hoạt động trong hệ thống Kernel Linux được xây dựng bởi code C và một số ASM cho từng loại kiến trúc CPU cụ thể Source code của kernel được quản lý bởi tổ chức phát triển mã nguồn mở Linux Tuy nhiên, khi

ta xây dựng phần cứng mới thì không hẳn có thể chạy được Linux OS, bởi vì cần

Trang 40

phải đảm bảo mối tương quan giữa phần cứng và Kernel Thông thường các CPU vendor xây dựng phần cứng chuẩn được gọi là evaluation kit Họ sẽ chỉnh sửa source kernel (startup code, driver ) để board có thể vận hành được Linux OS Thao tác này theo thuật ngữ người ta gọi là porting Kết quả của việc porting tạo ra các bản vá (patch)

Phát triển driver : Source kernel Linux bao gồm tập hợp các driver đã viết sẵn và được chuẩn hóa thành tài liệu Tuy nhiên, ta có thể tự viết driver cho riêng mình để phù hợp với nhu cầu của dự án Linux kernel hỗ trợ cho việc phát triển driver theo 2 dạng : built-in hoặc là module

Xây dựng root file system (rootfs) : Khung sườn của hệ điều hành Linux là rootfs Đây là tập hợp những chương trình ứng dụng, các tiện ích của hệ điều hành

Ta có thể xây dựng rootfs từ nhiều nguồn khác nhau : OpenEmbedded (Angstrom), LTIB, Buildroot, Debian

Phát triển phần mềm ứng dụng : Linux OS cung cấp tập hợp thư viện rất phong phú cho nhiều lĩnh vực khác nhau : mạng, đồ họa, image processing, telecom Người phát triển phần mềm sẽ dùng những thư viện này và viết chương trình theo mong muốn

2.5 Giới thiệu về KIT Mini2440

2.5.1 Sơ lược

Kit Mini2440 có kích thước 100mm vuông dựa trên nền tảng ARM9, sử dụng

họ vi xử lý s3c2440, kit được ứng dụng cho việc phát triển hệ thống nhúng, điều khiển các thiết bị công nghiệp, phát triển trên thiết bị PDA và định vị GPS Các hệ thống system on chip được sử dụng nhiều trong các thiết bị cầm tay như smartphone và PDA Kit Mini2440 có kích thước 3.9 x 3.9 inches (100 x 100mm) Mạch được thiết kế 4 lớp, được thiết kế đảm bảo các yêu cầu toàn vẹn tín hiệu đối với mạch tần số cao Chip Samsung s3c2440 có lõi là cấu trúc ARM920T với tốc độ 400MHz (tần số thường dùng) và 533MHz (tần số đỉnh) Thành phần của kit Mini2440 gồm có các I/O port, Erthenet, USB host và slave, ba cổng nối tiếp, có thể chọn thêm module Wifi, camera CMOS và camera USB

Ngày đăng: 30/03/2016, 11:00

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. PGS.TS Nguyễn Quang Hoan, Xử Lý Ảnh, Học viện công nghệ bưu chính viễn thông, 2006 Khác
[2] Phí Tùng Lâm – Nguyễn Trung Dũng, Ứng dụng tạo tiếng nói tiếng việt từ văn bản trên kit Mini2440,đồ án tốt nghiệp đại học bách khoa Hà Nội Khác
[3] Cao Thanh Hải – Đỗ Trung Nguyên, Triển khai giải thuật PCA trên kit mini2440 ứng dụng trong các hệ thống bảo mật, đồ án tốt nghiệp đại học sư phạm kĩ thuật TPHCM, 2012 Khác
[4]. Tarek M. Mahmoud, A New Fast Skin Color Detection Technique, 2008 Khác
[5].V.Vezhenevets, V.Sazzonov, A.Andreeva, A Survey on Pixel – Based Skin Color Detection Techniques, Proc, Graphicon -2003 Khác
[6] Rafael Gonzalez, Richard E.Woods, Digital Image Processing Second Edition, Rafael C. Gonazlez, University of Tennessee, Richard E. Woods, MedData Interactive Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.6: Không  gian màu  YCrCb - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 2.6 Không gian màu YCrCb (Trang 25)
Hình 2.13: Kiến trúc hệ điều hành  Linux - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 2.13 Kiến trúc hệ điều hành Linux (Trang 35)
Hình 2.14 : Cấu  trúc kit phát  tri ển nhúng mini2440 - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 2.14 Cấu trúc kit phát tri ển nhúng mini2440 (Trang 41)
Hình 2.16 : Bộ nhớ  Flash - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 2.16 Bộ nhớ Flash (Trang 44)
Hình 3.1 : Mật độ các màu  da  người trên thế giới - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 3.1 Mật độ các màu da người trên thế giới (Trang 50)
Hình 3.3: Phân  tách màu  da từ 1 ảnh  màu - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 3.3 Phân tách màu da từ 1 ảnh màu (Trang 52)
Hình 4.10 : Quá  trình cài đặt thư viện Tslib thành  công - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 4.10 Quá trình cài đặt thư viện Tslib thành công (Trang 58)
Hình 4.15: Quá  trình cài đặt các gói thư vi ện cần thiết - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 4.15 Quá trình cài đặt các gói thư vi ện cần thiết (Trang 62)
Hình 4.17: Quá  trình cài đặt OpenCV  thành  công - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 4.17 Quá trình cài đặt OpenCV thành công (Trang 63)
Hình 5.1: Lưu đồ giải thuật trên Matlab - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.1 Lưu đồ giải thuật trên Matlab (Trang 69)
Hình 5.4: Giao diện chọn ảnh - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.4 Giao diện chọn ảnh (Trang 72)
Hình 5.5: Kết quả  sau  khi nhận  dạng  ảnh  tĩnh - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.5 Kết quả sau khi nhận dạng ảnh tĩnh (Trang 73)
Hình 5.6: Kết quả  sau  khi nhận  dạng  bằng  camera - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.6 Kết quả sau khi nhận dạng bằng camera (Trang 74)
Hình 5.9: Giao diện phần  cứng - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.9 Giao diện phần cứng (Trang 77)
Hình 5.10: Kết quả  thực hiện - Điều khiển thiết bị bằng cử động của bàn tay dùng kit mini 2440
Hình 5.10 Kết quả thực hiện (Trang 78)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w