Nghiên cứu thực hiện xử lý ảnh

Một phần của tài liệu Ứng dụng xử lý ảnh trong nhận diện điều khiển ô tô (Trang 54)

4.1 Nghiên cứu tổng quan

4.1.2. Nghiên cứu thực hiện xử lý ảnh

4.1.2.1 Tiền xử lý ảnh

Màu được hình thành từ 2 nhân tố là thành phần màu và độ sáng. Giá trị của thành phần màu của một đối tượng xác định thuộc tính màu của đối tượng và độ sáng là một thuộc tính của mơi trường mà đối tượng đó nằm. Trong trường hợp ảnh màu, chúng ta có thể nói về giá trị của các thành phần màu và độ sáng.

Ba mục tiêu cần đặt được khi làm việc với các không gian màu:  Độ tương phản cao.

 Có thể tổng quát hóa.  Ổn định.

Từ đó, chúng ta sẽ định cấu hình mơi trường phát triển của mình và xem xét cấu trúc Sau đó, chúng tơi sẽ triển khai mã Python để làm việc với mơ hình trong OpenCV và 3 khơng gian màu sau:

 Không gian màu RGB (Red – Green – Blue).  Không gian màu L * a * b *.

 Không gian màu GRAY (Thang độ xám).

a) Không gian màu RGB (Red – Green – Blue)

Không gian màu RGB, là viết tắt của các thành phần màu Đỏ, Xanh lục và Xanh lam của một hình ảnh. Rất có thể bạn đã rất quen thuộc với khơng gian màu RGB vì hầu hết các ứng dụng màu và thư viện xử lý hình ảnh/thị giác máy tính sử dụng RGB theo mặc định. (Hình 4.9)

40

Hình 4.9: Màu RGB (Nguồn internet)

Để xác định màu trong mơ hình màu RGB, tất cả những gì chúng ta cần làm là xác định số lượng Đỏ, Xanh lục và Xanh lam có trong một pixel. Mỗi kênh Đỏ, Xanh lục và Xanh lam có thể có các giá trị được xác định trong phạm vi [0, 255] (với tổng số 256 sắc thái), trong đó 0 cho biết khơng có đại diện và 225 cho biết đại diện đầy đủ.

Không gian màu RGB là một ví dụ về khơng gian màu phụ gia: mỗi màu được thêm vào càng nhiều, pixel càng sáng và càng gần với màu trắng.

Như bạn có thể thấy, thêm màu đỏ và xanh lá cây sẽ dẫn đến màu vàng trên hình 4.9. Thêm màu đỏ và xanh lam sẽ tạo ra màu hồng. Và thêm cả ba màu đỏ, xanh lá cây và xanh lam với nhau, chúng ta sẽ tạo ra màu trắng.

Khơng gian màu RGB thường được hình dung dưới dạng khối lập phương như hình 4.10.

41

Hình 4.10: Khối màu RGB lập phương (Nguồn internet)

(Trong đó kích thước được cung cấp cho mỗi màu Đỏ, Xanh lục và Xanh lam) Vì màu RGB được định nghĩa là bộ 3 giá trị, với mỗi giá trị trong phạm vi [0, 255], do đó chúng ta có thể nghĩ về hình khối chứa 256 × 256 × 256 = 16,777,216 màu có thể có, tùy thuộc vào bao nhiêu Đỏ, Lục và Blue.

Tuy nhiên, đây không hẳn là không gian màu hay được thể hiện nhất để phát triển các ứng dụng dựa trên thị giác máy tính. Trên thực tế, cơng dụng chính của nó là hiển thị màu sắc trên màn hình. [8]

b) Khơng gian màu L * a * b *

Hình 4.11 là khơng gian màu L * a * b * kém trực quan hơn và không dễ hiểu như không gian màu HSV và RGB, nhưng nó được sử dụng nhiều trong thị giác máy tính.

Điều này là do khoảng cách giữa các màu có ý nghĩa cảm nhận thực tế, cho phép chúng tôi khắc phục các vấn đề về điều kiện ánh sáng khác nhau. Nó cũng đóng vai trị như một bộ mơ tả hình ảnh màu mạnh mẽ.

