BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐẾM
ĐỐI TƯỢNG TRONG ẢNH SỬ DỤNG KÍT
ARDUINO HIỂN THỊ TRÊN LCD
GVHD: ThS. Nguyễn Duy Thảo
SVTH:
Phan Thành Hưng
MSSV: 13141125
Tp. Hồ Chí Minh - 1/2018
BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
---------------------------------
ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG
ĐỀ TÀI:
Họ tên sinh viên 2: TRẦN VĂN THẠCH
MSSV: 13141304
Lớp: 13141DT3A
Tên đề tài: ĐẾM ĐỐI TƯỢNG TRONG ẢNH.
1. MÔ TẢ MỤC TIÊU CỦA ĐỀ TÀI:
Mục tiêu của đề tài là xây dựng một hệ thống đếm đối tượng trong ảnh được
chụp bằng camera, nhúng dữ liệu đếm được xuống kit Arduino để điều khiển LCD hiển
thị kết quả đếm được
Đề tài sử dụng thuật toán đánh nhãn để đối tượng trong ảnh. Xây dựng giao diện
để người dùng có thể dễ dàng thao tác. Viết hướng dẫn thao tác sử dụng hệ thống.
2. MÔ TẢ CÔNG VIỆC THỰC HIỆN ĐỀ TÀI CỦA TỪNG SINH VIÊN:
Họ tên Sinh viên 1: PHAN THÀNH HƯNG
Các công việc thực hiện trong đề tài:
STT
1
2
NỘI DUNG CÔNG VIỆC
Tham khảo tài liệu liên quan đến đề tài của những tác giả đã thực hiện.
Viết chương trình đếm đối tượng( thuật toán đánh nhãn), điều khiển kit
Arduino.
3
Chỉnh sửa hệ thống.
4
(Ký ghi rõ họ tên)
XÁC NHẬN CỦA GIẢNG VIÊN HƯỚNG DẪN
(Ký ghi rõ họ tên)
iii
TRƯỜNG ĐH. SƯ PHẠM KỸ THUẬT
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TP. HỒ CHÍ MINH
ĐỘC LẬP - TỰ DO - HẠNH PHÚC
KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Tp. HCM, ngày 15 tháng 1 năm 2018
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên:
Chuyên ngành:
Hệ đào tạo:
Khóa:
Phan Thành Hưng
MSSV: 13141125
Trần Văn Thạch
MSSV: 13141304
Kỹ thuật Điện Tử Truyền Thông Mã ngành: 01
Đại học chính quy
Mã hệ:
1
BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
iv
TRƯỜNG ĐẠI HỌC SPKT TPHCM
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Khoa Điện - Điện Tử
Bộ Môn Điện Tử Công Nghiệp – Y Sinh
Độc lập - Tự do - Hạnh phúc
Tp. Hồ Chí Minh, ngày 15 tháng 1 năm 2018
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên 1: Phan Thành Hưng.
Lớp: 13141DT3A
MSSV: 13141125
Họ tên sinh viên 2: Trần Văn Thạch
Lớp: 13141DT3A
MSSV: 13141304
Tên đề tài: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐẾM SỐ LƯỢNG TRONG ẢNH
SỬ DỤNG KÍT ARDUINO HIỂN THỊ TRÊN LCD.
Xác nhận
Tuần 13,14
Hiệu chỉnh toàn bộ chương trình.
Tuần 15,16,17
Viết báo cáo đồ án.
Tuần 18
Chỉnh sửa, in đồ án.
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
v
LỜI CAM ĐOAN
Chúng tôi cam đoan ĐATN là công trình nghiên cứu của bản thân chúng tôi
dưới sự hướng dẫn của Thạc sỹ Nguyễn Duy Thảo.
Các kết quả công bố trong ĐATN “Thiết kế và thi công hệ thống đếm số
lượng trong ảnh sử dụng kít Arduino hiển thị LCD” là trung thực và không sao
chép hoàn toàn từ công trình nào khác.
Người thực hiện đề tài
Phan Thành Hưng Trần Văn Thạch
vi
Lịch trình ........................................................................................................................ v
Cam đoan ...................................................................................................................... vi
Lời cảm ơn .................................................................................................................... vii
Mục lục......................................................................................................................... viii
Liệt kê hình .................................................................................................................... xi
Liệt kê bảng .................................................................................................................. xiii
Tóm tắt ......................................................................................................................... xv
CHƯƠNG 1. TỔNG QUAN ......................................................................................... 1
1.1. Đặt vấn đề. ......................................................................................................... 1
1.2. Mục tiêu. ............................................................................................................ 2
1.3. Nội dung nghiên cứu. ........................................................................................ 2
1.4
Giới hạn. ............................................................................................................ 2
1.5. Bố cục. ............................................................................................................... 3
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ............................................................................. 4
2.1
Giới thiệu xử lý ảnh ........................................................................................... 4
2.2
Tổng quan về Matlab. ........................................................................................ 5
2.3
Giới thiệu lịch sử hình thành Arduino. .............................................................. 6
2.4
3.2
Thiết kế hệ thống. ............................................................................................ 28
3.2.1 Thiết kế sơ đồ khối hệ thống. .......................................................................... 28
3.2.2 Thiết kế các khối hệt thống. ............................................................................ 30
3.3
Tổng quan về phần cứng. ................................................................................ 32
3.3.1 Tổng quan các khối chính. ............................................................................... 32
3.3.2 Board Arduino Uno R3.................................................................................... 33
3.4 Cài đặt các gói hỗ trợ phần cứng cho Matlab................................................... 37
3.4.1 Kết nối Arduino với Matlab. ............................................................................ 37
3.4.2 Kiểm tra kết nối Arduino với Matlab. .............................................................. 40
3.4.3 Kết nối LCD với I2C ........................................................................................ 40
CHƯƠNG 4. THI CÔNG HỆ THỐNG .................................................................... 42
4.1
Giới thiệu. ........................................................................................................ 42
4.2
Thi công hệ thống. ........................................................................................... 42
4.3
Lưu đồ hệ thống. .............................................................................................. 43
LIỆT KÊ HÌNH
Hình
Trang
Hình 2.1: Những thành viên khởi xướng Arduino .............................................................. 7
Hình 2.2. Cấu trúc phần cứng của Arduino Uno. ............................................................... 9
Hình 2.3. Hình ảnh LCD ................................................................................................... 10
Hình 2.4 : Hình ảnh I2C. ................................................................................................... 12
Hình 2.5: Chuyển ảnh màu thành ảnh xám ....................................................................... 13
Hình 2.6. Lược đồ xám. .................................................................................................... 14
Hình 2.7. Ảnh xám và ảnh nhị phân. ................................................................................ 14
Hình 2.8. Ngưỡng tự động theo T1 và T2 ......................................................................... 17
Hình 2.9.a.Đối tượng cần phình A và nhân tạo ảnh B,b.Minh họa quét các b,khắp A .... 19
Hình 2.10.Kết quả của phép toán Dilation. ....................................................................... 19
Hình 2.11.Kết quả của phép toán Erosion. ....................................................................... 19
Hình 2.12.Vật có cấu trúc đơn giản-hình vuông và phức tạp và hình xoắn ốc. ................ 21
Hình 2.13. Lưu đồ giải thuật cho thuật toán đánh nhãn .................................................... 22
Hình 2.14. Lưu đồ giải thuật cho toán đánh nhãn ............................................................. 23
Hình 2.15 Vật thể màu đen đã được đánh nhãn ............................................................... 23
Hình 2.16. Mô phỏng thuật toán đánh nhãn. ..................................................................... 24
Hình 2.17. Số lượng vật được xác định dựa vào RAM..................................................... 25
Hình 3.1. Sơ đồ quá trình đếm đối tượng......................................................................... 29
Hình 3.2. Sơ đồ nguyên lý khối ứng dụng. ...................................................................... 31
Hình 3.3. Tổng quan các khối. .......................................................................................... 32
Hình 3.4. Sơ đồ nguyên lý board Arduino Uno R3. ......................................................... 33
Hình 3.5. Sơ đồ chân ATmega328. ................................................................................... 34
Hình 3.6. Cầu USB-to-UART. .......................................................................................... 36
Hình 3.7. Bộ nguồn. .......................................................................................................... 37
Hình 5.15. Kết quả hiện thị đếm đối tượng ra LCD ......................................................... 59
xii
LIỆT KÊ BẢNG
Bảng
Trang
Bảng 2.1. Thông số kỹ thuật Arduino Uno......................................................................... 8
Bảng 2.2:Chức năng các chân của LCD. .......................................................................... 10
Bảng 2.3 Các hàm xử lý hình ảnh khác trong Matlab. ..................................................... 27
Bảng 5.1.Kết quả đếm tế bào ............................................................................................ 40
Bảng 5.2.Kết quả đếm thuốc. ........................................................................................... 60
Bảng 5.3.Kết quả đếm cây. ............................................................................................... 60
xiii
TÓM TẮT
Việc đếm số lượng đối tượng là một nhiêm vụ khá phổ biến trong các ngành
công nghiệp bằng các phương pháp khác nhau. Đếm số lượng đối tượng được sử dụng
để thu được số lượng nhất định các yếu tố từ ảnh. Vì thế, bài toán đếm đối tượng trong
ảnh là một đề tài khá mới mẻ và đang được chú ý để phát triển với phép đếm tự động
bởi tầm nhin máy tính để tiết kiệm thời gian, công sức.
Đề tài: “Thiết kế và thi công hệ thống đếm đối tượng trong ảnh sử dụng kit
Arduino hiển thị trên LCD” nghiên cứu xây dựng phương pháp xử lý ảnh đầu vào,
các phương pháp hinh thái học và đếm đối tượng trong ảnh để điều khiển ứng dụng
trên kit Arduino tương ứng với kết quả giá trị nhận được. Các nội dung nghiên cứu bao
phân tích định lượng, theo dõi chuyển động và phân tích định tính. Việc đếm số lượng các
đối tượng được thực hiện trong các môi trường khác nhau với khác đối tượng có kích thước,
số lượng khác nhau. Nhưng kết quả đem lại thường không cao, sai số lớn và mất nhiều thời
gian. Vì thế mà việc đếm bằng phương pháp đếm thủ công phải được thay thế bằng đếm tự
động bởi tầm nhìn máy tính. Đếm tự động sẽ giúp chúng ta tiết kiệm được thời gian, công
sức, tăng khả năng chính xác và áp dụng cho nhiều đối tượng khác nhau chẳng hạn như:
đếm tế bào, cá, trứng, ic, xe …
Ở nước ta hiện nay, lĩnh vực đếm trong xử lý ảnh đã có nhũng phát triển đáng kể. Tuy
nhiên nó chỉ mới phát triển dựa trên nền tảng phần cứng và chưa được áp dụng rỗng rãi
trong thực tế. Vệc giải quyết bài toán này theo hướng tiếp cận sử dụng phần mềm chưa
được quan tâm phát triển
Xuất phát từ mục tiêu tiếp cận, bổ sung các kiến thức mới, cũng như củng cố lại
những kỹ năng kiến thức trong suốt quá trình học tập tại trường. Đồng thời nghiên cứu sâu
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
1
CHƯƠNG 1.TỔNG QUAN
hơn về ứng dụng của xử lý ảnh, nghiên cứu các thuật đếm đối tượng trong ảnh và thực hiện
đếm đối tượng rồi nhúng dữ liệu xuống kit Arduino[2].
Do đó, nhóm thực hiện đồ án chọn đề tài: “Đếm đối tượng trong ảnh”.
1.2.
MỤC TIÊU.
Mục tiêu của đề tài là xây dựng hệ thống đếm đối tượng qua hình ảnh với đầu vào là
2
CHƯƠNG 1.TỔNG QUAN
1.5.
BỐ CỤC.
Đồ án tốt nghiệp: “Đếm đối tượng trong ảnh” trình bày trong 6 chương với bố cục
như sau:
Chương 1: Tổng quan.
Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung
nghiên cứu, các giới hạn thông số và bố cục đồ án.
Chương 2: Cơ sở lý thuyết.
Giới thiệu về phần Matlab, giới thiệu về Arduino, giới thiệu về xử lý ảnh
Giới thiệu về kit Arduino, LCD và I2C.
Giới thiệu về các phương pháp trong quá trình xử lý ảnh đầu vào. Giới thiệu về
thuật toán đánh nhãn trong việc đếm đối tượng.
Chương 3: Thiết kế và tính toán.
Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế chương trình cho hệ thống
đếm đối tượng qua hình ảnh được viết trên phần mềm Matlab, sử dụng thư viện của Matlab
cho kit Arduino.
Chương 4: Thi công hệ thống.
Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các hàm, các lưu đồ, các
chương trình được sử dụng. Lắp ráp và chạy chương trình. Viết tài liệu hướng dẫn sử dụng,
quy trình thao tác.
Chương 5: Kết quả, nhận xét và đánh giá.
Nêu các kết quả đạt được khi thực hiện chương trình, phân tích, nhận xét, đánh giá
được truyền qua cáp từ Luân đôn đến New York từ những năm 1920. Vấn đề nâng cao
chất lượ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ất lượ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
không ngừng. Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các thuật
toá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.
Để dễ tưởng tượng, 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
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
4
CHƢƠNG 2.CƠ SỞ LÝ THUYẾT
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.
2.2
TỔNG QUAN VỀ MATLAB[4].
Matlab (Matrix Laboratory) là một môi trường tính toán số và lập trình, được thiết
kế bởi công ty MathWorks, là ngôn ngữ lập trình thực hành bậc cao được sử dụng nhiều
cụ phát triển, quản lý, gỡ rối và định hình M-file.
Xử lý đồ họa: Bao gồm các lệnh cao cấp cho trực quan hóa dữ liệu hai chiều và
ba chiều, xử lý ảnh, ảnh độ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.
Thư viện toán học: Các hàm cơ bản như cộng, trừ, nhân, chia, sin, cos …và các
hàm phức tạp như tính ma trận nghịch đảo, trị riêng, chuyển đổi fourier, laplace, symbolic
library.
Giao diện người dùng (Application Program Interface): Cho phép viết chương
trình tương tác với các ngôn ngữ khác C, Fortran ...
Simulink là một chương trình đi kèm với Matlab, là một hệ thống tương tác với
việc mô phỏng các hệ thống động phi tuyến, mô phỏng mạch.
2.3
GIỚI THIỆU LỊCH SỬ HÌNH THÀNH ARDUINO[3].
Arduino thực sự đã gây sóng gió trên thị trường người dung DIY ( là những người
tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần giống với
những gì Apple đã làm được trên thị trường thiết bị di động. Số lượng người dung cực lớn
và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học làm cho ngay cả những
người tạo ra chúng phải ngạc nhiên về mức độ phổ biến.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
6
CHƢƠNG 2.CƠ SỞ LÝ THUYẾT
Hình 2.1: Những thành viên khởi xướng Arduino
Arduino là gì mà có thể ngay cả nhũng sinh viên và nhà nghiên cứu tại các trường
Kit Arduino Uno[3].
Kit Arduino có nhiều phiên bản với tính năng và mục đích sử dụng khác nhau.
Board Arduino Uno là một trong những phiên bản được sử dụng rộng rãi nhất bởi chi phí
và tính linh động của nó.
Arduino Uno là một board mạch vi điều khiển dựa trên chip Atmega328 với 14
chân vào/ra bằng tín hiệu số được đánh số từ 0 đến 13, trong đó 6 chân có thể tạo xung
PWM được đánh dấu “~” trước mã số của chân, 6 chân nhận tín hiệu analog được đánh
dấu từ A0 đến A5, có thể sử dụng như là 6 chân I/O số. Có 2 mức điện áp là 0V và 5V với
dòng vào/ra tối đa trên mỗi chân là 30 mA.
Vi điều khiển
Atmega328P họ 8 bit
Điện áp hoạt động
5V
Điện áp đầu vào
7-12V
Điện áp đầu vào giới hạn
6-20V
Số chân Digital I/O
14 (có 6 chân PWM)
68.6 mm
Width
53.4 mm
Weight
25 g
Bảng 2.1. Thông số kỹ thuật Arduino Uno.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
8
CHƢƠNG 2.CƠ SỞ LÝ THUYẾT
Hình 2.2. Cấu trúc phần cứng của Arduino Uno.
Cổng USB(1): Cổng USB dùng để kết nối với máy tính và thông qua đó để upload
chương trình cho Arduino từ máy tính, đồng thời cung cấp nguồn cho Arduino.
Nguồn (2 và 4): Sử dụng jack cắm nguồn 2.1mm (cực dương ở giữa) hoặc có thể
dùng chân Vin và GND để cấp nguồn cho Arduino. Board mạch hoạt động ở điện áp
ngoài khoảng 5-20V, nhưng nếu cấp nguồn lớn hơn 5V thì ngõ ra chân 5V sẽ lớn hơn,
không nên cấp nguồn lớn hơn 12V vì board sẽ nóng và dễ bị hỏng. Chân 5V và chân 3.3v
là 2 chân lấy nguồn từ Arduino ra ngoài, không được cấp nguồn vào nó, sẽ làm hỏng.
Chip Atmega328P(6): Có 32KB bộ nhớ flash trong đó có 0.5KB dùng cho
bootloader, 2KB SRAM, 1KB EEPROM.
Output và Input (3 và 5): Arduino có 14 chân Digital với các chức năng Input và
2
VDD
3
VEE
Điều chỉnh độ tương phản của LCD.
RS
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
4
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
10
CHƢƠNG 2.CƠ SỞ LÝ THUYẾT
chế độ “đọc” - read).
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
Thông thường, để sử dụng màn hình LCD bạn sẽ phải mất rất nhiều chân Arduino
để điều khiển.Do vậy, để đơn giản hóa công việc người ta đã tạo ra một mạch điều khiển
màn hình LCD sử dụng giao tiếp I2C. Nói một cách đơn giản, bạn chỉ tốn hai dây để điều
khiển màn hình thay vì 8 dây như cách thống thường thường làm.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
11