Các sản phẩm dự kiến- Mô hình “Hệ thống phân loại cà chua theo màu sắc và khối lượng”.- Báo cáo thuyết minh đề tài.- Chương trình xử lý ảnh trên Python ứng dụng trên nền tảng Raspberry.-
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Giảng viên hướng dẫn : TS TRẦN HOÀNG VŨ
: Giáp Thanh Điền
Trang 2Đà Nẵng, tháng 06 năm 2023
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Giảng viên hướng dẫn : TS TRẦN HOÀNG VŨ
Nhóm sinh viên: : Cao Anh Tú
: Giáp Thanh Điền
Trang 3Đà Nẵng, tháng 06 năm 2023
Trang 4PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Họ và tên Sinh viên
: Cao Anh Tú MSV: 1911505120244 : Giáp Thanh Điền MSV: 1911505120215 Ngành: Công nghệ kỹ thuật điện tử.
Tên đề tài: “THIẾT KẾ HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU
SẮC VÀ KHỐI LƯỢNG”
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện
Tp Đà Nẵng, ngày… tháng… năm 2022
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 5PHIẾU NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN
Trang 6Đề tài “Thiết kế hệ thống phân loại cà chua theo màu sắc và khối lượng” là môhình phân loại nông sản cà chua theo màu sắc (đỏ, vàng, xanh) Sau khi phân loại càchua theo màu sắc chúng ta tiến hành cân lượng cà chua màu đỏ và vàng rồi đổ theotừng thùng để đưa tới nơi đóng gói và gửi khối lượng lên file excel để nắm bắt khốilượng từng loại quả Dựa trên ngôn ngữ Python với thư viện chính là OpenCV và đượcthực hiện trên Kit Raspberry và Kit Arduino Mega 2560 Ở đây sử dụng các đặc điểmriêng biệt từng màu sắc của quả cà chua để đi nhận dạng, sau đó phân loại từng sảnphẩm và sử dụng cảm biến trọng lượng để tiến hành cân khối lượng từng quả theo khốilượng ta mong muốn.
Trang 7TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ
THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Giảng viên hướng dẫn: TS Trần Hoàng Vũ
1 Tên đề tài:
“THIẾT KẾ HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ
KHỐI LƯỢNG”.
2 Các số liệu, tài liệu ban đầu:
- Arduino, Raspberry Pi 4B, camera, động cơ, cảm biến…
- Các công nghệ, kiến thức kỹ thuật: Hệ thống IoT, vi điều khiển, hệ thống
nhúng
- Tài liệu về ngôn ngữ lập trình Python và thư viên OpenCV
3 Nội dung chính của đồ án:
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết và các công nghệ
Chương 3: Thiết kế, chế tạo mô hình hệ thống phân loại cà chua theo màu sắc
và khối lượng
Chương 4: Chương trình điều khiển và giám sát hệ thống
Kết luận
4 Các sản phẩm dự kiến
- Mô hình “Hệ thống phân loại cà chua theo màu sắc và khối lượng”
- Báo cáo thuyết minh đề tài
- Chương trình xử lý ảnh trên Python ứng dụng trên nền tảng Raspberry
- Chương trình điều khiển arduino
5 Ngày giao đồ án:
Trang 8Đà Nẵng, ngày tháng năm 2023
TS Trần Hoàng Vũ
Trang 9LỜI NÓI ĐẦULời đầu tiên, em xin chân thành gửi lời cảm ơn sâu sắc đến TS Trần Hoàng Vũ,
người đã đồng hành, dẫn dắt và hướng dẫn em trong quá trình hình thành và phát triển
đề tài tốt nghiệp này
Theo đó em muốn gửi gắm lòng biết ơn đến các quý thầy cô trong khoa Điện – Điện tử, trường Đại học Sư Phạm Kỹ thuật Đà Nẵng đã luôn tạo điều kiện thuận
lợi, môi trường học tập tốt nhất cho em Giúp em xây dựng vững chắc nền tảng kiếnthức chuyên ngành mà mình đang hướng đến
Cuối cùng, sẽ thật thiếu sót khi không đề cập đến gia đình của mình, đặc biệt là
bố mẹ, những người bạn Niềm tin của họ dành cho em đã giúp tinh thần và động lựccủa em luôn cao trong suốt quá trình học tập và làm việc
Chân thành cảm ơn!
Trang 10Sinh viên thực hiện
Trang 11MỤC LỤC
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
PHIẾU NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN
TÓM TẮT
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
LỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH SÁCH CÁC BẢNG, HÌNH VẼ vi
DANH SÁCH CÁC KÝ HIỆU, CHỮ CÁI VIẾT TẮT viii
MỞ ĐẦU 1
Chương 1 TỔNG QUAN 2
1.1 Tính cấp thiết của đề tài 2
1.2 Mục tiêu đề tài 2
1.3 Nội dung nghiên cứu 2
1.4 Giới hạn đề tài 3
1.5 Tổng quan về xử lý ảnh 3
1.5.1 Thu nhận ảnh (Image Acquisition) 4
1.5.2 Tiền xử lý (Image processing) 4
1.5.3 Phân đoạn (Segmentation) hay phân vùng ảnh 4
1.5.4 Biểu diễn ảnh ( Image Representation) 5
1.5.5 Nhận dạng và nội suy ảnh 5
1.5.6 Cơ sở tri thức 5
1.5.7 Mô tả 6
1.6 Những vấn đề trong xử lý ảnh 6
1.6.1 Điểm ảnh 6
1.6.2 Ảnh số 6
1.6.3 Phân loại ảnh 6
1.6.4 Quan hệ giữa các điểm ảnh 6
1.6.5 Lọc nhiễu 7
1.6.6 Phương pháp phát hiện biên 8
Trang 121.6.7 Phân đoạn ảnh 9
1.6.8 Các phép toán hình thái Morphology 10
Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ 12
2.1 Ngôn ngữ lập trình python 12
2.1.1 Giới thiệu 12
2.1.2 Đặc điểm nổi bật của python 12
2.2 Thư viện openCV 13
2.2.1 Giới thiệu về OpenCV 13
2.2.2 Các phép xử lý dơn giản của OpenCV 14
2.3 Xử lý ảnh sử dụng YOLO 19
2.3.1 Khái niệm yolo 20
2.3.2 Kiến trúc mạng YOLO 20
2.3.3 Cách Yolo hoạt động 22
2.3.4 Output của YOLO 23
2.3.5 Hàm tính IOU 24
2.4 Chuẩn giao tiếp nối tiếp UART 25
2.4.1 Giới thiệu 25
2.4.2 Truyền thông UART 26
2.4.3 Ứng dụng của giao tiếp UART 28
2.5 Chuẩn giao tiếp I2C 28
2.5.1 Giới thiệu 28
2.5.2 Quy trình truyền nhận dữ liệu chuẩn I2C 29
2.6 Giới thiệu phần cứng 31
2.6.1 Raspberry Pi 4 31
2.6.2 Mô tả chân Raspberry Pi 4 Module B 33
2.6.3 Camera Webcam Dùng Cho Raspberry Pi 38
2.6.4 Arduino Mega 2560 40
2.6.5 Cảm biến tải trọngloadcell 44
2.6.6 Module HX711 45
2.6.7 Cảm biến hồng ngoại E18-D80NK 45
2.6.8 Động cơ DC kéo băng tải 46
2.6.9 Động cơ servo MG995 47
Trang 132.6.10 Màn hình LCD × 02 và module I2C 48
2.6.11 Giới thiệu hệ thống băng tải 49
Chương 3 THIẾT KẾ, CHẾ TẠO MÔ HÌNH HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ KHỐI LƯỢNG 50
3.1 Xác định yêu cầu 50
3.2 Đặc tả kỹ thuật 52
3.3 Phát triển phần cứng 52
3.3.1 Lựa chọn linh kiện 52
3.3.2 Sơ đồ nguyên lý mạch điều khiển 57
3.3.3 Sơ đồ nguyên lý mạch điều khiển động cơ 59
3.3.4 Thi công mạch in 62
3.4 Phát triển phần mềm cho vi điều khiển 65
3.4.1 Mô hình hóa hệ thống 65
3.4.2 Các công cụ và môi trường phát triển 66
3.5 Hoàn thiện Hệ thống phân loại cà chua theo màu sắc và khối lượng 68 Chương 4 CHƯƠNG TRÌNH ĐIỀU KHIỂN VÀ GIÁM SÁT HỆ THỐNG 70
4.1 Lưu đồ thuật toán trên Arduino 70
4.2 Lưu đồ thuật toán trên Raspberry PI 4 Module B 72
4.3 Thao tác sử dụng hệ thống nhận diện quả cà chua trên Raspberry 74
4.3.1 Các bước vào giao diện hệ điều hành Raspberry 74
4.3.2 Thao tác chạy chương trình trên Raspberry và Laptop 76
4.4 Thao tác sử dụng ArduSpreadsheet 77
KẾT LUẬN 78
TÀI LIỆU THAM KHẢO 79
PHỤ LỤC 80
Trang 14DANH SÁCH CÁC BẢNG, HÌNH
Bảng 2 1 Các chân Ground trên Raspberry Pi 35
Bảng 2 2 Các chân I/O digital trên Raspberry Pi 35
Bảng 2 3 Các chân hỗ trợ giao tiếp UART trên Raspberry Pi 36
Bảng 2 4 Các chân hỗ trợ giao tiếp I2C trên Raspberry Pi 37
Bảng 2 5 Các chân GPIO PWM trên Raspberry Pi 38
Bảng 2 6 Các chân SDIO của Raspberry Pi 38
Bảng 2 7 Bảng thông số kỹ thuật của board Arduino Mega 2560 40
Bảng 2 8 Thông số kỹ thuật của cảm biến tải trọng Loadcell 44
Y Bảng 3 1 Phần cứng khối ngoại vi [7] 54
Bảng 3 2 Phần cứng khối nguồn [7] 56
Hình 2 1 Quá trình xử lý ảnh 4
Hình 2 2 Lân cân 4 và lân cận 8 7
Hình 2 3 Hình tách biên 8
Hình 2 4 Phép giãn 11
Hình 2 5 Phép co 11
Hình 2 6 Trang chủ Python 12
Hình 2 7 Không gian mùa RGB 14
Hình 2 8 Không gian màu CMYK 15
Hình 2 9 Không gian màu HSV 16
Hình 2 10 Biến đổi ảnh xám 17
Hình 2 11 Biến đổi ảnh đen trắng 18
Hình 2 12 Các lớp trong YOLO 20
Hình 2 13 Sơ đồ kiến trúc mạng YOLO 21
Hình 2 14 Các layer trong mạng darknet-53 22
Hình 2 15 Hoạt động của YOLO 22
Hình 2 16 Output của YOLO 24
Hình 2 17 Giao tiếp UART 26
Hình 2 18 Truyền thông UART 27
Hình 2 19 Giao tiếp UART với vi điều khiển 28
Hình 2 20 Kết nối các thiết bị chủ tớ 29
Hình 2 21 Quá trình truyền dữ liệu của thiết bị chủ 30
Hình 2 22 Quá trình nhận dữ liệu từ thiết bị chủ 31
Hình 2 23 Máy tính nhúng Raspberry Pi 32
Hình 2 24 Thông số kỹ thuật của Raspberry Pi 32
Hình 2 25 Sơ đồ chân Raspberry Pi 34
Hình 2 26 GPIO Raspberry Pi 34
Hình 2 27 Webcam 39
Trang 15Hình 2 28 Board Arduino Mega 2560 40
Hình 2 29 Cảm biến tải trọng Loadcell 44
Hình 2 30 Cảm biến hồng ngoại E18-D80NK 45
Hình 2 31 Động cơ kéo băng tải 46
Hình 2 32 Động cơ servo MG995 47
Hình 2 33 Màn hình LCD 16×2 48
Hình 2 34 Module I2C 48
Hình 2 35 Băng tải 49
Hình 3 1 Sơ đồ khối hoạt động của hệ thống mạch điện tử 50
Hình 3 2 Board Arduino Mega 2560 53
Hình 3 3 Máy tính nhúng Raspberry Pi 53
Hình 3 4 Sơ đồ nguyên lý mạch điều khiển 58
Hình 3 5 Sơ đồ nguyên lý mạch điều khiển động cơ 59
Hình 3 6 Khối điều khiển cân 1 60
Hình 3 7 Sơ đồ nguyên lý khối điều khiển cân 2 60
Hình 3 8 Sơ đồ nguyên lý khối điều khiển băng tải 1 61
Hình 3 9 Sơ đồ nguyên lý khối điều khiển băng tải 2 61
Hình 3 10 Sơ đồ nguyên lý khối điều khiển băng tải 3 62
Hình 3 11 Mạch in PCB 62
Hình 3 12 Lớp TopLayer sau khi thi công 63
Hình 3 13 Mạch in PCB 63
Hình 3 14 Lớp ButtomLayer sau tkhi thi công 64
Hình 3 15 Lớp TopLayer sau khi thi công 64
Hình 3 16 Mô hình phân rã chức năng Controller 1 65
Hình 3 17 Mô hình phân rã chức năng Cotroller 2 66
Hình 3 18 Visual Studio Code 66
Hình 3 19 Arduino IDE 67
Hình 3 20 ArduSpreadsheet 68
Hình 3 21 Mặt trước mô hình hệ thống 68
Hình 3 22 Mặt sau mô hình hệ thống 69
Hình 4 1 Lưu đồ thuật toán trên Arduino Mega 2560 70
Hình 4 2 Lưu đồ thuật toán trên Raspberry 73
Hình 4 3 Dò địa chỉ IP của Raspberry 74
Hình 4 4 Nhập địa chỉ IP vào VNC Viewer 75
Hình 4 5 Đăng nhập vào giao diện hệ điều hành Raspberry 75
Hình 4 6 Giao diện hệ điều hành Raspberry 76
Hình 4 7 Chay chương trình nhận diện quả cà chua Visual Studio Code 76
Hình 4 8 Quá trình nhận diện trên Raspberry được hoàn tất 77
Trang 16DANH SÁCH CÁC KÝ HIỆU, CHỮ CÁI VIẾT TẮT
Trang 17MỞ ĐẦU
Trong thời đại mà các dây chuyền sản xuất, đóng gói và phân loại sản phẩm củacác nhà máy không chỉ ở nước ta mà trên toàn thế giới đang dần dần chuyển hoàn toànthành dây chuyền tự động hóa Mục đích nhằm tăng năng suất sản phẩm, rút ngắn thờigian thành phẩm, có thể làm việc liên tục, giảm sức người và nhân công nhằm đem lạilợi nhuận lớn hơn cho doanh nghiệp và nhà đầu tư
Đề tài: “Thiết kế hệ thống phân loại cà chua theo màu sắc và khối lượng” thôngqua việc sử dụng Raspberry Pi 4 Module B, kit Arduino Mega 2560 để phân loại càchua theo màu sắc và dùng cảm biến trọng lượng loadcell để cân khối lượng quả theotừng loại màu với khối lượng mong muốn để đưa tới nơi đóng gói
Đề tài gồm có 4 chương chính:
Chương1: Tổng quan
Chương 2: Cơ sở lý thuyết và các công nghệ
Chương 3: Thiết kế, chế tạo mô hình hệ thống phân loại cà chua theo màu sắc
và khối lượng
Chương 4: Chương trình điều khiển và giám sát hệ thống
Kết luận và hướng phát triển
Trang 18Chương 1 TỔNG QUAN
1.1 Tính cấp thiết của đề tài
Khoa học kỹ thuật luôn phát triển ở mọi lĩnh vực, nhất là các ngành sản xuất,chúng đòi hỏi cải tiến và nâng cấp hệ thống sản xuất là ưu tiến hàng đầu Tự động hóa
hệ thống phân loại sản phẩm là một cách cải tiến và nâng cấp trong những công đoạnsản xuất Hệ thống này giúp cho việc sản xuất được linh hoạt hơn, tiết kiệm thời gian,nhân lực, tăng năng suất đem lại hiểu quả kinh tế cao
Đã có khá nhiều đề tài thực hiện việc mô hình phân loại nông sản như phân loạitheo chiều cao, phân loại theo khối lượng theo kích thước Nhưng với những nông sản
có màu sắc thay đổi theo tính chất của nông sản thì các mô hình phân loại kia khôngphù hợp, nhiều hệ thống chỉ thực hiện phân loại mà chưa thực hiện giám sát, quản lýviệc phân loại Vì vậy chúng ta cần xây dựng việc giám sát quá trình phân loại cho hệthống
Phân loại cà chua theo màu sắc và khối lượng giúp cho việc quản lý và sản xuấttrở nên hiệu quả hơn Các loại cà chua khác nhau thường được sử dụng cho các mụcđích khác nhau, ví dụ như sản xuất nước cà chua, chế biến thực phẩm hoặc tiêu thụtươi Bằng cách phân loại chúng theo màu sắc và khối lượng, các nhà sản xuất có thểtối ưu hóa quy trình sản xuất và đảm bảo rằng sản phẩm được sản xuất đáp ứng cácyêu cầu cụ thể của khách hàng
Vì vậy, chúng em xin đề xuất đề tài “Thiết kế hệ thống phân loại cà chua theomàu sắc và khối lượng” Hệ thống này giúp phân loại cà chua theo màu sắc và kiểmsoát tỷ lệ quả cà chua theo khối lượng từng loại màu so với đơn vị đầu vào, từ đó tanắm bắt được chất lượng lô nguyên liệu đầu vào
1.2 Mục tiêu đề tài
- Tìm hiểu cơ chế hoạt động của mạch
- Phân tích sơ đồ nguyên lý
- Nâng cao kỹ năng lập trình, hàn mạch, làm sản phẩm điện tử
- Phân loại được sản phẩm theo màu sắc và khối lượng
1.3 Nội dung nghiên cứu
Nội dung 1: Nghiên cứu tài liệu về máy tính nhúng Raspberry Pi 4 Module BArduino Mega 2560, các thiết bị ngoại vi dùng trong đề tài
Nội dung 2: Cài giao diện hệ điều hành cho Raspberry Pi và cài đặt các IDEcần dùng cho đề tài
Trang 19Nội dung 3: Dựa vào các đặc tính trên cà chua để tiến hành lựa chọn giải phápthiết kế và thi công mô hình.
Nội dung 4: Thiết kế lưu đồ thuật toán và viết chương trình cho Arduino vàRaspberry
Nội dung 5: Điều chỉnh phần mềm, phần cứng để mô hình được tối ưu và sửdụng dễ dàng
Nội dung 6: Viết báo cáo thực hiện
Nội dung 7: Đánh giá kết quả thực hiện
1.4 Giới hạn đề tài
Mô hình phân loại quy mô nhỏ
Phân loại theo 3 màu sắc: đỏ, vàng, xanh
Tốc độ phân loại chậm
1.5 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ànhkhoa 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ấtnhanh, 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êndụng riêng cho nó.Xử lý ảnh là kỹ thuật áp dụng trong việc tăng cường và xử lý cácảnh thu nhận từ các thiết bị như camera, webcam… Do đó, xử lý ảnh đã được ứngdụng và phát triển trong rất nhiều lĩnh vực quan trọng như:
Trong lĩnh vực quân sự: xử lý và nhận dạng ảnh quân sự
Trong lĩnh vực giao tiếp người máy: nhận dạng ảnh, xử lý âm thanh, đồ họa Trong lĩnh vực an, bảo mật: nhận diện khuôn mặt người, nhận diện vân tay,mẫu mắt, …
Trong lĩnh vực giải trí: trò chơi điện tử
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
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được truyền 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 caochấ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ảithí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ố được thuận lợi hơn 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
Trang 20đường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chấtlượ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 ảnhngày càng được áp dụng rộng rãi và thu được nhiều kết quả khả quan hơn
Sau đây, ta sẽ xét các bước cần thiết trong quá trình xử lý ảnh Đầu tiên, ảnh tựnhiên từ thế giới bên 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ểuCCIR) 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ếptheo Mặt khác ảnh có thể được quét từ vệ tinh chụp trực tiếp bằng máy quét ảnh [1]
Hình 2 1 Quá trình xử lý ảnh
Sơ đồ này bao gồm các thành phần sau:
1.5.1 Thu nhận ảnh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc trắng đen 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ố hóa (như loại CCD – Change Coupled Device) là loại photodiottạ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ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường [1]
1.5.2 Tiền xử lý (Image processing)
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 [1]
1.5.3 Phân đoạn (Segmentation) 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ễnphâ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
Trang 21thà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ầnphứ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 [1]
1.5.4 Biểu diễn ảnh ( Image Representation)
Đây là phần 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 ở 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íchhợ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 Extration) 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àyvới đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trong nhận dạng ký tự trênphong 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àyvới ký tự khác [1]
1.5.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ằngcá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ántheo ý 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ênphong bì thư có thể nội suy thành mã điện thoại Có nhiều cách phân loại ảnh khácnhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phântheo 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 được áp dụng trong khoahọ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ạngvă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,… [1]
1.5.6 Cơ sở tri thức
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối,dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu Trong nhiềukhâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảmbảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnhtheo cách của con người Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theocác phương pháp trí tuệ con người Vì vậy, ở đây các cơ sở tri thức được phát huy [1]
1.5.7 Mô tả
Ảnh sau khi số hóa sẽ lưu vào bộ nhớ, hoặc truyền sang các khâu tiếp theo đểphân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn
Trang 22và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnhđược gọi là các đặc trưng ảnh như: biên ảnh, vùng ảnh [1]
1.6 Những vấn đề trong xử lý ảnh
1.6.1 Điểm ảnh
Là đơn vị cơ bản nhất để tạo nên một bước ảnh kỹ thuật số Địa chỉ của điểmảnh được xem như là một tọa độ (x,y) nào đó Một bức ảnh kỹ thuật số, có thể đượctạo ra bằng cách chụp hoặc bằng một phương pháp đồ họa nào khác, được tạo nên từhàng ngàn hoặc hàng triệu pixel riêng lẻ Bức ảnh càng chứa nhiều pixel thì càng chitiết Một triệu pixel thì tương đương với 1 megapixel [1]
1.6.2 Ảnh số
Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tảảnh gần với ảnh thật Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giảicàng cao thì càng thể hiện rõ nét các đặt điểm của tấm hình càng làm cho tấm ảnh trởnên thực và sắc nét hơn Một hình ảnh là một tín hiệu hai chiều, nó được xác định bởihàm toán học f(x, y) trong đó x và y là hai tọa độ theo chiều ngang và chiều dọc Cácgiá trị của f(x, y) tại bất kỳ điểm nào là cung cấp các giá trị điểm ảnh (pixel) tại điểm
đó của một hình ảnh [1]
1.6.3 Phân loại ảnh
Mức xám của điểm ảnh là cường độ sáng, gán bằng một giá trị tại điểm đó Cácmức ảnh xám thông thường: 16, 32, 64, 128, 256 Mức được sử dụng thông dụng nhất
là 265, tức là dùng 1byte để biểu diễn mức xám Trong đó:
- Ảnh nhị phân: Là ảnh có 2 mức trắng và đen, chỉ có 2 giá trị 0 và 1 và chỉ
sử dụng 1 bit dữ liệu trên 1 điểm ảnh
- Ảnh đen trắng: Là ảnh có hai màu đen, trắng (không chứa màu khác) vớimức xám ở các điểm ảnh có thể khác nhau
- Ảnh màu: Là ảnh kết hợp của 3 màu cơ bản lại với nhau để tạo ra một thếgiới màu sinh động Người ta thường dùng 3byte để mô tả mức màu, tức là
có khoảng 16,7 triệu mức màu [1]
1.6.4 Quan hệ giữa các điểm ảnh
Lân cận điểm ảnh: được nói một cách hài hước như là hàng xóm của cái điểmảnh Có 2 loại lân cận cơ bản là lân cận 4 và lân cận 8
Trang 23Hình 2 2 Lân cân 4 và lân cận 8
4 điểm ảnh lân cận 4 theo cột và hàng với tọa độ lần lượt là (x+1, y), (x-1, y),(x,y+1), (x, y-1) ký hiệu là tập N4(p) 4 điểm ảnh lân cận 4 theo đường chéo có tọa độlần lượt là (x+1, y+1), (x+1, y+1), (x-1, y+1), (x-1, y-1) ký hiệu là tập ND(p) Tập 8điểm ảnh lân cận 8 là hợp của 2 tập trên:
N8(p) = N4(p) + ND(p)
Liên kết ảnh: Các mối liên kết của ảnh được xem như là mối liên kiết của 2điểm ảnh gần nhau, có 3 loại liên kết: liên kết 4, liên kết 8, lên kết m (liên kết hỗnhợp) Trong ảnh đa mức xám, ta có thể đặt V chứa nhiều giá trị như V={tập con} Cho
Trang 24các bộ lọc thông cao, lọc Laplace Phương pháp lọc nhiễu Chia làm 2 loại: lọc tuyếntính, lọc phi tuyến
Làm trơn nhiễu bằng lọc tuyến tính: Khi chụp ảnh có thể xuất hiện nhiều loạinhiễu vào quá trình xử lý ảnh, nên ta cần phải lọc nhiễu Gồm các phương pháp cơ bảnlọc trung bình, lọc thông thấp,… Ví dụ lọc trung bình: Với lọc trung bình, mỗi điểmảnh được thay thế bằng trung bình trọng số của các điểm lân cận
Làm trơn nhiễu bằng lọc phi tuyến: Các bộ lọc phi tuyến cũng hay được dùngtrong kỹ thuật tăng cường ảnh Một số phương pháp lọc cơ bản bộ lọc trung vị, lọcngoài,… Với lọc trung vị, điểm ảnh đầu vào sẽ được thay thế bởi trung vị các điểmảnh còn lọc giả trung vị sẽ dùng trung bình cộng của hai giá trị “trung vị” (trung bìnhcộng của max và min)
Lọc trung vị: Kỹ thuật này đòi hỏi giá trị các điểm ảnh trong cửa sổ phải xếptheo thứ tự tăng hay giảm dần so với giá trị trung vị Kích thước cửa số thường đượcchọn sao cho số điểm ảnh trong cửa sổ là lẻ
Lọc ngoài: Giả thiết có ngưỡng nào đó cho các mức nhiễu (có thể dựa vào lược
đồ xám) Tiến hành so sánh giá trị độ xám của một điểm ảnh với trung bình số học 8lân cận của nó Nếu sai lệch lớn hơn ngưỡng, điểm ảnh này được coi như nhiễu Trongtrường hợp đó, thay thế giá trị của điểm ảnh bằng giá trị trung bình 8 lân cận vừa tínhđược [1]
1.6.6 Phương pháp phát hiện biên
Biên là một trong những vấn đền ta cần quan tâm trong xử lý ảnh Vì ở giaiđoạn phân đoạn ảnh chủ yếu dựa vào biên
Hình 2 3 Hình tách biên
Điểm biên: Một điểm ảnh được coi là điểm biên nếu có sự thay đổi nhanh hoặcđột ngột về mức xám (hoặc màu) Ví dụ trong ảnh nhị phân, điểm đen gọi là điểm biênnếu lân cận nó có ít nhất một điểm trắng Đường biên (đường bao: boundary): tập hợpcác điểm biên liên tiếp tạo thành một đường biên hay đường bao
Trang 25Ý nghĩa của đường biên trong xử lý: ý nghĩa đầu tiên của đường biên là mộtloại đặc trưng cục bộ tiêu biểu trong phân tích, nhận dạng ảnh Thứ hai, người ta sửdụng biên làm phân cách các vùng xám (màu) cách biệt Ngược lại, người ta cũng sửdụng các vùng ảnh để tìm đường phân cách Tầm quan trọng của biên: để thấy rõ tầmquan trọng của biên, xét ví dụ sau: khi người họa sỹ muốn vẽ một danh nhân, họa sỹchỉ cần vẽ vài đường nứt tốc họa mà không cần vẽ một cách đầy đủ
Như vậy, phát hiện biên một cách lý tưởng là phát hiện được tất cả các đườngbiên trong các đối tượng Định nghĩa toán học của biên ở trên là cơ sở cho các kỹ thuậtphát hiện biên Điều quan trọng là sự biến thiên giữa các điểm ảnh thường nhỏ, trongkhi đó biến thiên độ sáng của điểm biên thường là khá lớn khi qua biên Xuất phát cơ
sở này người ta thường sử dụng hai phương pháp phát hiện biên như sau: Tách biêntheo đạo hàm bậc một: Có 2 phương pháp cơ bản là: một là tạo gradient của hai hướng
và trực giao trong ảnh, hai là dùng tập đạo hàm có hướng Tách biên theo đạo hàm bậchai: được thực hiện trên một số dạng vi phân bậc 2 để làm xuất hiện biên Có hai dạngcủa phương pháp đạo hàm bậc hai đã được nghiên cứu là: phương pháp Laplace vàđạo hàm trực tiếp
Bộ tách biên Canny: Phương pháp phát hiện này được sử dụng phổ biến vì nó
có nhiều ưu điểm hơn các phương pháp khác Các bước thực hiện: Làm phẳng dùng bộlọc Gauss; Sau đó, Gradient cục bộ của biên độ và hướng được tính Tìm điểm ảnh cóbiên độ lớn nhất dùng kỹ thuật nonmaximal suppression; Các điểm ảnh đỉnh (tìm được
từ bước 2) được chia làm hai ngưỡng T1 và T2, T1 < T2 Các điểm ảnh đỉnh có giá trịlớn hơn T2 được gọi là Strong và nằm trong khoảng T1 và T2 được gọi là Weak Liênkiết các điểm ảnh Weak có 8 kết nối đến điểm ảnh Strong [1]
1.6.7 Phân đoạn ảnh
Phân đoạn ảnh là bước then chốt trong xử lý ảnh Giai đoạn này nhằm phân tíchảnh thành các vùng có cùng tính chất nào đó dựa theo biên hay các vùng liên thông.Tiêu chuẩn để xác định các vùng liên thông có thể là cùng mức xám, cùng màu haycùng độ nhóm
Quá trình phân đoạn ảnh nhằm tách đối tượng cần khảo sát ra khỏi phần nộidung còn lại của ảnh, hay phân chia các đối tượng trong ảnh thành những đối tượngriêng biệt Như vậy quá trình phân đoạn ảnh là quá trình giảm bớt số lượng thông tintrong ảnh và chỉ giữ lại những thông tin cần thiết cho ứng dụng Do đó phân đoạn ảnh
là quá trình loại bỏ các đối tượng không quan tâm trong ảnh Có nhiều phương phápphân đoạn ảnh khác nhau Trong đó quá trình phân đoạn ảnh sử dụng một ngưỡng giátrị xám để phân đoạn ảnh ra thành các đối tượng và nền là phương pháp đơn giản nhất.Lúc này các điểm ở bên dưới ngưỡng giá trị xám thuộc về nền còn những điểm ảnh ởbên trên ngưỡng giá trị xám thuộc về đối tượng Phương pháp phân đoạn ảnh này hiệu
Trang 26quả lớn đối với ảnh nhị phân, văn bản in hay đồ họa [1]Dựa vào đặc tính vật lý củavùng ảnh, các kỹ thuật phân đoạn vùng có thể được chia làm 3 loại:
- Các kỹ thuật cục bộ: dựa trên các đặc tính cục bộ của các điểm ảnh và cáclân cận của nó
- Các kỹ thuật tổng thể: phân đoạn một ảnh dựa trên cơ sở của thông tin lấy
từ tổng thể như sử dụng biểu đồ mức xám histogram
- Các kỹ thuật chia, nối và phát triển: dựa trên các khái niệm tương đồng vềhình dạng và tính đồng nhất Hai vùng có thể được nối lại với nhau và liền
kề bên nhau Các vùng không đồng nhất có thể được chia thành các vùngnhỏ Một vùng có thể được phát triển bằng các nối các điểm ảnh sao cho nóđồng nhất với nhau [1]
1.6.8 Các phép toán hình thái Morphology
Khái niệm Morphology trong xử lý ảnh số khởi nguồn từ một ngành của sinhhọc, nghiên cứu về hình thể và cấu trúc của động thực vật Đây là một công cụ giúp rúttrích các thành phần trong ảnh nhị phân, biễu diễn và mô tả chúng dưới dạng các vùnghoặc dạng như các đường biên, xương và bao lồi Kỹ thuật morphology cũng được ápdụng trên ảnh xám cho các công đoạn tiền/hậu xử lý ảnh (pre or post processing) Cácphép toán đầu tiên trong Morphology được phát triển vào những năm 1964 bởiGeorges Matheron (1930 - 2000) và Jean Serra (1940) tại trường đại học École desMines de Paris, Pháp Matheron là tiến sĩ hướng dẫn của Jean, họ cố gắng xác định sốlượng đặc tính của khoáng sản thông qua “thin cross section” và công việc cho ra kếtquả là một phương pháp tiếp cận mới, cũng như sự tiến bộ trong hình học tích phân và
tô pô Từ đó đến hết năm 1970, Morphology xử lý cơ bản với các ảnh nhị phân, tạo racác phép toán và kĩ thuật như: Dilation, Erosion, Opening, Closing…
Phép giãn (Dilation): Phép toán Dilation là thao tác giãn nở/phình to các đốitượng ảnh đơn sắc
Hình 2 4 Phép giãnPhép co (Erosion): Phép toán Erosion là thao tác xói mòn/co hẹp các đối tượngảnh đơn sắc Nếu như phép dãn có thể nói là thêm điểm ảnh vào trong đối tượng ảnh,
Trang 27làm cho đối tượng ảnh trở nên lớn hơn thì phép co sẽ làm cho đối tượng ảnh trở nênnhỏ hơn, ít điểm ảnh [1]
Hình 2 5 Phép co
1.6.8.1 Những định dạng trong ảnh
Ảnh thu nhận được sau quá trình số hóa thường được lưu lại cho các quá trình
xử lý tiếp theo hay truyền đi Trong quá trình truyền của kỹ thuật xử lý ảnh, tồn tạinhiều định dạng khác nhau từ ảnh đen trắng như định dạng IMG, ảnh đa cấp xám chođến ảnh màu (BMP,JPEG,GIF) [1]
1.6.8.2 Các phần mềm hổ trợ xử lý ảnh
Hiện nay xử lý ảnh được giảng dạy trường đại học và ứng dụng vào thực tế rấtnhiều như các phần mềm chỉnh sửa hình ảnh hay nhận biết khuôn mặt Chính vì thế córất nhiều công cụ để chúng ta lập trình ứng dụng vào thực tế Như phải kể đến Matlap,hay ngôn ngữ Python,… [1]
Trang 28Chương 2 CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ
2.1 Ngôn ngữ lập trình python
2.1.1 Giới thiệu
Hiện nay, Python là một trong những ngôn ngữ lập trình đang được chú ý bởitính đa dạng về ứng dụng, thư viện phong phú và cộng đồng đông đảo Đã làm việcvới PHP 10 năm, và có những tác vụ mà PHP khó mà thực hiện tối ưu được, khiếnmình phải tiếp cận với Python trong giai đoạn này Cuốn sách nhỏ này được viết trongquá trình mình bắt đầu học Python và giải quyết các bài toán cơ bản theo nhu cầu củamình Hy vọng những ghi chép của mình cũng sẽ giúp ích cho những ai đang quan tâmđến việc ứng dụng Python vào công việc và xử lý hiện tại
Python là một ngôn ngữ phiên dịch (Interpreter Language), tức là không cầnbuild thành file thực thi mà chạy trực tiếp như PHP Hiện tại Python có 2 nhánh chính
là 2.x và 3.x Ở nhánh 2.x đã dừng phát triển và đang đứng ở phiên bản 2.7 NhánhPython 3.x thì vẫn đang được tiếp tục phát triển [2]
Website chính thức của Python: www.python.org
Hình 2 6 Trang chủ Python
2.1.2 Đặc điểm nổi bật của python
Python là ngôn ngữ có hình thức đơn giản, cú pháp ngắn gọn, sử dụng một sốlượng ít các từ khoá, do đó Python là một ngôn ngữ dễ học đối với người mới bắt đầutìm hiểu Python là ngôn ngữ có mã lệnh (source code hay đơn giản là code) khôngmấy phức tạp Cả trường hợp bạn chưa biết gì về Python bạn cũng có thể suy đoánđược ý nghĩa của từng dòng lệnh trong source code
Python có nhiều ứng dụng trên nhiều nền tảng, chương trình phần mềm viếtbằng ngôn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhaubao gồm Windows, Mac OSX và Linux [2]
2.2 Thư viện openCV
2.2.1 Giới thiệu về OpenCV
2.2.1.1 Giới thiệu
OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thịgiác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh, vàcác vấn đề liên quan tới thị giác máy OpenCV được thiết kế một cách tối ưu, sử dụngtối đa sức mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời
Trang 29gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thôngthường OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau(cross-patform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS
… Việc sử dụng thư viện OpenCV tuân theo các quy định về sử dụng phần mềm mãnguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho cả mụcđích phi thương mại lẫn thương mại
Dự án về OpenCV được khởi động từ những năm 1999, đến năm 2000 nó đượcgiới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng,tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm
2008 bản 1.1 (pre-release) mới được ra đời Tháng 10 năm 2009, bản OpenCV thế hệthứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản này có giao diện của C++ (khácvới phiên bản trước có giao diện của C) và có khá nhiều điểm khác biệt so với phiệnbản thứ nhất
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởWillow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot Chođến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận(none -profit foundation) và được hưởng ứng rất lớn của cộng đồng [3]
2.2.1.2 Phiên bản openCV
Cho tới nay, trải qua hơn 6 năm từ lúc phiên bản OpenCV đầu tiên được công
bố, đã có lần lượt nhiều phiên bản OpenCV ra đời, tuy nhiên có thể chia thư viện nàythành hai bản chính dựa trên những đặc điểm khác biệt lớn nhất của chúng: phiên bảnOpenCV thế hệ thứ nhất (hay còn gọi là phiên bản OpenCV 1.x) và phiên bảnOpenCV thứ hai (hay còn gọi là phiên bản OpenCV 2.x) Sau đây ta sẽ chỉ ra một sốđiểm khác biệt cơ bản giữa hai phiên bản này [3]
2.2.2 Các phép xử lý dơn giản của OpenCV
2.2.2.1 Không gian màu, chuyển đổi giữa các không gian màu
Khôn gian màu là một mô hình toán học dùng để mô tả các màu sắc trong thực
tế được biểu diễn dưới dạng số học Trên thực tế có rất nhiều không gian màu khácnhau được mô hình để sử dụng vào những mục đích khác nhau Trong bài này ta sẽtìm hiểu qua về ba không gian màu cơ bản hay được nhắc tới và ứng dụng nhiều, đó là
hệ không gian màu RGB, HSV và CMYK [3]
- Không gian màu RGB [3]
RGB là không gian màu rất phổ biến được dùng trong đồ họa máy tính và nhiềuthiết bị kĩ thuật số khác Ý tưởng chính của không gian màu này là sự kết hợp của 3màu sắc cơ bản : màu đỏ (R, Red), xanh lục (G, Green) và xanh lơ (B, Blue) để mô tảtất cả các màu sắc khác
Trang 30Nếu như một số đạt được mã hóa bằng 24bit, nghĩa là 8bit cho kênh R, 8bit chokênh G, 8bit cho kênh B, thì mỗ kênh này màu này sẽ nhận giá trị từ 0-255 Với mỗigiá trị khác nhau của các kênh màu kết hợp với nhau ta sẽ được một màu khác nhau,như vậy ta sẽ có tổng cộng 255x255x255 = 1.66 triệu màu sắc.
Ví dụ: màu đen là sự kết hợp của các kênh màu (R, G, B) với giá trị tương ứng(0, 0, 0) màu trắng có giá trị (255, 255, 255), màu vàng có giá trị (255, 255, 0), màutím đậm có giá trị (64, 0, 128) Nếu ta dùng 16bit để mã hóa một kênh màu (48bit chotoàn bộ 3 kênh màu) thì dãi màu sẽ trãi rộng lên tới 3*2^16 = Một con số rất lớn
Hình 2 7 Không gian mùa RGB
- Không gian màu CMYK [3]
CMYK là không gian màu được sử dụng phổ biến trong ngành công nghiệp inấn.Ý tưởng cơ bản của hệ không gian này là dùng 4 màu sắc cơ bản để phục vụ choviệc pha trộn mực in Trên thực tế, người ta dùng 3 màu là C=Cyan: xanh lơ,M=Magenta: hồng xẫm, và Y=Yellow: vàng để biểu diễn các màu sắc khác nhau Nếulấy màu hồng xẫm cộng với vàng sẽ ra màu đỏ, màu xẫm kết hợp với xanh lơ sẽ choxanh lam Sự kết hợp của 3 màu trên sẽ cho ra màu đen, tuy nhiên màu đen ở đâykhôn phải là đen tuyệt đối và thường có độ tương phản lớn, nên trong ngành in, để tiếtkiệm mực in người ta thêm vào màu đen để in những chi tiết có màu đen thay vì phảikết hợp 3 màu sắc trên Và như vậy ta có hệ màu CMYK chữ K ở đây là để kí hiệumàu đen (Black), có nhẽ chữ B đã được dùng để biểu diễn màu Blue nên người ta lấychữ cái cuối K để biểu diễn màu đen?
Nguyên lý làm việc của hệ màu này như sau : Trên một nền giấy trắng, khi mỗimàu này được in lên sẽ loại bỏ dần đi thành phần màu trắng 3 màu C, M, Y khác nhau
in theo những tỉ lệ khác nhau sẽ loại bỏ đi thành phần đó một cách khác nhau và cuốicùng cho ta màu sắc cần in Khi cần in màu đen, thay vì phải in cả 3 màu người tadùng màu đen để in lên Nguyên lý này khác với nguyên lý làm việc của hệ RGB ởchỗ hệ RGB là sự kết hợp của các thành phần màu, còn hệ CMYK là sự loại bỏ lẫnnhau của các thành phần màu
Hình 2 8 Không gian màu CMYK
- Không gian màu HSV [3]
HSV và cũng gần tương tự như HSL là không gian màu được dùng nhiều trongviệc ch ỉnh sữa ảnh, phân tích ảnh và một phần của lĩnh vực thị giác máy tính Hệkhông gian này dựa vào 3 thông số sau để mô tả màu sắc H = Hue: màu sắc, S =Saturation: độ đậm đặc, sự bảo hòa, V = value: giá trị cường độ sáng Không gian màu
Trang 31này thường được biểu diễn dưới dạng hình trụ hoặc hình nón Theo đó, đi theo vòngtròn từ 0 -360 độ là trường biểu diễn màu sắc(Hue) Trường này bắt đầu từ màu đỏ đầutiên (red primary) tới màu xanh lục đầu tiên (green primary) nằm trong khoảng 0-120
độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ (green primary - blue primary) Từ 240
- 360 là từ màu đen tới lại màu đỏ
Hình 2 9 Không gian màu HSV
2.2.2.2 Chuyển đổi ảnh màu
- Biến đổi ảnh xám (Grayscale convert) [3]
Trong xử lý ảnh, việc chuyển đổi ảnh màu sang ảnh xám là công việc vô cùngphổ biến
Ảnh màu thực chất chỉ là tập hợp của những ma trận số có cùng kích thước Khimuốn xử lý thông tin trên ảnh, sẽ dễ dàng hơn nếu ta chỉ xử lý dữ liệu trên một ma trận
số thay vì nhiều ma trận số Việc biến đổi ảnh màu về ảnh số (Grayscale converting)xuất hiện vì mục đích trên - biến đổi thông tin ảnh về một ma trận số hai chiều duynhất
Giả sử, hình ảnh của bạn được lưu trữ dưới dạng RGB (Red-Green-Blue) Điềunày có nghĩa bạn có ba ma trận xám tương ứng cho màu Red, Green, Blue Công việccủa bạn là tìm cách tổng hợp ba ma trận này về thành một ma trận duy nhất Một trong
số công thức phổ biến để thực hiện việc đó là:
Nếu bạn chưa quen về việc thực hiện phép toán trên ma trận, hãy hình dung Y,
R, G, B là giá trị mức xám trên các ô có tọa độ giống nhau
Hình 2 10 Biến đổi ảnh xám
- Biến đổi ảnh trắng đen (Black-and-white convert) [3]
Trang 32Từ ảnh xám, bạn có thể biến đổi về thành ảnh chỉ có hai màu đen-trắng and-white)
(black-Ảnh đen trắng thường được ứng dụng trong bài toán phân vùng ảnh (Imagesegmentation) Giả sử trong hình ví dụ trên, bằng cách biến đổi ảnh về nhị phân, bạn
có thể loại bỏ các thông khung cảnh xung quanh và chỉ giữ lại hai con cá heo trênhình
Ảnh đen trắng, như tên gọi, chỉ có hai màu đen với giá trị là 0 và trắng với giátrị 255 Bài toán đặt ra là làm thế nào để biến đổi ảnh xám (hay nói cách khác là một
ma trận 2 chiều với giá trị mỗi ô trong khoảng 0-255) về thành một ma trận 2 chiều vớigiá trị mỗi ô là 0 hoặc 255
Cách giải quyết là chọn một ngưỡng (threshold) để xác định đâu là điểm ảnhđen và đâu là điểm ảnh trắng Nếu giá trị trên ảnh xám lớn hơn ngưỡng threshold, đấy
là điểm ảnh trắng và ngược lại
Gọi ảnh xám là Gray, ảnh đen trắng cần xác định là BW, tọa độ các pixel trênhình là (x,y), ta có
- BW(x,y) = 255 nếu Gray(x,y) > threshold
- BW(x,y) = 0 nếu Gray(x,y) <= threshold
Hình 2 11 Biến đổi ảnh đen trắng
- Chuyển đổi giữa các không gian màu [3]
Chuyển đổi RGB sang CMYK và ngược lại:
Như đã nói ở trên, thành phần K là thành phần phụ dùng để in cho những điểmmàu có màu đen trong hệ CYMK, do vậy để chuyển không gian màu từ RGB sangCMYK trước hết ta chuyển RGB sang CMY sau đó tìm thành phần K còn lại Cô ngthức chuyển từ
RGB sang CMY:
(C', M', Y') = ((255 - R), (255 - G), (255 - B))
Việc tính giá trị của K lại là một vấn đề khác vì nó liên quan tới nhà sản xuấtcông nghệ in, tuy nhiên về mặt lý thuyết có thể chấp nhận rằng K = min {C'/2,55,M'/2,55, Y'/2,55}, như vậy 0<= K <=100
Nếu K = 100, thì C = M = Y =0 (trương hợp in màu đen)
Trang 33Nếu 0 < K < 100:C=(C’/2.55 - K)* 100 /(100 - K), M = (M'/2.55 - K) * 100/(100 - K), Y = (Y'/2.55 - K) *100 /(100 - K) và K = K Trong đó, C, M, Y, K đượclàm tròn tới để lấy chỉ số nguyên.
Chuyển đổi RGB sang HSV và ngược lại:
Giả sử ta có một điểm màu có giá trị trong hệ RGB là (R, G, B) ta chuyển sangkhông gian SHV như sau:
S = C/V Trong trường hợp V hoặc C bằng 0, S = 0
Để chuyển từ HSV sang RGB ta làm như sau:
Giả sử ta có không gian màu HSV với H = [0, 360], S = [0, 1], V = [0, 1] Khi đó, tatính C = VxS H' = H/60
X = C(1 - |H' mod2 -1|) Ta biểu diễn hệ (R1, G1, B1) như sau:
Single-shot object detection
Single-shot object detection sử dụng một lần truyền hình ảnh đầu vào để đưa ra
dự đoán về sự hiện diện và vị trí của các đối tượng trong ảnh Nó xử lý toàn bộ hìnhảnh trong một lần chạy, khiến chúng trở nên hiệu quả về mặt tính toán
Tuy nhiên, single-shot object detection thường kém chính xác hơn so với cácphương pháp khác và kém hiệu quả hơn trong việc phát hiện các đối tượng nhỏ Các
Trang 34thuật toán như vậy có thể được sử dụng để phát hiện các đối tượng theo thời gian thựctrong các môi trường hạn chế về tài nguyên.
YOLO là thuật toán single-shot object detection sử dụng mạng thần kinh tíchchập (CNN) để xử lý hình ảnh
Two-shot object detection
Two-shot object detection sử dụng hai lần truyền hình ảnh đầu vào để đưa ra dựđoán về sự hiện diện và vị trí của đối tượng Lượt đầu tiên được sử dụng để tạo mộttập hợp các đề xuất hoặc vị trí tiềm năng của đối tượng Lượt thứ hai được sử dụng đểtinh chỉnh các đề xuất này và đưa ra dự đoán cuối cùng Cách tiếp cận này chính xáchơn Single-shot object detection nhưng cũng tốn kém hơn về mặt tính toán
Nhìn chung, sự lựa chọn giữa phát hiện đối tượng một lần và hai lần tùy thuộcvào các yêu cầu và ràng buộc cụ thể của ứng dụng
Nói chung, Single-shot object detection phù hợp hơn cho các ứng dụng thờigian thực, trong khi two-shot object detection tốt hơn cho các ứng dụng đề cao độchính xác [4]
2.3.1 Khái niệm yolo
YOLO (You Only Look Once) là một trong những mô hình nổi tiếng nhất trongObject Detection (phát hiện đối tượng) Tuy sau đó có sự xuất hiện của những đối thủrất đáng gờm (vừa nhanh, vừa chính xác) như RetinaNet, SSD (Single Shot Detector),YOLO cũng không ngừng phát triển với những biến thể riêng của mình Trong đề tàinày nhóm chúng em sử dụng YOLOV8
Hình 2 12 Các lớp trong YOLOYolo là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đốitượng Yolo được tạo ra từ việc kết hợp giữa các convolutional layers và connectedlayers.Trong đóp các convolutional layers sẽ trích xuất ra các feature của ảnh, còn full-connected layers sẽ dự đoán ra xác suất đó và tọa độ của đối tượng [4]
2.3.2 Kiến trúc mạng YOLO
Trang 35Kiến trúc YOLO bao gồm: base network là các mạng convolution làm nhiệm
vụ trích xuất đặc trưng Phần phía sau là những Extra Layers được áp dụng để pháthiện vật thể trên feature map của base network Base network của YOLO sử dụng chủyếu là các convolutional layer và các fully conntected layer Các kiến trúc YOLO cũngkhá đa dạng và có thể tùy biến thành các version cho nhiều input shape khác nhau
Hình 2 13 Sơ đồ kiến trúc mạng YOLOConvolutional layers:
- Các lớp tích chập được sử dụng để trích xuất đặc trưng từ ảnh đầu vào
- YOLO sử dụng một kiến trúc CNN có nhiều lớp tích chập để trích xuấtcác đặc trưng của ảnh
Fully Connected layers:
- Các lớp kết nối đầy đủ được sử dụng để chuyển đổi các đặc trưng đã tríchxuất thành các dự đoán về vị trí và loại đối tượng
- YOLO sử dụng một số lớp kết nối đầy đủ để biến đổi đặc trưng của ảnhthành các giá trị tọa độ và xác suất nhận dạng
Bounding Box Predictions:
- Các lớp đầu ra của YOLO được sử dụng để dự đoán các bounding box(hình chữ nhật) xác định vị trí của các đối tượng trong ảnh
- Mỗi bounding box được định nghĩa bởi tọa độ của điểm trung tâm, chiềurộng và chiều cao của bounding box
Trang 36Hình 2 14 Các layer trong mạng darknet-53
2.3.3 Cách Yolo hoạt động
Đầu vào của mô hình là một ảnh, mô hình sẽ nhận dạng ảnh đó có đối tượngnào hay không, sau đó sẽ xác định tọa độ của đối tượng trong bức ảnh ẢNh đầu vàođược chia thành thành S×SStimes SS×S ô thường thì sẽ là: 3×33times33×3,7×77times77×7, 9×99times99×9… việc chia ô này có ảnh hưởng tới việc mô hình pháthiện đối tượng
Hình 2 15 Hoạt động của YOLOVới Input là 1 ảnh, đầu ra mô hình là một ma trận 3 chiều có kích thước
S×S×(5×N+M)Stimes Stimes(5times N+ M)S×S×(5×N+M) với số lượng tham
số mỗi ô là (5×N+M)(5times N + M)(5×N+M) với N và M lần lượt là số lượng Box vàClass mà mỗi ô cần dự đoán Ví dụ với hình ảnh trên chia thành 7×77times77×7 ô, mỗi
ô cần dự đóan 2 bounding box và 3 object: con chó, ô tô, xe đạp thì output là7×7×137times7times137×7×13, mỗi ô sẽ có 13 tham số, kết quả trả về (7×7×2=98)(7times7times2 = 98)(7×7×2=98) bounding box Chúng ta sẽ cùng giải thích con số(5×N+M)(5times N + M)(5×N+M) được tính như thế nào
Dự đoán mỗi bounding box gồm 5 thành phần : (x, y, w, h, prediction) với (x,
y ) là tọa độ tâm của bounding box, (w, h) lần lượt là chiều rộng và chiều cao của
Trang 37bounding box, prediction được định nghĩa Pr(Object)∗ IOU(pred,truth)Pr(Object)*IOU(pred, truth)Pr(Object)∗ IOU(pred,truth) xin trình bày sau Với hình ảnh trên như
ta tính mỗi ô sẽ có 13 tham số, ta có thể hiểu đơn giản như sau tham số thứ 1 sẽ chỉ ra
ô đó có chứa đối tượng nào hay không P(Object), tham số 2, 3, 4, 5 sẽ trả về x, y ,w, hcủa Box1 Tham số 6, 7, 8, 9, 10 tương tự sẽ Box2, tham số 11, 12, 13 lần lượt là xácsuất ô đó có chứa object1( P(chó|object), object2(P(ô tô|object)), object3(P( xe đạp|object)) Lưu ý rằng tâm của bounding box nằm ở ô nào thì ô đó sẽ chứa đối tượng,cho dù đối tượng có thể ở các ô khác thì cũng sẽ trả về là 0 Vì vậy việc mà 1 ô chứa 2hay nhiều tâm của bouding box hay đối tượng thì sẽ không thể detect được [4]
2.3.4 Output của YOLO
Output của mô hình YOLO là một véc tơ sẽ bao gồm các thành phần:
y T
Trong đó:
P0 là xác suất dự báo vật thể xuất hiện trong bounding box
(tx, ty,tw,th) giúp xác định bounding box Trong đó tx, ty là tọa độ tâm và tw,th làkích thước rộng, dài của bounding box
⟨ p1, p2,…pc scores of c classes⟩ là véc tơ phân phối xác suất dự báo của cácclasses
Việc hiểu output khá là quan trọng để chúng ta cấu hình tham số chuẩn xác khihuấn luyện model qua các open source như darknet Như vậy output sẽ được xác địnhtheo số lượng classes theo công thức (n_class + 5) Nếu huấn luyện 80 classes thì bạn
sẽ có output là 85 Trường hợp bạn áp dụng 3 anchors/cell thì số lượng tham số output
sẽ là:
(n_class + 5) ×=85 × 3=255
Hình 2 16 Output của YOLOKiến trúc một output của model YOLO Hình ảnh gốc là một feature map kíchthước 13x13 Trên mỗi một cell của feature map chúng ta lựa chọn ra 3 anchor boxesvới kích thước khác nhau lần lượt là Box 1, Box 2, Box 3 sao cho tâm của các anchorboxes trùng với cell Khi đó output của YOLO là một véc tơ concatenate của 3bounding boxes Các attributes của một bounding box được mô tả như dòng cuối cùngtrong hình [4]
2.3.5 Hàm tính IOU
Trang 38Trên ta có đề cập prediction được định nghĩa Pr(Object)∗ IOU(pred,truth) IOU(INTERSECTION OVER UNION) là hàm đánh giá độ chính xác của object detectortrên tập dữ liệu cụ thể IOU được tính bằng:
IoU = Area of Overlap
Area of ∪¿ ¿
Trong đó Area of Overlap là diện tích phần giao nhau giữa predicted boundingbox với grouth-truth bouding box , còn Area of Union là diện tích phần hợp giữapredicted bounding box với grouth-truth bounding box Những bounding box đượcđánh nhãn bằng tay trong tập traing set và test set Nếu IOU > 0.5 thì prediction đượcđánh giá là tốt
Hàm tính IOU trong YOLO hoạt động như sau:
Nhận đầu vào là hai bounding box cần tính IOU: box1 và box2
Tính toán tọa độ của vùng giao nhau của hai bounding box:
- Tọa độ (x1, y1) là tọa độ góc trên bên trái của bounding box có giá trị lớnhơn trong box1 và box2
- Tọa độ (x2, y2) là tọa độ góc dưới bên phải của bounding box có giá trịnhỏ hơn trong box1 và box2
- Nếu không có vùng giao nhau (không có sự chồng lấn), thì diện tích giaonhau sẽ bằng 0
Tính toán diện tích vùng giao nhau bằng cách tính toán chiều rộng và chiều caocủa vùng giao nhau (x2 - x1 + 1 và y2 - y1 + 1), và đảm bảo rằng kết quả không âm(sử dụng max(0, ))
Tính toán diện tích hợp của hai bounding box:
- Diện tích của box1 là (box1[2] - box1[0] + 1) * (box1[3] - box1[1] + 1),với (box1[2] - box1[0] + 1) là chiều rộng và (box1[3] - box1[1] + 1) làchiều cao
- Diện tích của box2 được tính tương tự
- Diện tích hợp là tổng của diện tích box1, box2 và trừ đi diện tích giaonhau
Tính toán IOU bằng cách chia diện tích giao nhau cho diện tích hợp: iou =intersection_area / union_area
Trả về giá trị IOU [4]
2.4 Chuẩn giao tiếp nối tiếp UART
2.4.1 Giới thiệu
Trang 39Các tên đầy đủ UART là “Universal Asynchronous Receiver / Transmitter”, và
nó là một vi mạch sẵn có trong một vi điều khiển nhưng không giống như một giaothức truyền thông (I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp.Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giaotiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song
Hình 2 17 Giao tiếp UART
Trong giao tiếp dữ liệu nối tiếp, dữ liệu có thể được truyền qua một cáp hoặcmột đường dây ở dạng bit-bit và nó chỉ cần hai cáp Truyền thông dữ liệu nối tiếpkhông đắt khi chúng ta so sánh với giao tiếp song song Nó đòi hỏi rất ít mạch cũngnhư dây Giao tiếp này rất hữu ích trong các mạch ghép so với giao tiếp song song
Trong giao tiếp dữ liệu song song, dữ liệu có thể được truyền qua nhiều cápcùng một lúc Truyền dữ liệu song song tốn kém nhưng rất nhanh, vì nó đòi hỏi phầncứng và cáp bổ sung Các ví dụ tốt nhất cho giao tiếp này là máy in cũ, PCI, RAM, [5]
2.4.2 Truyền thông UART
Trong giao tiếp này, có hai loại UART có sẵn là truyền UART và nhận UART
và giao tiếp giữa hai loại này có thể được thực hiện trực tiếp với nhau Đối với điềunày, chỉ cần hai cáp để giao tiếp giữa hai UART Luồng dữ liệu sẽ từ cả hai chântruyền (Tx) và nhận (Rx) của UARTs Trong UART, việc truyền dữ liệu từ Tx UARTsang Rx UART có thể được thực hiện không đồng bộ (không có tín hiệu CLK để đồng
bộ hóa các bit o / p)
Việc truyền dữ liệu của UART có thể được thực hiện bằng cách sử dụng bus dữliệu ở dạng song song bởi các thiết bị khác như vi điều khiển, bộ nhớ, CPU, v.v Saukhi nhận được dữ liệu song song từ bus, nó tạo thành gói dữ liệu bằng cách thêm ba bitnhư bắt đầu, dừng lại và trung bình Nó đọc từng bit gói dữ liệu và chuyển đổi dữ liệunhận được thành dạng song song để loại bỏ ba bit của gói dữ liệu Tóm lại, gói dữ liệunhận được bởi UART chuyển song song về phía bus dữ liệu ở đầu nhận
Trang 40Hình 2 18 Truyền thông UART
Dữ liệu bit hoặc khung dữ liệu:
Các bit dữ liệu bao gồm dữ liệu thực được truyền từ người gửi đến người nhận
Độ dài khung dữ liệu có thể nằm trong khoảng 5 & 8 Nếu bit chẵn lẻ không được sửdụng thì chiều dài khung dữ liệu có thể dài 9 bit Nói chung, LSB của dữ liệu đượctruyền trước tiên sau đó nó rất hữu ích cho việc truyền
Giao diện UART:
Hình dưới đây cho thấy UART giao tiếp với vi điều khiển Giao tiếp UART cóthể được thực hiện bằng ba tín hiệu như TXD, RXD và GND [5]