42

Hình 4.11: Hình ảnh trực quan của khơng gian màu L * a * b * được thể hiện qua

hình cầu (Nguồn internet)

Kênh L: "Độ đậm nhạt" của pixel. Giá trị này đi lên và xuống theo trục tung, từ trắng đến đen, với các màu xám trung tính ở tâm trục.

Kênh a: Bắt nguồn từ trung tâm của kênh L và xác định màu xanh lục thuần ở một đầu của quang phổ và màu đỏ thuần ở đầu kia.

Kênh b: Cũng bắt nguồn từ trung tâm của kênh L, nhưng vng góc với kênh a. Kênh b xác định màu xanh lam thuần khiết ở một trong các quang phổ và màu vàng tinh khiết ở quang phổ kia. [8]

c) Không gian màu GRAY (Thang độ xám)

Không gian cuối cùng này thực sự khơng phải là khơng gian màu mà nó chỉ đơn giản là biểu diễn thang độ xám của khơng gian màu RBG. Hình 4.12 thể hiện việc chuyển đổi không gian màu RGB sang thang độ xám.

43

Khơng gian màu GRAY có vai trị cực kì quan trọng trong việc phóng đại tín hiệu thu nhận hình ảnh. Nói đơn giản là khi chúng ta thu nhận hình ảnh khơng gian đầu vào là khơng gian màu RGB ta sẽ phải chuyển qua thang màu GRAY (xám).

Hình 4.12: Chuyển đổi khơng gian màu RGB sang thang độ xám (Gray)

Một bức ảnh màu xám, chỉ đơn giản là các màu sắc được thể hiện là màu xám. Lý do để chuyển đổi từ không gian màu RGB sang mức xám là lượng thông tin được cung cấp ít nhất trên mỗi ảnh. Thơng thường, độ xám được lưu trữ dưới dạng số nguyên 8 bit với 256 màu xám khác nhau từ màu đen sang trắng. Vậy thì mức xám liên tiếp là được biểu hiện tốt hơn đáng kể.

Ảnh xám đơn giản là một hình ảnh trong đó các màu là các sắc thái của màu xám. Lý do cần phải phân biệt giữa ảnh xám và các ảnh khác nằm ở việc ảnh xám cung cấp ít thơng tin hơn cho mỗi pixel.

Với ảnh thơng thường thì mỗi pixel thường được cung cấp 3 trường thông tin trong khi với ảnh xám chỉ có 1 trường thơng tin, việc giảm khối lượng thông tin giúp tăng tốc độ xử lý nhưng vẫn đảm bảo các tác vụ cần thiết Ảnh nhị phân (binary) được xem như là 1 bước giảm thông tin nữa so với ảnh xám.

Với ảnh xám thì ngưỡng xám của mỗi pixel được miêu tả trong khoảng [0;255] nhưng với ảnh nhị phân thì mỗi pixel chỉ có giá trị bằng 0 hoặc 255. Tuy

44

thông tin bị giảm khá nhiều nhưng ảnh nhị phân lại thể hiện được rất rõ các yếu tố về góc cạnh và hình dàng của vật thể, điều đó rất có lợi trong các bài toán lọc nhiễu, nhận dạng vật thể... Chính vì thế ta dễ dàng nhận dạng hơn khi chuyển đổi hình ảnh sang thang màu xám. [8]

e. Tensor

Tensor được hiểu giống như một ma trận.

Ví dụ: trong bài tốn kéo, nén thanh thẳng (1 chiều) thì ứng suất (hiểu gần như áp suất) là 1 vector và là tensor 1x1. Bài toán miếng phẳng (2 chiều) thì tensor là ma trận 2x2 (2 ứng suất pháp theo 2 phương và 2 ứng suất tiếp - ứng suất pháp là ứng suất vng góc với bề mặt, gây kéo hoặc nén cịn ứng suất tiếp gây biến dạng góc, tức gây trượt). Bài tốn khơng gian (tổng quát) thì ứng suất là tensor 3 chiều (3x3) gồm 3 ứng suất pháp và 6 ứng suất tiếp. [4]

