Số hoá ảnh là sự biến đổi gần đúng một ảnh liêntụ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
Trang 1MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU CHUNG……… 5
1.1 Giới thiệu chung về rô bốt……… 6
1.2 Giới thiệu rô bốt bám đối tượng……… 6
1.3 Mục tiêu của đồ án……… 9
1.4 Giới hạn của đồ án……… 10
CHƯƠNG 2 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ VIỆN OPENCV……… 11
2.1 Giới thiệu về xử lý ảnh 12
2.1.1 Định nghĩa xử lý ảnh……… 12
2.1.2 Các khái niệm liên quan……… 12
2.2 Thế nào là thị giác máy……… 16
2.3 Thư viện OpenCV……… 16
2.3.1 OpenCV là gì? 16
2.3.2 Vì sao lựa chọn OpenCV? 17
2.3.3 Cấu trúc và nội dung OpenCV như thế nào? 18
2.3.4 Các hàm I/O trong OpenCV……… 19
2.3.5 Các hàm thực hiện xử lý ảnh……… 21
2.3.6 Các hàm Histograms and Matching……… 22
2.3.7 Hàm Contours……….22
2.3.8 Cơ sở toán học của thuật toán CamShift………22
CHƯƠNG 3 LÝ THUYẾT LIÊN QUAN………24
3.1 Cơ bản về Atmega32……….25
3.1.1 Atmega32 là gì? 25
3.1.2 Sơ đồ chân của ATmega32……….26
3.1.3 Giới thiệu về Timer/Counter 0 của ATmega32……… 30
Trang 23.2 Giao tiếp RS232……… 39
CHƯƠNG 4 THIẾT KẾ VÀ CHẾ TẠO ROBOT……… 41
4.1 Phương án thiết kế 1:……… 42
4.1.1 Hình thể hiện……….42
4.1.2 Ưu điểm……… 42
4.1.3 Nhược điểm……… 42
4.2 Phương án thiết kế 2:……… 42
4.1.1 Hình thể hiện……….42
4.1.2 Ưu điểm……….43
4.1.3 Nhược điểm……… 43
4.3 Chọn phương án thiết kế và kết quả thi công……… 43
CHƯƠNG 5 XÂY DỰNG PHẦN MỀM ĐIỀU KHIỂN……….45
5.1 Thị giác máy điều khiển rô bốt di động bám đối tượng……… 46
5.2 Thuật toán tính hướng và kích cỡ của đối tượng cần theo dõi………47
5.2.1 Thuật toán chung……… 47
5.2.2 Nhận dạng và bám mục tiêu di động……….47
5.2.3 Chuyển đổi không gian màu từ RGB đến HSV……….49
5.2.4 Histogram……… 50
5.2.5 Lọc nhiễu Filter……… 51
5.2.6 Thuật toán CamShift……… 51
5.2.7 Thiết kế hoàn chỉnh phần mềm điều khiển……… 54
CHƯƠNG 6 XÂY DỰNG MẠCH PHẦN CỨNG……… 57
6.1 Sơ đồ mạch dùng trong đồ án………58
6.1.1 Khối điều khiển trung tâm……….58
6.1.2 Khối nguồn………59
Trang 36.1.4 Khối điều khiển động cơ………59
6.2 Tập lệnh điều khiển rô bốt……….61
CHƯƠNG 7 KẾT QUẢ THỰC HIỆN……….63
7.1 Kết quả thực nghiệm với sự linh động của rô bốt trên một số địa hình 64
7.2 Thực nghiệm với phần xử lý ảnh ứng dụng điều khiển rô bốt 67
7.2.1 Kết quả thử nghiệm với môi trường tĩnh….………67
7.2.2 Kết quả thử nghiệm với môi môi trường động….……… 69
KẾT LUẬN……… 73
PHỤ LỤC A CHƯƠNG TRÌNH XỬ LÝ ẢNH……… 75
PHỤ LỤC B CHƯƠNG TRÌNH ĐIỀU KHIỂN ROBOT……… 89
PHỤ LỤC C CHƯƠNG TRÌNH TRUYỀN THÔNG RS232………101
TÀI LIỆU THAM KHẢO……… 107
DANH SÁCH HÌNH VẼ Hình 1.1: PANrobot (nguồn: mobilerobot.org)……… 7
Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)………8
Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)……… 8
Hình 1.4: Rô bốt thám hiểm sao hoả (nguồn: robotics.youngester.com)……… 9
Hình 2.1 Lân cận các điểm ảnh của tọa độ (x,y) ……….14
Hình 2.1 Lân cận các điểm ảnh của tọa độ (x,y)……… 15
Hình 2.3 Thể hiện sự chuyển đổi……… 16
Hình 2.4: Quá trình phát triển của OpenCV……… 17
Hình 2.5: Cấu trúc cơ sở của OpenCV……… 18
Hình 3.1: Sơ đồ chân của ATmega32………27
Hình 3.2: Sơ đồ khối của Timer/Counter0………30
Hình 3.3 Giản đồ thời gian của chế độ PWM……… 32
Hình 3.5: Cổng giao tiếp RS232……… 41
Trang 4Hình 5.2: Sơ đồ thuật toán chung……… 48
Hình 5.3: Mặt phẳng ảnh……… 49
Hình 5.4: Biểu diễn đối tượng di chuyển trên mặt phẳng ảnh……… 50
Hình 5.5: Chuyển đối không gian màu RGB đến HSV……….51
Hình 5.5: Histogram……… 51
Hình 5.7: Kết quả trước và sau khi lọc nhiễu………52
Hình 5.8: Sơ đồ thuật toán CamShift……….53
Hình 5.9:Kết quả tính toạ độ tâm bằng thuật toán CamShift……… 54
Hình 5.10: Kết quả bước đầu theo dõi đối tượng bằng thuật toán CamShift………54
Hình 5.11: Giao diện phần mềm thiết kế hoàn chỉnh………56
Hình 5.12:Kết quả thử nghiệm với phần mềm……… 57
Hình 6.1: Sơ đồ khối điều khiển trung tâm………59
Hình 6.2: Sơ đồ khối nguồn……… 60
Hình 6.3: Sơ đồ khối truyền thông RS232……… 60
Hình 6.4: Sơ đồ phần cứng hoàn chỉnh……… 61
Hình 6.5: Sơ đồ nguyên lý mạch điều khiển động cơ……… 62
Hình 7.1: Rô bốt vượt chướng ngại vật (lề đường) 64
Hình 7.2: Rô bốt leo cầu thang 65
Hình 7.2: Rô bốt vượt địa hình nghiêng 66
DANH SÁCH BIỂU ĐỒ Biểu đồ 1: Giá trị toạ độ tâm đối tượng môi trường tĩnh (160x120)………68
Biểu đồ 2: Giá trị toạ độ tâm đối tượng môi trường tĩnh (176x144)………68
Biểu đồ 3: Giá trị toạ độ tâm đối tượng môi trường tĩnh (320x240)………69
Biểu đồ 4: Giá trị toạ độ tâm đối tượng môi trường tĩnh (640x480)………69
Biểu đồ 5: Giá trị toạ độ tâm đối tượng môi trường động (160x120)……… 70
Trang 5Biểu đồ 7: Giá trị toạ độ tâm đối tượng môi trường động (320x240)……… 71Biểu đồ 8: Giá trị toạ độ tâm đối tượng môi trường động (640x480)……… 71Biểu đồ 9: Giá trị toạ độ tâm đối tượng môi trường động tốc độ không đổi……….72
CHƯƠNG 1 GIỚI THIỆU CHUNG
Trang 61.1 Giới thiệu chung về rô bốt
Rô bốt hay người máy là một loại máy có thể thực hiện những công việc một cách
tự động bằng sự điều khiển của máy tính
Rô bốt là một tác nhân cơ khí, nhân tạo, thường là một hệ thống cơ khí-điện tử Với
sự xuất hiện và chuyển động của mình, rô bốt gây cho người ta cảm giác rằng nó giácquan giống như con người Từ "rô bốt" (người máy) thường được hiểu với hai nghĩa: rôbốt cơ khí và phần mềm tự hoạt động Về lĩnh vực người máy, Nhật Bản là nước đi đầuthế giới về lĩnh vực này
Ngày nay rô bốt đang là tâm điểm của một cuộc cách mạng lớn sau Internet Rôbốt ngày càng được sử dụng rộng rãi trong lĩnh vực công nghiệp, y tế, giáo dục đào tạo,giải trí, an ninh quốc phòng, thám hiểm không gian
Rô bốt là sản phẩm công nghệ có độ phức tạp cao, chứa hàm lượng tri thức vôcùng phong phú về tất cả các lĩnh vực của khoa học và công nghệ
Trang 7Ngày nay, người ta vấn còn đang tranh cãi về vấn đề “Một loại máy như thế nào thì
đủ tiêu chuẩn để được gọi là một rô bốt ?” Một cách gần chính xác, rô bốt phải có một vài(không nhất thiết phải đầy đủ) các đặc điểm sau đây:
· Không phải là tự nhiên, tức là do con người sáng tạo ra
· Có khả năng nhận biết môi trường xung quanh
· Có thể tương tác với những vật thể trong môi trường
· Có sự thông minh, có khả năng đưa ra các lựa chọn dựa trên môi trường và đượcđiều khiển một cách tự động theo những trình tự đã được lập trình trước
· Có khả năng điều khiển được bằng các lệnh để có thể thay đổi tùy theo yêu cầu củangười sử dụng
· Có thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều
· Có sự khéo léo trong vận động
1.2 Giới thiệu rô bốt bám đối tượng
Hệ thống điều khiển rô bốt có thị giác được sử dụng để theo dõi mục tiêu di độngtrong các ứng dụng công nghiệp, quốc phòng và xã hội Hệ thống thị giác có thể đượcphân thành 2 lớp, theo như cấu trúc của hệ, đó là hệ có camera gắn cố định và hệ cócamera gắn trên tay máy (eye-in-hand) Trong hệ camera cố định, camera được gắn cốđịnh so với hệ toạ độ thực, thu thập ảnh của cả mục tiêu và cả môi trường Mục tiêu của
hệ này là cung cấp tín hiệu điều khiển sao cho tay máy đạt được vị trí mong muốn Mụcđích của cấu trúc eye-in-hand là điều khiển tay máy sao cho ảnh của mục tiêu cố định hay
di động luôn được duy trì ở vị trí mong muốn trên mặt phẳng ảnh thu được Trên cơ sởảnh thu được từ camera, được số hoá và tích hợp trong vòng điều khiển phản hồi, hệthống điều khiển các khớp của tay máy
Các nghiên cứu của môi trường động bị bỏ khá xa so với của môi trường tĩnh do bịảnh hưởng khá lớn của tốc độ tính toán cũng như độ chính xác của việc phân tích ảnh Dovậy có nhiều thuật toán để cải thiện tốc độ xử lý và xem xét đến các quà trình nhiễu tácđộng lên quá trình thu thập hình ảnh
Trang 8Một thách thức của thị giác máy là việc phân loại đối tượng Một rô bốt có thể phảiđối mặt với nhiều đối tượng khác nhau, trong khi đó chỉ có một mục tiêu quan tâm, còncác đối tượng khác thì không
Để nhận biết được thông tin về vị trí của mục tiêu trong môi trường động, các đặctrưng của mục tiêu rất quan trọng Các điểm lỗ, các góc cạnh, các đặc điểm hình học củamục tiêu được phân tích qua quá trình nhận dạng Đặc tính về trọng tâm của mục tiêu cóthể tính dễ dàng qua moment bâc nhất trong môi trường tĩnh, nhưng trong môi trườngđộng việc này rất khó vì chi phí thời gian tính toán lớn
Bài toán bám mục tiêu di động với quỹ đạo không biết trước yêu cầu phải giữ đượcđối tượng ở một vị trí nhất định trên mặt phẳng ảnh Thuật toán CamShift được sử dụng
để tính toán toạ độ trọng tâm của đối tượng
Hình 1.1: PANrobot (nguồn: mobilerobot.org
Trang 9Hình 1.2: Rô bốt MIDbo (nguồn: telepresenceoptions.com)
Hình 1.3: Rô bốt Pops (nguồn: slashgear.com)
Trang 10Hình 1.4: Robot thám hiểm sao hỏa (nguồn: robotics.youngester.com)
1.3 Mục tiêu của đồ án
Mục tiêu nghiên cứu của đồ án có thể chia thành ba phần như sau:
Thứ nhất: Thiết kế và chế tạo rô bốt có kết cấu phù hợp với một số loại địa hìnhnhư: bậc cầu thang, những mặt phẳng nghiêng và có độ dốc lớn…
Thứ hai: Xây dựng phần mềm rô bốt di động bám đối tượng sử dụng OpenCV.Thuật toán được lựa chọn để sử dụng trong đồ án là thuật toán CamShift
Thứ ba: Xây dựng khối phần cứng để kiểm nghiệm giải thuật của thuật toán đã xâydựng sử dụng vi điều khiển Atmega32
Như vậy công việc chính của đồ án là:
· Chế tạo rô bốt và cho thử nghiệm trên một số địa hình nghiêng, ghồ ghề
· Tìm hiểu thư viện OpenCV
· Tìm hiểu về thuật toán CamShift
Trang 11· Lập trình điều khiển rô bốt di động sử dụng thuật toán CamShift.
· Thiết kế mạch phần cứng và lập trình điều khiển động cơ sử dụng Atmega32
· Lập trình truyền thông nối tiếp RS232
1.4 Giới hạn của đồ án
- Đồ án tập trung chủ yếu vào xây dựng phần mềm điều khiển sử dụng thư việnOpenCV
- Việc chế tạo rô bốt bằng tay nên không được chính xác như ý muốn
- Rô bốt chỉ thực hiện việc bám đối tượng trong một số môi trường và đối tượngnhất định mà ít bị ảnh hưởng của nhiễu
- Mạch phần cứng và thuật toán điều khiển động cơ chỉ thực hiện việc điều khiểnhướng của rô bốt, nghĩa là không điều khiển tốc độ của rô bốt
Trang 12CHƯƠNG 2 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ THƯ
VIỆN OPENCV
Trang 132.1 Giới thiệu về xử lý ảnh
2.1.1 Tổng quan về 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 khoahọ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êngcho nó
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay
Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác Đầu tiênphải kể đến xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín hiệu chung, cáckhái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn… Thứhai, các công cụ toán như đại số tuyến tính, sác xuất, thống kê Một số kiến thứ cần thiếtnhư trí tuệ nhân tao, mạng nơ ron nhân tạo cũng được đề cập trong quá trình phân tích vànhận dạng ảnh
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh
và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo đượctruyền qua cáp từ Luân đôn đến New York từ những năm 1920 Vấn đề nâng cao chấtlượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh Việc nâng cao chấtlượng ảnh được phát triển vào khoảng những năm 1955 Điều này có thể giải thích được
vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh
sô thuận lợi Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từmặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh Từ năm
1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển
Trang 14toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi vàthu nhiều kết quả khả quan
2.1.2 Các khái niệm liên quan
a Điểm ảnh (Picture Element):
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ằngmá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êntụ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ânbiệ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: PictureElement) 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)
Đị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àunhấ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 chomắ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ầnnhư ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh
b Độ phân giải của ảnh:
Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trênmột ảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải đượcchọ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áchthí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ìnhrộng hơn thì độ mịn (liên tục của các điểm)
Trang 15· Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám
d Định nghĩa ảnh số :
Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnhthật
e Quan hệ giữa các điểm ảnh :
Một ảnh số giả sử được biểu diễn bằng hàm f(x, y) Tập con các điểm ảnh là S; cặpđiểm ảnh có quan hệ với nhau ký hiệu là p, q Chúng ta nêu một số các khái niệm sau
· Các lân cận của điểm ảnh (Image Neighbors) :
* Giả sử có điểm ảnh p tại toạ độ (x, y) p có 4 điểm lân cận gần nhất theo chiềuđứng và ngang (có thể coi như lân cận 4 hướng chính: Đông, Tây, Nam, Bắc)
{(x-1, y); (x, y-1); (x, y+1); (x+1, y)} = N 4 (p)
trong đó: số 1 là giá trị logic; N 4 (p) tập 4 điểm lân cận của p
Đông x Tây Nam
(x -1, y-1) (x, y-1) (x+1, y-1)
y (x -1, y) (x, y) (x+1, y)
(x-1, y+1) (x, y+1) (x+1, y+1)
Bắc
Hình 2.1 Lân cận các điểm ảnh của tọa độ (x,y)
* Các lân cận chéo: Các điểm lân cận chéo N P (p) (Có thể coi lân cận chéo la 4hướng: Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
N p (p) = { (x+1, y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
* Tập kết hợp: N 8 (p) = N 4 (p) + N P (p) là tập hợp 8 lân cận của điểm ảnh p
Trang 16· Các mối liên kết điểm ảnh :
Các mối liên kết được sử dụng để xác định giới hạn (Boundaries) của đối tượng vậtthể hoặc xác định vùng trong một ảnh Một liên kết được đặc trưng bởi tính liền kề giữacác điểm và mức xám của chúng
Giả sử V là tập các giá trị mức xám Một ảnh có các giá trị cường độ sáng từ thangmức xám từ 32 đến 64 được mô tả như sau :
V={32, 33, … , 63, 64}
Có 3 loại liên kết
* Liên kết 4: Hai điểm ảnh p và q được nói là liên kết 4 với các giá trị cường độ sáng
V nếu q nằm trong một các lân cận của p, tức q thuộc N 4 (p)
* Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận 8 của p, tức q thuộc N 8(p)
* Liên kết m (liên kết hỗn hợp): Hai điểm ảnh p và q với các giá trị cường độ sáng Vđược nói là liên kết m nếu
1 q thuộc N 4 (p) hoặc
2 q thuộc N P (p)
f Biến đổi ảnh (Image Transform) :
Trong xử lý ảnh do số điểm ảnh lớn các tính toán nhiều (độ phức tạp tính toán cao)đòi hỏi dung lượng bộ nhớ lớn, thời gian tính toán lâu Các phương pháp khoa học kinhđiển áp dụng cho xử lý ảnh hầu hết khó khả thi Người ta sử dụng các phép toán tươngđương hoặc biến đổi sang miền xử lý khác để dễ tính toán Sau khi xử lý dễ dàng hơnđược thực hiện, dùng biến đổi ngược để đưa về miền xác định ban đầu, các biến đổithường gặp trong xử lý ảnh gồm:
- Biến đổi Fourier, Cosin, Sin
- Biến đổi (mô tả) ảnh bằng tích chập, tích Kronecker (theo xử lý số tín hiệu [3])
- Các biến đổi khác như KL (Karhumen Loeve), Hadamard
Một số các công cụ sác xuất thông kê cũng được sử dụng trong xử lý ảnh Do khuônkhổ tài liệu hướng dẫn có hạn, sinh viên đọc thêm các tài liệu [1, 2, 3, 4, 5] để nắm đượccác phương pháp biến đổi và một số phương pháp khác được nêu ở đây
g Nén ảnh :
Ảnh dù ở dạng nào vẫn chiếm không gian nhớ rất lớn Khi mô tả ảnh người ta đã đưa
kỹ thuật nén ảnh vào Các giai đoạn nén ảnh có thể chia ra thế hệ 1, thế hệ 2 Hiện nay,các chuẩn MPEG được dùng với ảnh đang phát huy hiệu quả
h Không gian màu HSV :
Không gian màu HSV ( Hue , Saturation , Value ) thường được sử dụng bởi nhữngngười cần phải lựa chọn màu sắc ( chẳng hạn để in hoặc vẽ ) từ một đĩa màu vì vậy nó tương ứng tốt hơn ( kinh nghiệm màu sắc ) không gian màu RGB đem lại Hàm rgb2hsv
và hsv2rgb chuyển đổi ảnh giữa các không gian màu RGB và HSV
Trang 17Khi giá trị Hue nằm trong khoảng 0 và 1 thì màu tương ứng sẽ biến đổi từ red, yellow , green , cyan , blue , magenta và black sang red Vì vậy , giá trị thực của red là từ
0 đến 1 Cũng vậy , khi saturation biến thiên từ 0 đến 1 , màu tương ứng ( hues ) biến đổi
từ chưa bão hoà đến hoàn toàn bão hoà ( unsaturated to fully saturated ) Cuối cùng , nếuvalue ( hay độ sáng ) biến đổi từ 0 đến 1 , màu tương ứng sẽ càng sáng hơn
Hình 2.2 Minh họa không gian màu HSV.
- Hàm rgb2hsv chuyển đổi bản đồ màu hoặc ảnh RGB sang không gian màu HSV Hàmhsv2rgb thi hành thao tác ngược lại
Trang 18Hình 2.3 Thể hiện sự chuyển đổi
2.2 Thế nào là thị giác máy
Thị giác máy là một lĩnh vực đa dạng và đang rất phát triển Khái niệm thị giácmáy (Computer vision) có liên quan tới nhiều ngành học và hướng nghiên cứu khác nhau
Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng trở nên mạnh mẽhơn, các máy tính lúc này có thể xử lý được những tập dữ liệu lớn như các hình ảnh, cácđoạn phim thì khái niệm và kỹ thuật về thị giác máy ngày càng được nhắc đến và nghiêncứu nhiều hơn cho tới ngày nay Hiện tại, lĩnh vực này được các chuyên gia đánh giá làvẫn còn mới mẻ và sẽ có rất nhiều thay đổi trong thời gian tới
Lĩnh vực nghiên cứu của thị giác máy rất rộng, và đặc điểm chung là các bài toán vềthị giác máy tính đều không có một đề bài chung và cách giải duy nhất Mỗi giải pháp giảiquyết vấn đều được một kết quả nhất định cho những trường hợp cụ thể Ta có thể thấy sựtương quan giữa thị giác máy với các lĩnh khác
Trang 192.3 Thư viện OpenCV
Kể từ khi được giới thiệu vào tháng 1 năm 1999, OpenCV đã được sử dụng trong rấtnhiều ứng dụng, các sản phẩm và các nghiên cứu Ví dụ trong lĩnh vực hàng không vũ trụ,bản đồ web, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dòtìm, theo dõi tự động và hệ thống bảo mật, quản lý hệ thống sản xuất, xử lý camera, ứngdụng trong quân sự, hệ thống hàng không không người lái, trên mặt đất, các tàu ngầm.Ngoài ra, nó còn được sử dụng trong nhận dạng âm thanh OpenCV còn là một chìa khóaquan trọng trong các rô bốt sử dụng thị giác máy như Stanford, Asimo
Trang 20Hình 2.4: Quá trình phát triển của OpenCV
2.3.2 Vì sao lựa chọn OpenCV ?
- Thị trường thị giác máy đang ngày càng mở rộng và liên tục phát triển
- Thư viện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dànghơn
- Đặc biết tối ưu khi sử dụng cấu trúc của Intel
- Tạo ra các mẫu ứng dụng bằng các thư viện được cập nhật thường xuyên và thựchiện được các thuật toán rất nặng như dò tìm khuôn mặt
- Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư viện OpenCVtrong ứng dụng của mình (điển hình như Intel, Microsoft, IBM, Siemens, Google v v.) vàcác trung tâm nghiên cứu như (Stanford, MIT, CMU, Cambridge, INRIA…)
- Hơn 14000 thành viên trên forum OpenCVyahoogroups.com với trung bình 10 đến
20 bức thông điệp được trao đổi hàng ngày
- Điều đó có thể khẳng định OpenCV thực sự đã góp phần vô cùng lớn trong lĩnhvực thị giác máy
Trang 212.3.3 Cấu trúc và nội dung OpenCV như thế nào?
Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấu trúc vànội dung của OpenCV ở 5 phần Cấu trúc của OpenCV được chia thành 5 phần chính, 4trong số đó được chỉ ra trong hình 6
CV (computer vision) là thành phần chứa những xử lý ảnh cơ sở và thuật toán thịgiác máy ở mức cao
MLL (machine learning library) là thư viện machine learning, cái này bao gồm rấtnhiều lớp thống kê và gộp các công cụ xử lý
HighGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video.CXCore chứa cấu trúc và nội dung dữ liệu cơ sở
Hình 2.5: Cấu trúc cơ sở của OpenCV
2.3.4 Các hàm I/O trong OpenCV
OpenCV cung cấp các hàm mà cho phép chúng ta tương tác trực tiếp với hệ điềuhành, các file hệ thống, các phần cứng như Webcam Các hàm này nằm trong thư việnHighGUI, HighGUI cho phép mở một window, hiển thị bức ảnh, đọc các file liên quanđến đồ hoạ (ảnh, video) các file ảnh như jpg, bmp v v các file video như avi, wma, mp4,dat v v Ngoài ra nó còn xử lý các sự kiện chuột, bàn phím, OpenCV còn cho phép chúng
Trang 22ta lựa chọn thuật toán linh động hơn bằng cách cung cấp các hàm tạo thanh trượt slider,switch v v Để làm việc với OpenCV trước hết phải học các hàm trong thư viện này.Thư viện HighGUI có thể chia thành 3 phần: phần cứng, phần file hệ thống và phầnGUI (Graphical User Interface) chúng ta có thể xem xét các phần trong thư viện HighGUInhư sau.
Phần cứng: là phần thiết yếu nhất, liên quan đến hoạt động của Camera, trong phầnlớn hệ điều hành việc tương tác với phần cứng rất khó khăn và thực sự rất khó nhưngOpenCV cung cấp hàm đơn giản để thực hiện việc tương tác này ví dụ:cvCaptureFromCAM()
Phần file hệ thống: là khái niệm liên quan đến việc tải và lưu ảnh, một đặc điểm rấttuyệt vời trong thư viện HighGUI là cho phép chúng ta làm việc với ảnh tương tự khi làmviệc với video Vì vậy chúng ta có thể nhanh chóng tiếp cận với việc xử lý ảnh mà khôngmất nhiều thời gian cho việc tải, lưu ảnh, video
Phần GUI: là hệ thống cửa sổ (Window), thư viện cung cấp một số hàm đơn giản màcho phép chúng ta mở một window hiển thị ảnh trên window này Ngoài ra nó còn chophép chúng ta thực thi các sự kiện nhận được từ chuột và bàn phím
Một số hàm đơn giản thường xuyên sử dụng trong thư viện HighGUI như sau:
· Đầu tiên chúng ta cần học cách làm thế nào để đọc và viết các files ảnh, chụpvideo chuyển đổi giữa các định dạng màu, và truy cập dữ liệu điểm ảnh tất cả quagiao diện OpenCV
· Đọc và viết một bức ảnh
· Bức ảnh vào/ra thì rất dễ dàng trong OpenCV, để đọc một file ảnh, đơn giản gọihàm cvLoadImage(tên file) OpenCV hỗ trợ hầu hết các định dạng phổ biến kể cảJPEG, PNG và BMP Bạn không cần cung cấp thông tin định dạng.cvLoadImage() tự động quyết định dạng file thông qua file header này
· Để viết một bức ảnh đến một file, ta dùng hàm cvSaveImage() Hàm này cũng tựquyết định file định dạng, để sử dụng từ tên file mở rộng
· Cả cvLoadImage và cvSaveImage đều nằm trong module HighGUI
· Khi sử dụng xong bức ảnh đầu vào nhận được từ cvLoadImage(), loại bỏ nó bằng
Trang 23nó bởi việc nó làm là loại bỏ an toàn (Safe Release) Nó chỉ loại bức ảnh này khibức ảnh là non-null Sau khi loại bỏ xong nó đặt giá trị con trỏ về 0.
· Làm việc với Video tương tự như là việc với ảnh
· Nhận các frame từ một webcam, hay các thiết bị video số khác thì dễ dàng như tải
nó lên từ một file có sẵn Để nhận một khung từ camera ta chỉ việc thaycvCreateFileCapture() bằng hàm cvCreateCameraCapture()
· Chúng ta có thể tạo cvCapture*Object với cvCreateFileCapture() Chúng ta sửdụng cvQueryFrame () để nhận từng frame và cvWaitkey(33) để chờ 33ms giữatừng frame Chúng ta sử dụng cvReleaseCapture() để loại bỏ capture khi ngừng sửdụng
· Copy một bức ảnh
· Lưu trữ bức ảnh trong OpenCV
· OpenCV lưu bức ảnh giống cấu trúc C, IplImage, Ipl viết tắt của image processinglibrary
Kiểu dữ liệu IplImage được định nghĩa trong CXCORE Thêm vào dữ liệu ảnhthực, nó chứa một số đặc điểm để mô tả như sau:
· Width - độ rộng bức ảnh tính theo pixel
· Height - độ cao bức ảnh tính theo pixel
· Depth - một kiểu tiền định nghĩa chỉ rõ lượng bits/pixel/channel
Ví dụ : Depth=IPL_DEPTH_8U, dữ liệu cho mỗi pixel kênh ảnh được lưu giữ như8-bits không dấu
· nChannel – số lượng của dữ liệu channel ảnh (từ 1- 4) Mỗi một channel chứa mộtkiểu của pixel dữ liệu
ví dụ: bức ảnh RGB có 3 kênh R (đỏ), G (xanh lá cây), B (xanh da trời)
· Grayscale là bức ảnh chỉ chứa một kênh điểm ảnh sáng nhất
· Truy cập giá trị điểm ảnh
· Chúng ta có thể tạo ra rất nhiều hàm truy cập điểm ảnh mà không cần tác động trực
Trang 24Cách dễ nhất để đọc từng điểm ảnh riêng lẻ là sử dụng hàm cvGet2D.
· cvScalar cvGet2D(const *CvArr, int row, int col)
· Hàm này có 3 thuộc tính: một pointer trỏ đến dữ liệu chứa trong CvArr*, mộtmảng chỉ rõ vị trí hàng và cột Hàng topmost của điểm ảnh là row=0, vàbottommost là row=height-1
2.3.5 Các hàm thực hiện xử lý ảnh
Thư viện HighGUI chỉ cung cấp các hàm thực hiện vào ra bức ảnh tuy nhiên vấn đề
xử lý ảnh mới thực sự là quan trọng và khó khăn OpenCV cung cấp các hàm thực hiện
xử lý ảnh nằm trong thư viện cv Một bức ảnh không chỉ đơn giản là một mảng giá trịmàu sắc khi chúng ta đề cập đến xử lý ảnh thì nó đã bao gồm các hàm xử lý liên quanđến cấu trúc của bức ảnh
Một số hàm xử lý ảnh thường xuyên sử dụng như sau:
· Smoothing (làm mịn)
Smoothing hay còn gọi là blurring nó là một thuật toán xử lý ảnh đơn giản vàthường xuyên sử dụng Có rất nhiều nguyên nhân chúng ta dùng đến smoothing nhưng nóthường dùng để loại bỏ nhiễu do máy ảnh sinh ra Smoothing quan trọng khi bạn muốngiảm độ phân giải của một bức ảnh theo rất nhiều cách khác nhau
Bằng việc thay thế kiểu smooth và các thông số sẽ có các bức ảnh tương đối khácnhau tuy theo mục đích sử dụng nhưng thường dùng nhất vẫn là CV_GAUSSIAN
· Image morphology (hình thái học bức ảnh)
OpenCV cung cấp hàm chuyển đổi morphology nhanh chóng và tiện lợi khi làmviệc với bức ảnh Cơ bản của morphology là dilation (giãn) và erosion (co) chúng ngàycàng được sử dụng rộng rãi trong việc loại bỏ nhiễu, cô lập những thành phần riêng rẽ, vàliên kết các thành phần với nhau
· Theshold (ngưỡng)
Chúng ta thường làm rất nhiều bước xử lý ảnh khác nhau và đưa ra những quyếtđịnh cuối cùng về điểm ảnh trên một bức ảnh hay nói cách khác là loại bỏ giá trị phía trênhoặc dưới một ngưỡng nào đó giữ lại nhưng điểm ảnh nằm trong khoảng giá trị mong
Trang 252.3.6 Các hàm Histograms and Matching
· Histogram
Trong việc phân tích hình ảnh thông tin về đối tượng và video, chúng ta thườngmuốn biểu diễn chúng giống như là một histogram Histogram có thể sử dụng để biểudiễn rất nhiều dạng khác nhau như phân bố màu của đối tượng, độ dốc mẫu cạnh của mộtđối tượng, hay xác suất phân bố vị trí của đối tượng
Tìm histogram được sử dụng rất nhiều trong các chương trình ứng dụng thị giácmáy tính Histogram được sử dụng để dò tìm sự thay đổi giữa các cảnh trong video bằngcách đánh dấu khi cạnh và màu sắc thay đổi từ khung này đến khung khác Chúng sửdụng để nhận dạng nhưng điểm quan tâm trên một bức ảnh bằng cách gán mỗi điểm ảnhmột “tag” chứa những Histogram của những đặc điểm gần nhất Histogram của cạnh,màu, góc và rất nhiều đặc điểm khác Một chuỗi các màu sắc, cạnh có thể dùng để xácnhận dù có hay không một video đã được copy trên web
· Ghép mẫu template matching
Hàm ghép cvMatchTemplate() không dựa trên histogram, hơn nữa, hàm này ghépmột bức ảnh thực đến một bức ảnh đầu vào bằng cách “Sliding” đường dẫn qua bức ảnhđầu vào này sử dụng thao tác ghép mô tả trong phần này
2.3.7 Hàm Contours
Mặc dù thuật toán như dò tìm cạnh candy có thể sử dụng để tìm ra cạnh pixel đểphân bức ảnh thành các phần khác nhau Bước tiếp theo là xây dựng các cạnh này thànhcontours
2.3.8 Cơ sở toán học của thuật toán CamShift
Camshift viết gọn của “Continuously Adaptive Mean Shift” là cơ sở của thuật toántheo dõi khuôn mặt trong OpenCV Nó bao gồm thuật toán cơ sở Mean Shift với thíchứng các bước thay đổi kích cỡ của vùng Nhân là một hàm step đơn giản nằm trong mộtbản đồ vỏ xác suất (skin-probability) Vỏ xác suất của mỗi một điểm ảnh được tính toándựa trên màu sắc bằng cách sử dụng một phương pháp gọi là Histogram backprojection.Màu sắc được đưa ra như Hue từ mô hình màu HSV
Trang 26Kể từ nhân là một hàm step, Mean Shift ở mỗi một lần lặp thì chỉ đơn giản là giá trịtrung bình x và y của vỏ xác suất đóng góp trong vùng hiện tại Điều này được xác địnhbằng cách chia moment thứ nhất của vùng này cho moment thứ không ở mỗi lần lặp vàdịch chuyển vùng đến trọng tâm xác suất.
Sau khi Mean Shift hội tụ đến một vị trí (x,y), phạm vi của vùng được cập nhật dựatrên giá trị hiện tại của moment thứ 0 Giá trị của bản cập nhật này có thể thay đổi, phạm
vi tuyến tính của nó được giả định là tỉ lệ thuận với căn bậc 2 của tổng của các khoảnđóng góp xác suất của khu vực hiện tại (ví dụ Moment thứ không) Chiều rộng và chiềudài tại thời điểm thứ i sẽ được tính thông qua giá trị tại thời điểm thứ i-1, nghĩa là giá trịtrước đó
Trong thuật toán CamShift, một bức ảnh về xác suất phân bố màu sắc của bức ảnhtrong chuỗi video được tạo ra Đầu tiên nó tạo ra một mẫu mô tả hue sử dụng một biểu đồmàu sắc (color Histogram) và sử dụng không gian màu Hue Saturation Value (HSV) đượctham chiếu từ không gian màu tiêu chuẩn RGB Vì phân bố màu sắc của các bức ảnhtrong video thay đổi theo thời gian, nên thuật toán CamShift đã được sửa đổi để dễ dàngthích ứng với sự thay đổi phân bố xác suất màu sắc của mục tiêu nó theo dõi
Trong OpenCV thuật toán CamShift được điều chỉnh từ thuật toán Mean Shift Và
nó đươc tính toán như sau:
1) Chọn vị trí ban đầu của Search Window
2) Dùng thuật toán Mean Shift (lặp lại một hoặc nhiều lần), lưu moment thứ 0 này.3) Đặt kích cỡ của cửa sổ tìm kiếm bằng một hàm của moment thứ 0 tìm được trongbước 2
4) Lặp lại bước 2 và 3 cho đến khi hội tụ (vị trí dịch chuyển chính ít hơn giá trịthreshold hiện tại)
Trang 27CHƯƠNG 3 LÝ THUYẾT LIÊN QUAN
Trang 2812 Hầu hết các lệnh được thực thi trong một chu kỳ xung nhịp, do đó ATmega32 có thểđạt được tốc độ xử lý đến một triệu lệnh mỗi giây (với tần số 1MHz) Đặc điểm này chophép người thiết kế có thể tiết kiệm tối đa mức độ tiêu thụ năng lượng mà vẫn đảm bảotốc độ xử lý.
Sau đây là các đặc tính của ATmega32:
- Hiệu năng cao, tiêu thụ ít năng lượng
- Kiến trúc RISC:
· 131 lệnh – hầu hết các lệnh thực thi trong một chu kỳ máy
· 32 thanh ghi 8 bit đa năng
Trang 29- Các bộ nhớ chương trình và bộ nhớ dữ liệu:
· 32Kbyte bộ nhớ Flash có khả năng tự lập trình trong hệ thống
Có thể thực hiện được 10.000 lần ghi xóa
· Vùng mã Boot tùy chọn với những bit khóa độc lập
· Lập trình trong hệ thống bởi chương trình on-chip boot
· Thao tác đọc ghi trong khi nghỉ
· 1024 Byte EEPROM
Có thể thực hiện 100.000 lần ghi xóa
· 2Kbyte SRAM nội
· Lập trình khóa an toàn phần mềm
- Ghép nối ngoại vi:
· 2 bộ định thời/bộ đếm 8 bit với bộ chia tần số độc lập và chế độ so sánh
· 1 bộ định thời/bộ đếm 16 bit với bộ chia tần số, chế độ so sánh và chế độbắt mẫu (Capture)
· Bộ đếm thời gian thực với bộ dao động độc lập
· Bốn kênh PWM
· Bộ ADC 8 kênh 10 bit
· Bộ truyền dữ liệu đồng bộ/bất đồng bộ USART
· Bộ truyền dữ liệu chuẩn SPI
· Watchdog timer khả trình với bộ dao động nội riêng biệt
Trang 30· Bộ so sánh Analog.
- Các đặc điểm khác:
· Power-on Reset và phát hiện Brown-out khả trình
· Bộ tạo dao động nội
· Nguồn ngắt nội và ngoại
· 6 chế độ ngủ: Idle, ADC noise reduction, Power-save, Power-down,Standby và Extended Standby
- Ngõ vào/ra: có 32 ngõ vào ra
- Điện áp hoạt động:
· 2.7V – 5.5V đối với ATmega32L
· 4.5V – 5.5V đối với ATmega32
- Tần số hoạt động:
· 0 – 8MHz đối với ATmega32L
· 0 – 16MHz đối với ATmega32
3.1.2 Sơ đồ chân của ATmega32:
Trang 31Hình 3.1 Sơ đồ chân của ATmega32
- GND: chân nối mass
- VCC: điện áp nguồn
- Port A (PA0…PA7): ngõ vào/ra Port A
Các chân Port A cũng là ngõ vào analog của bộ chuyển đổi A/D
Trang 32PA2 ADC2 (Ngõ vào ADC 2)
- Port B (PB0…PB7): ngõ vào/ra Port B
Các chức năng khác của Port B:
OC0 (Ngõ ra so sánh của Timer/Counter 0)
INT2 (Ngõ vào ngắt ngoài 2)
XCK (Chân I/O Clock của USART)
- Port C (PC0…PC7): ngõ vào/ra Port C
Các chức năng khác của Port C:
Trang 33Chân Chức năng
- Port D (PD0…PD7): ngõ vào/ra Port D
Các chức năng khác của Port D:
Trang 34PD0 RXD (Ngõ vào USART)
- Reset: Chân ngõ vào Khi đặt vào chân này điện áp mức thấp trong thời gian xácđịnh (xem trong datasheet) thì sẽ reset chương trình Nếu thời gian ngắn hơn thìviệc reset không thành công
- XTAL1: ngõ vào khuếch đại dao động đảo và cũng là ngõ vào mạch tạo xung nội
- XTAL2: ngõ ra của mạch khuếch đại dao động đảo
- AVCC: là chân nguồn cấp cho Port A và bộ chuyển đổi A/D Nên nối chân này vớichân VCC ngay cả khi không sử dụng ADC Nếu dùng ADC thì nên nối chân nàyvới chân VCC qua 1 tụ lọc thông thấp
- AREF: chân tham chiếu điện áp analog của bộ chuyển đổi A/D
3.1.3 Giới thiệu về Timer/Counter 0 của ATmega32:
Trang 35Hình 3.2 Sơ đồ khối của Timer/Counter0Các chế độ hoạt động của Timer/Counter0:
- Chế độ bình thường
- Chế độ xóa giá trị Timer khi đạt tới giá trị so sánh
- Chế độ Fast PWM
- Chế độ PWM
Trong đề tài này, Timer/Counter0 được dùng để tạo xung PWM Vì thế, phần này chỉ
đề cập đến chế độ hiệu chỉnh PWM của Timer/Counter0
Chế độ hiệu chỉnh xung PWM giúp tạo ra dạng xung PWM với độ phân giải cao Chế
độ này dựa trên hoạt động dual-slope (dạng hai sườn lên xuống theo giá trị thanh ghi) Bộđếm đếm liên tục từ giá trị BOTTOM đến MAX rồi đếm từ MAX xuống BOTTOM Nếu
Trang 36OCR0 với TCNT0 khi đếm lên, và ở mức 1 tại giá trị so sánh khi đếm xuống Nếu chọnngõ ra dạng đảo (inverting), chân OC0 sẽ hoạt động ngược lại Chế độ hoạt độngdual-slope có tần số thấp hơn so với chế độ single-slope Tuy nhiên, do đặc tính đối xứngnên kiểu dual-slope thích hợp hơn cho các ứng dụng điều khiển động cơ.
Độ phân giải của chế độ PWM này là 8bit Bộ đếm sẽ tăng dần đến giá trị MAX Khiđạt tới MAX, bộ đếm sẽ đảo chiều và đếm xuống tới BOTTOM Như vậy, một chu kỳ củatimer bằng thời gian giữa hai lần giá trị TCNT0 đạt MAX
Hình 3.3 Giản đồ thời gian của chế độ PWM
Cờ tràn TOV0 được set mỗi lần bộ đếm đạt tới giá trị BOTTOM Khi timer đạt tớigiá trị này, ta có thể sử dụng để kích hoạt chương trình ngắt qua cờ báo ngắt
Xung PWM được đưa ra trên chân OC0 Việc thiết lập ngõ ra dạng đảo (inverting)hay không đảo (non-inverting) được thực hiện qua hai bit COM01 và COM00 Giá trịthực sự của OC0 chỉ có thể thấy được khi ta đặt OC0 là ngõ ra
Trang 37Tần số của xung PWM được tính toán dựa vào công thức sau:
Trong đó, N là giá trị của bộ chia tần số (1, 8, 64, 256,1024)
Thanh ghi OCR0 sẽ đạt tới cực trị (cực đại hoặc cực tiểu) thay cho các trường hợp đặcbiệt khi phát ra dạng xung PWM Trong chế độ không đảo, nếu OCR0 được đặt giá trịBOTTOM, ngõ ra luôn ở mức thấp và nếu OCR0 được đặt giá trị MAX thì ngõ ra luôn ởmức cao Đối với chế độ đảo thì hoạt động ngược lại
3.1.4 Bộ truyền nhận dữ liệu USART
USART (The Universal Synchronous and Asynchronous serial Receiver andTransmitter – Bộ truyền nhận nối tiếp tổng hợp đồng bộ và bất đồng bộ)
Đặc điểm:
- Hoạt động song công
- Cho phép làm việc ở các chế độ : đồng bộ hay bất đồng bộ
- Bộ phát tốc độ baud (BAUD RATE) với độ phân giải cao
- Hỗ trợ Format khung truyền nối tiếp : 5,6,7,8, hay 9 Data Bits và 1 hoặc 2 bit Stop
- Hỗ trợ kiểm tra bit chẵn , lẻ bằng phần cứng
- Có thể phát hiện Data bị tràn , khung truyền bị lỗi
- Có 3 cờ báo ngắt : TX complete, TX Data Register Empty và RX complete
- Có chế độ truyền thông đa xử lý
- Double speed (chỉ áp dụng cho chế độ truyền thông bất đồng bộ)
Trang 38Trong sơ đồ trên, có ba khối nằm trong phần khung vuông là ba phần chính củaUSART: bộ phát xung, bộ truyền và bộ nhận Thanh ghi điều khiển được sử dụng chungcho các thành phần Bộ phát xung tạo ra xung nhịp cho bộ phát tốc độ baud (khi truyềnnhận bất đồng bộ), hoặc điều khiển để nhận xung clock bên ngoài khi truyền nhận đồng
Trang 39(serial Shift Register), bộ phát parity và bit điều khiển sử dụng cho nhiều khung truyềnkhác nhau Bộ nhận phức tạp hơn do có phần phục hồi xung và dữ liệu (clock and datarecovery) Thành phần phục hồi này sử dụng trong khi nhận dữ liệu bất đồng bộ Ngoàihai phần phục hồi, bộ nhận còn có phần kiểm tra parity, bit điều khiển, thanh ghi dịch và
bộ đệm nhận hai mức thấp (UDR) Bộ nhận hỗ trợ các chuẩn khung truyền giống như bộphát, và có thể phát hiện lỗi khung truyền, tràn dữ liệu hoặc lỗi parity
Các thanh ghi của USART:
- USART I/O Data Register –UDR
UDR là thanh ghi bộ đệm truyền(TXB) và nhận(RXB) (chúng có cùng 1 địachỉ vật lý) có chức năng lưu trữ Data
· TXB: Thanh ghi bộ đệm truyền Khi ta muốn send data đến PC thì trước hếtdata đó phải được nạp vào TXB
Muốn ghi DATA vào TXB thì bit UDRE trong thanh ghi UCSRA phảiđược set (UDRE=[1]: cho phép ghi vào TXB) Data đó được ghi vào UDR chođến khi UDRE=[0] Khi Data đang được vào TXB, và Transmitter được phép thì Transmitter sẽ Load Data đó vào thanh ghi dịch khi thanh ghi dịch bị trống(rỗng) Sau đó Data được truyền nối tiếp trên chân TxD (PD0) của MCU
· RXB: Thanh ghi bộ đệm nhận Khi PC send 1 gói Data đến MCU thì góiData đó nằm trong RXB do đó cần phải chuyển Data trong RXB vào 1thanh R (vd: R16)
Trang 40RXB gồm có 2 mức FIFO FIFO sẽ thay đổi trạng thái của nó bất cứ khi nàoRXB được truy xuất Vì trạng thái này của RXD mà không được dùng nhữnglệnh (SBI, CBI) ở đây Cẩn thận với các lệnh kiểm tra (SBIC và SBIS), vìchúng cũng sẽ làm thay đổi trạng thái của FIFO.
- USART Control and Status Register A – UCSRA
(Thanh ghi điều khiển và trạng thái A)
· Bit 7 – RXC: USART Receive Complete
Cờ RXC =[1] khi có data chưa được đọc trong RXB và RXC =[0] khiRXB rỗng (không còn bất kì data nào trong RXB chưa đọc)
Cờ RXC có thể được dùng để tạo ra ngắt khi nhận xong (kết hợp với bitRXCIE)
· Bit 6-TXC: USART Transmit Complete
Cờ TXC =[1] khi toàn bộ data trong thanh ghi dịch truyền đã dược dịch
ra ngoài và không còn data mới nào xuất hiện trong TXB (UDR) TXC tựđộng được xóa nếu có 1 ngắt khi truyền xong được thực thi hay nó cũng cóthể được xóa bằng cách ghi vào vị trí bit của nó
Cờ TXC có thể được dùng để tạo ra ngắt khi truyền xong (kết hợp vớibit RXCIE)
· Bit 5-UDRE: USART Data Register Empty
Cờ UDRE chỉ thị nếu TXR (UDR) sẵn sàng để nhận dữ liệu mới Nếu