f. Mobilenet

Mobilenet có 3 tác dụng chính cho mơ hình:

 Nhận diện đặc trưng: Quá trình học và nhận diện đặc trưng sẽ được tách biệt theo từng bộ lọc.

 Giảm thiểu khối lượng tính tốn  Giảm thiểu số lượng tham số

Sử dụng Mobilenet trong Python:  Khai báo sử dụng

 Đọc model  Đọc các nhãn  Đọc ảnh đầu vào  Đưa ảnh vào mạng

45  Lấy và phân tích dữ liệu ra

 Kết quả

Hình 4.13: Tích chập của 2 xung vng, kết quả sóng đầu ra có dạng tam giác

(Nguồn internet)

Mobilenet là mơ hình sử dụng tích chập như hình 4.13 có thể phân tách theo chiều sâu mang tên DSC (Depthwise Separable Convolution) nhằm giảm kích thước mơ hình và giảm mức độ phức tạp tính tốn.

Tích chập là 1 phép tốn thực hiện với 2 hàm số f và g và kết quả cho ra 1 hàm số thứ 3.

4.1.2.2 Các mốc trên khuôn mặt ứng dụng OpenCV trong Python

Các điểm mốc trên khuôn mặt là một tập con của bài toán nhận dạng. Đưa vào một hình ảnh đầu vào, sau đó cơng cụ dự đốn nhận dạng sẽ cố gắng xác định các điểm mốc dọc theo hình dạng.

Vì vậy, khi thực hiện nhận dạng trên khuôn mặt, mục tiêu của chúng ta là phát hiện các cấu trúc quan trọng trên khuôn mặt bằng cách sử dụng các phương pháp dự đốn nhận dạng hình dạng, đặc điểm được thể hiện trên khn mặt.

46

Do đó, việc phát hiện các điểm mốc trên khn mặt là một q trình gồm có 2 bước:  Bước 1: Khoanh vùng khuôn mặt trong ảnh.

 Bước 2: Phát hiện cấu trúc khn mặt chính dựa trên các đặc điểm mốc của khuôn mặt và trả kết quả. [4]

a) Khoanh vùng khuôn mặt

Bước 1: Phát hiện khuôn mặt

Tiền xử lý ảnh: trích xuất ảnh từ video, webcam. Sau đó biến đổi thành ảnh xám (gray). (1)

Tìm khn mặt trong ảnh xem có khn mặt trong ảnh khơng, nếu có thì có bao nhiêu khn mặt. Sau đó crop để qua bước 3. (2)

Nhận diện khn mặt và trả về kết quả. Có thể vẽ hình vng bao lấy khn mặt hoặc vẽ text tên người. (3)

Bước 2: Nhận diện khuôn mặt

Nhận diện khuôn mặt là học có giám sát, tức là phải dán nhãn cho ảnh khn mặt. Từ đó chương trình sẽ tìm ra sự khác biệt của các khuôn mặt rồi lưu lại model. Với model đã học chúng ta dùng để nhận diện khuôn mặt.

Cách thức hoạt động:

 Thu thập khuôn mặt, crop rồi lưu vào folder.  Khi chạy chương trình thì training ảnh khn mặt.  Với mỗi khung hình tiến hành tìm kiếm khn mặt.  Nếu tìm thấy khn mặt thì nhận diện rồi in kết quả.

47

Trong thực tế tình trạng nhận diện sai xảy ra khá nhiều, để khắc phục có một vài cách như sau:

 Thay đổi file sascade và tối ưu các tham số. (1)  Tìm đơi mắt trong khn mặt đã nhận được. (2)  Lập trình xử lý kết quả đưa ra cảnh báo. (3)

4.2 Phân tích thiết kế mơ hình cơ bản

Hình 4.14: Bố trí lắp đặt mơ hình trong xe ơ tơ:

1- Mơ hình thiết bị; 2-Giá đỡ; 3- Dây đi nguồn; 4: Jack cắm nguồn.

Hình 4.14 mơ tả thiết kế mơ hình được để theo phương nằm ngang, vị trí đặt trên tap lô ô tô, hoặc được lắp ráp giá đỡ trên kính xe ở vị trí đối diện người lái:

 Nhằm tạo điều kiện thuận lợi cho thiết bị có thể theo dõi người lái xe trong môi trường tốt nhất.

 Tiện lợi cho việc lắp đặt.  Dễ kiếm soát, kiểm tra thiết bị.

1 2

3

48

 Quan sát được hướng đối hiện của người lái xe.

 Truyền đạt tính hiệu cảnh báo đến người lái xe một cách trực quan nhất.

4.2.1 Yêu cầu về thiết kế 4.2.1.1 Phần cứng 4.2.1.1 Phần cứng

Phần mạch được sử dụng là mạch Raspberry Pi là từ để chỉ các máy tính chỉ có một board mạch (hay cịn gọi là máy tính nhúng) kích thước chỉ bẳng một thẻ tín dụng, được ứng dụng nhiều mơ hình khác nhau trong thực tế.

Đánh vào những hạn chế còn được thể hiện trên các thiết bị theo dõi sức khỏe, tình trạng mệt mỏi, buồn ngủ tương tự khác trên thị trường. Ta sẽ khắc phục những hạn chế như sau:

 Cấu tạo thiết bị nhỏ gọn, phù hợp với đa số các dòng xe khác nhau.  Âm thanh cảnh báo được lập trình Tiếng Việt.

 Phần nguồn được tích hợp vào ơ tơ.

 Tín hiệu cảnh báo trực quan, giúp tài xế cảm thấy thoải mái, không áp lực khi sử dụng thiết bị.

 Tín hiệu khẩn cấp giúp giao tiếp đến người xung quanh khi người lái gặp vấn đề về sức khỏe.

Vấn đề sạc rời cịn khá phổ biến có thể gây nhiều khó khăn cho thiết bị theo dõi, khi người lái xe phải đi những cung đường xa mà lượng pin rời khó đáp ứng được cho thiết bị. Vì lý do đó, việc tích hợp nguồn pin của thiết bị theo dõi trực tiếp lên xe ô tô là rất cần thiết.

Cấu tạo, chi tiết thiết bị phải ở mức tối giản, dễ sử dụng để tiếp cận, đáp ứng được với hầu hết tất cả mọi người khi sử dụng thiết bị này. Có thể theo dõi được người lái kể cả khi đeo kính và âm thanh cảnh báo được thiết lập bằng Tiếng Việt giúp dễ dàng sử dụng.

49

Thiết bị cảnh báo phải tạo ra tín hiệu mang tính cảnh báo và đảm bảo được khả năng đánh thức cho người lái xe. Ngồi ra, cịn phát triển thêm bộ cảnh báo giao tiếp người xung quanh khi người lái xe gặp nạn trong tình trạng nguy cấp.

4.2.1.2 Phần mềm Python: Python:

Python là một trong những ngơn ngữ lập trình thiên hướng đối tượng bậc cao. Loại ngôn ngữ này được sử dụng cho quá trình phát triển ứng dụng và các website khác nhau. Ngôn ngữ này được tạo ra bởi Guido van Rossum và đã được ông phát triển nó trong một dự án mở.

 Là ngôn ngữ thông dịch cấp cao:

Khi sử dụng Python người dùng khơng cần làm những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp dữ liệu vô nghĩa. Khi chạy code Python sẽ tự động chuyển đổi code thành dạng ngơn ngữ máy tính có thể hiểu.

 Khả năng di chuyển:

Hầu hết, chương trình Python đều có thể di chuyển từ nhiều nền tảng khác nhau như: Windows, macOS, Linux mà khơng có bất kỳ thay đổi nào. [4]

OpenCV:

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh. Là một sản phẩm được cấp phép BSD, OpenCV giúp các doanh nghiệp dễ dàng sử dụng và sửa lỗi mã.

Dự án OpenCV này được bắt đầu thực hiện vào năm 1999 tại Intel bởi Gary Bradsky.

Ứng dụng:  Nhận dạng ảnh

50  Xử lý hình ảnh

 Phục hồi hình ảnh/video  Thực tế ảo

 Các ứng dụng khác…

Khả năng di chuyển: Opencv có các giao diện cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV. [4]

Autodesk Inventor:

Autodesk Inventor là phần mềm thiết kế mơ hình chất rắn cơ học 3D được phát triển bởi Autodesk để tạo ra các nguyên mẫu kỹ thuật số 3D.

Được sử dụng để thiết kế cơ khí 3D, giao tiếp thiết kế, tạo dụng cụ và mô phỏng sản phẩm. Phần mềm này cho phép người dùng tạo ra các mơ hình 3D chính xác để hỗ trợ thiết kế, hình dung và mơ phỏng các sản phẩm trước khi chúng được chế tạo.

Phần mềm hỗ trợ mô phỏng chuyển động. Các công cụ mô phỏng này cho phép người dùng thiết kế ô tô hoặc các bộ phận ô tô.

51

4.2.2 Sơ đồ khối tổng quan

Hình 4.15: Sơ đồ khối tổng quan nguyên lý của mơ hình Chú thích:

Modul relay: Chân COM nối nguồn 12V. Được kết nối trực tiếp tất cả các nhân GPIO với mạch chính song đảm nhiệm nhiệm vụ input/output GPIO giúp mạch chính.

Thiết bị cảnh báo khẩn cấp: Chân dương nối vào chân NO của relay, chân âm được cấp mass sẵn.

52

4.2.3 Nguyên lý hoạt động

Nguyên lý hoạt động của hình 4.15 là khi cơng tắc bật chế độ “ON”  Mạch Raspberry pi 4 được khởi động  cấp nguồn làm Camera pi được hoạt động  Chương trình lập trình được nạp trên mạch hoạt động  Camera pi thu nhận thơng tin hình ảnh của người lái xe liên tục Khi phát hiện người lái xe có dấu hiệu bất thường  có 3 trường hợp.

Trường hợp 1: Dấu hiệu người lái xe nhắm mắt 3 giây trở lên

Khi người lái xe nhắm mắt từ 3 giây trở lên  Camera thu nhận thông tin bất thường  Mạch tiếp nhận và xử lý  Gửi tín hiệu đi  Audio output jack 3.5mm nhận tín hiệu  Loa nhắc nhở hoạt động  Cảnh báo nhắc nhở người lái xe Th_1.1. (Nhắc nhở lần 1 “hãy cẩn thận”)

Khi người lái xe nhắm mắt từ 7 giây trở lên  Camera thu nhận thông tin bất thường  Mạch tiếp nhận và xử lý  Gửi tín hiệu đi  Audio output jack 3.5mm nhận tín hiệu  Loa nhắc nhở hoạt động  Cảnh báo nhắc nhở người lái xe Th_1.2. (Nhắc nhở lần 2 “hãy dừng xe và nghỉ ngơi”)

Nếu thời gian cảnh báo nhắc nhở ban đầu vượt quá 12 giây, mà người lái xe vẫn chưa quay về trạng thái bình thường  Mạch tiếp nhận và xử lý  Gửi tín hiệu đi  Audio output jack 3.5mm nhận tín hiệu  Loa nhắc nhở hoạt động  Cảnh báo nhắc nhở người lái xe Th_1.3. (Nhắc nhở lần 3 “tiếng bíp dài”)  Modul relay nhận tín hiệu, cuộn relay được cấp điện làm đóng chân NO (chân COM đã kích nguồn 12V)  Bảng chữ led cầu cứu, còi xe, đèn khẩn cấp (được cấp Mass sẵn)  Hoạt động cảnh báo khẩn cấp với người xung quanh.

Một phần của tài liệu Ứng dụng xử lý ảnh trong nhận diện điều khiển ô tô (Trang 54)

Tải bản đầy đủ (PDF)

(181 trang)