TỔNG QUAN
Đặt vấn đề
Trong bối cảnh xã hội hiện đại, việc phát triển kinh tế gắn liền với tự động hóa ngày càng trở nên phổ biến, đặc biệt trong ngành công nghiệp Các sản phẩm tự hành đang thu hút sự quan tâm lớn từ các công ty công nghệ, hứa hẹn sẽ mang lại nhiều thay đổi tích cực cho cuộc sống Sự phát triển này đã dẫn đến sự ra đời của nhiều thiết bị máy móc, robot và sản phẩm tự hành ngày càng thông minh và chính xác, giúp giải quyết nhanh chóng và hiệu quả các vấn đề thực tiễn.
Những ứng dụng của các thiết bị tự hành có thể bắt gặp trong cuộc sống hiện nay là:
Trong ngành công nghiệp, việc sử dụng các hệ thống vận chuyển tự động để di chuyển thiết bị và hàng hóa đến điểm đích đang ngày càng phổ biến Những hệ thống này không chỉ thay thế cho các băng chuyền truyền thống mà còn bao gồm các giải pháp tự động hóa trong việc lên và xuống hàng hóa cho các tàu lớn, mang lại hiệu quả và tiết kiệm thời gian.
Hình 1.1: Hình ảnh xe chạy theo line vận chuyển hàng AGV trong công nghiệp [1]
- Trong dân dụng: có thể phát triển thành các robot chỉ dẫn đường đi trong các sân bay, bảo tàng, trung tâm mua sắm lớn,
Trong y học, công nghệ được ứng dụng trong xe lăn cho bệnh nhân và các thiết bị chỉ đường dành cho người khiếm thị, giúp nâng cao chất lượng cuộc sống Những thiết bị này có khả năng cảnh báo người dùng khi gặp trở ngại, đảm bảo an toàn và thuận tiện trong di chuyển.
2 vật cản, chỉ đường, được tích hợp bản đồ và lịch xe buýt giúp đỡ rất nhiều cho cuộc sống của người khiếm thị
Hình 1.2: Gậy thông minh dành cho người khiếm thị WeWALK [2]
Việc áp dụng các sản phẩm tự hành có thể giảm thiểu tai nạn cho con người trong quá trình vận hành, đồng thời nâng cao tính bảo mật cho công nghệ sản xuất bằng cách hạn chế sự hiện diện của con người.
Lý do chọn đề tài
Trong những năm gần đây, ngành công nghiệp ô tô đã phát triển nhanh chóng, dần bắt kịp với xu hướng toàn cầu Hệ thống giao thông và điều kiện đường xá cũng đang được cải thiện Mặc dù các ứng dụng xe tự hành sử dụng công nghệ như camera, laser, radar và GPS vẫn chưa phổ biến, nhưng sự xuất hiện của chúng đang ngày càng gia tăng.
Hiện nay, nghiên cứu công nghệ xe tự hành đang thu hút sự quan tâm từ nhiều trường đại học và công ty đầu tư Vào tháng 10/2017, FPT đã trở thành công ty đầu tiên giới thiệu công nghệ xe tự hành tại Việt Nam, đồng thời là một trong số ít công ty tiên phong trong lĩnh vực này ở Đông Nam Á FPT đã thành công trong việc thử nghiệm công nghệ xe tự hành trên các mẫu xe ô tô thương mại.
4 chỗ và dòng xe điện sân golf di chuyển trong khuôn viên khu công nghệ cao quận
Xe tự hành tại Thành phố Hồ Chí Minh và khu campus FPT Complex tại Đà Nẵng đạt cấp độ 3 theo tiêu chuẩn của Hiệp hội kỹ sư xe hơi Mỹ (SAE) Tại FPT TechDay 2019, Ông Nguyễn Đức Kính - Giám đốc VI MFG và người dẫn dắt FPT Global Automotive - đã chia sẻ về 6 cấp độ xe tự hành, trong đó cấp độ 0 là lái cơ và cấp độ 3 cho phép tự động hóa một phần trong quá trình lái xe.
3 nhận ra các vật cản để có thể tự phanh tránh chướng ngại vật Cao nhất là mức độ 5, khi con người không cần lái xe nữa
Theo nghiên cứu "Emerging Technologies: Autonomous Cars — Not If, But When", dự đoán trong 5 năm tới, doanh số xe tự hành toàn cầu sẽ đạt 250 nghìn chiếc, và sau 20 năm, con số này có thể vượt 21 triệu Hiện nay, nhiều mẫu xe tự hành đang được thử nghiệm thực tế tại các thành phố lớn, nổi bật như mô hình của Google và Uber Dựa trên những ước tính từ các nhà sản xuất ô tô và công ty công nghệ, xe tự lái cấp 4 dự kiến sẽ được đưa vào kinh doanh trong vài năm tới.
Hình 1.3: Mô hình xe tự hành của Uber [3]
Nhóm nghiên cứu đã rút ra nhiều kinh nghiệm quý báu để phát triển các thiết bị xe tự hành ngày càng hoàn thiện Để nâng cao hiểu biết và khả năng vận hành thực tế của xe, nhóm đã thực hiện đề tài "Điều Hướng Xe Tự Hành Tránh Vật Cản Ứng Dụng Thị Giác Máy Tính", nhằm tạo nền tảng vững chắc cho quá trình làm việc sau này.
Mục tiêu và đối tượng nghiên cứu
Nghiên cứu lý thuyết về xe tự hành tập trung vào các yếu tố quan trọng trong quá trình phát triển xe tự lái hiện nay Những cân nhắc này bao gồm công nghệ cảm biến, thuật toán điều khiển, và an toàn giao thông, nhằm đảm bảo sự hiệu quả và tin cậy của xe tự lái trong môi trường thực tế.
Nghiên cứu và lựa chọn các thành phần tương thích như cảm biến, vi điều khiển, động cơ, trình điều khiển, nguồn điện và giao tiếp là rất quan trọng Đồ án này sẽ tập trung vào việc sử dụng board NVIDIA Jetson Developer Kit, camera module và một số driver để phát triển ứng dụng.
Sử dụng thư viện OpenCV, chúng ta có thể áp dụng các hàm chức năng để nhận diện và xử lý các đối tượng như làn đường, biển báo giao thông (bao gồm biển chỉ dẫn trái, phải và dừng lại) cũng như các vật thể khác Qua đó, hệ thống sẽ xác định được góc lái cần thiết để điều khiển xe một cách hiệu quả.
Mục tiêu của dự án là phát triển xe mô hình có khả năng tự di chuyển trong thời gian thực trên sa hình đã được thiết kế, bao gồm làn đường, biển báo giao thông và các vật cản Qua đó, chúng tôi sẽ đánh giá và đưa ra kết luận về giải thuật sử dụng trong quá trình hoạt động của xe.
Phạm vi đề tài
Trong phạm vi của đề tài này, nhóm đã nghiên cứu đề tài dựa trên nền tảng xe
RC đã được phát triển sẵn có với khung xe có tỷ lệ 1/18, board NVIDIA Jetson Nano Developer Kit và Camera Raspberry Pi V2 8MP
Tín hiệu đầu vào được xử lý qua camera Pi với kích thước khung hình 600 pixel chiều dài và 400 pixel chiều rộng, sau đó tín hiệu đầu ra được truyền đến motor servo điều hướng với góc lái từ 50 đến 130 độ.
Nghiên cứu trên board điều khiển NVIDIA Jetson Nano ứng dụng giải thuật tìm đường thẳng với thuật toán biến đổi xác suất Hough (Probabilistic Hough Transform)
Thực nghiệm ở môi trường ngoài trời đạt được những yêu cầu:
• Điều hướng xe tự hành trong sa hình
• Điều hướng xe tự hành trong sa hình có biển báo giao thông
• Điều hướng xe tự hành trong sa hình tránh vật cản.
Phương pháp nghiên cứu
Thực hiện đề tài Điều Hướng Xe Tự Hành Tránh Vật Cản Ứng Dụng Thị Giác Máy Tính, đề xuất cần tiếp cận các bước sau:
• Ngiên cứu lý thuyết cơ sở : Lý thuyết xử lý ảnh, ngôn ngữ lập trình, tham khảo các ứng dụng, các phương pháp nghiên cứu đã được công bố
Vi mạch xử lý tín hiệu và thiết bị thu tín hiệu ảnh đầu vào là những yếu tố quan trọng quyết định phạm vi ứng dụng của đề tài Việc tìm hiểu sâu về chúng sẽ giúp tối ưu hóa hiệu suất và khả năng ứng dụng trong nhiều lĩnh vực khác nhau.
• Nghiên cứu các công cụ xử lý ảnh phù hợp: Opencv, Matlab,…
• Thu nhận hình ảnh và xử lý dựa trên các ảnh thu nhận được: Xử lý và đánh giá
• Xây dựng thuật toán điều khiển, tính toán xuất tín hiệu điều khiển cho mô hình.
Nội dung đề tài
Đề tài Điều Hướng Xe Tự Hành Tránh Vật Cản Ứng Dụng Thị Giác Máy Tính bao gồm các chương sau:
Chương 1: Tổng Quan cung cấp cái nhìn tổng quát về các yêu cầu của đề tài, bao gồm phần giới thiệu, mục tiêu, phạm vi và nội dung chính của nghiên cứu.
Chương 2: Cơ Sở Lý Thuyết trình bày các kiến thức cơ bản cần thiết cho đề tài, bao gồm thông tin về board hỗ trợ, các phương pháp kết nối và thuật toán xử lý ảnh.
• Chương 3: Nội Dung Thực Hiện: Chương này sẽ giới thiệu các bộ phận của mô hình xe tự hành, xây dựng mô hình xe và quá trình thực nghiệm
Chương 4: Kết Luận và Hướng Phát Triển sẽ tóm tắt các kết quả đạt được từ đề tài, nêu rõ những lợi thế và hạn chế sau quá trình thực nghiệm Đồng thời, chương này cũng sẽ đề xuất những ý tưởng và hướng phát triển tiềm năng cho tương lai.
CƠ SỞ LÝ THUYẾT
Chuẩn giao tiếp I C 2 (Inter-Integrated Circuit)
I C 2 (Inter-Integrated Circuit) là một phương thức giao tiếp được phát triển bởi công ty Philips, chuyên sản xuất bán dẫn toàn cầu Ban đầu, I C 2 chỉ được áp dụng trong các thiết bị điện tử của Philips, nhưng nhờ vào nhiều ưu điểm và tính dễ sử dụng, phương thức này đã nhanh chóng được chuẩn hóa và trở thành tiêu chuẩn trong các thiết bị truyền thông nối tiếp của vi mạch tích hợp hiện nay.
I C 2 đã trở thành chuẩn công nghiệp phổ biến trong giao tiếp điều khiển, được sử dụng bởi nhiều công ty lớn như Texas Instrument (TI), Maxim-Dallas, và Analog Device Phương thức giao tiếp I C 2 thường được áp dụng cho các mạch tổ hợp khác nhau, bao gồm vi điều khiển 8051, PIC, AVR, và Arm, làm cho nó trở thành lựa chọn lý tưởng cho giao tiếp ngoại vi.
Hình 2.1 Phương thức giao tiếp I C 2 và các thiết bị ngoại vi [4]
Giao tiếp I2C sử dụng hai dây chính: Serial Data (SDA) cho dữ liệu hai chiều và Serial Clock (SCL) cho xung đồng hồ một chiều Trong các thiết bị ngoại vi kết nối với I2C, chân SDA được kết nối với dây SDA và chân SCL với dây SCL Cả hai dây SDA và SCL đều được nối với điện áp dương thông qua điện trở kéo lên (pull-up resistor) để đảm bảo hoạt động ổn định, do chân giao tiếp I2C của thiết bị ngoại vi thường ở dạng cực máng hở (open-drain hoặc open-collector).
Các giá trị của các điện trở này thay đổi tùy vào từng thiết bị và chuẩn giao tiếp thường dao động trong khoảng 1k đến 4.7k
Trong giao tiếp I2C, nhiều thiết bị có thể kết nối cùng lúc mà không gây nhầm lẫn, nhờ vào việc mỗi thiết bị được xác định bằng một địa chỉ duy nhất Mối quan hệ chủ/tớ được duy trì trong suốt quá trình kết nối, cho phép mỗi thiết bị hoạt động linh hoạt, có thể là thiết bị nhận dữ liệu hoặc vừa truyền vừa nhận thông tin.
Hình 2.2 Kết nối thiết bị vào phương thức giao tiếp I2C ở chế độ chuẩn (standard mode) và chế độ nhanh (fast mode) [4]
Trong giao tiếp I2C, hoạt động truyền nhận phụ thuộc vào việc thiết bị được xác định là chủ (master) hay tớ (slave) Mỗi thiết bị cần có một địa chỉ riêng và được cấu hình tương ứng Thiết bị chủ đảm nhiệm vai trò điều khiển, tạo xung đồng hồ cho toàn hệ thống và quản lý địa chỉ của thiết bị tớ trong quá trình giao tiếp Do đó, thiết bị chủ là chủ động, trong khi thiết bị tớ là bị động.
Hình 2.3 Truyền nhận dữ liệu giữa chủ/tớ [4]
Hình [2.4] cho thấy xung đồng hồ di chuyển theo một hướng duy nhất từ chủ đến tớ, trong khi luồng dữ liệu có khả năng di chuyển theo cả hai hướng, từ chủ đến tớ hoặc ngược lại từ tớ đến chủ.
Giao tiếp I²C truyền dữ liệu 8-bit với tốc độ 100 Kbits/s trong chế độ chuẩn Tốc độ này có thể tăng lên 400 Kbits/s ở chế độ nhanh và đạt tối đa 3,4 Mbits/s trong chế độ cao tốc.
Một giao thức I C 2 có thể hoạt động ở nhiều chế độ khác nhau:
• Một chủ một tớ (one master – one slave)
• Một chủ nhiều tớ (one master – multi slave)
• Nhiều chủ nhiều tớ (Multi master – multi slave)
Dù trong bất kỳ chế độ nào, giao tiếp giữa các thiết bị I C 2 luôn phụ thuộc vào mối quan hệ chủ/tớ Khi thiết bị A muốn gửi dữ liệu đến thiết bị B, quá trình truyền tải dữ liệu sẽ được thực hiện theo một quy trình nhất định.
Thiết bị A (Chủ) xác định chính xác địa chỉ của thiết bị B (tớ) và từ đó quyết định thực hiện thao tác đọc hoặc ghi dữ liệu vào thiết bị tớ.
• Thiết bị A gửi dữ liệu tới thiết bị B
• Thiết bị A kết thúc quá trình truyền dữ liệu
Khi A cần nhận dữ liệu từ B, quá trình giao tiếp diễn ra tương tự, chỉ khác là A sẽ là người nhận Trong mối quan hệ này, A giữ vai trò chủ động còn B là bên phụ thuộc Bài viết sẽ đi sâu vào chi tiết cách thiết lập giao tiếp với một thiết bị trong mạng IC.
2.1.3 Bit bắt đầu và kết thúc (Start-Stop)
START là tín hiệu khởi đầu, đánh dấu sự bắt đầu của quá trình giao tiếp, trong khi STOP là tín hiệu kết thúc, đánh dấu sự hoàn tất của giao tiếp Hình [2.4] minh họa rõ ràng các điều kiện START và STOP.
Trước khi bắt đầu quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức cao (SDA = SCL = HIGH), lúc này giao tiếp I2C được xem như một bộ nối trống, sẵn sàng cho việc trao đổi dữ liệu.
Hai điều kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các thiết bị I C 2 với nhau
Điều kiện START trong giao tiếp I2C được xác định khi có sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL giữ mức cao Ngược lại, điều kiện STOP xảy ra khi có sự chuyển đổi trạng thái từ thấp lên cao trên đường SDA khi đường SCL vẫn ở mức cao.
Cả hai tín hiệu START và STOP đều do thiết bị chủ tạo ra, với tín hiệu START đánh dấu giao tiếp I2C bắt đầu hoạt động Sau khi nhận tín hiệu STOP, giao tiếp I2C sẽ trở về trạng thái sẵn sàng cho một giao tiếp mới Nếu trong quá trình giao tiếp đã có tín hiệu START và nhận thêm tín hiệu START mà không có tín hiệu STOP, giao tiếp I2C vẫn tiếp tục trong trạng thái bận Cả tín hiệu START và tín hiệu START lặp lại đều có chức năng khởi tạo giao tiếp.
2.1.4 Định dạng dữ liệu truyền
Dữ liệu trong giao tiếp I2C được truyền theo từng bit, với mỗi bit dữ liệu được gửi tại sườn dương của xung đồng hồ trên dây SCL Khi SCL ở mức thấp, quá trình thay đổi dữ liệu sẽ diễn ra.
Ảnh số và khái niệm về ảnh
2.2.1 Ảnh số Ảnh số (digital image) là một thành phần biểu diễn hình ảnh trong hầu hết các thiết bị điện tử hiện nay như máy ảnh, điện thoại, máy tính, các công cụ hỗ trợ có sử dụng ảnh Ảnh số bao gồm các yếu tố của hình ảnh, biểu diễn số học tập hợp hữu hạn các điểm ảnh (pixel), với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật, thường là biểu diễn nhị phân
Độ phân giải của ảnh được xác định bởi số điểm ảnh, với độ phân giải cao giúp thể hiện rõ nét các đặc điểm của bức hình, làm cho ảnh trở nên chân thực và sắc nét hơn.
Có thể phân ảnh số thành 2 loại: ảnh raster và ảnh vector: Ảnh raster:
Ảnh Raster được cấu thành từ một tập hợp hữu hạn các điểm ảnh (pixel), mỗi pixel là phần tử nhỏ nhất của ảnh số tại tọa độ (x, y) Mỗi pixel mang giá trị số thể hiện màu sắc và độ sáng của một phần trong bức ảnh.
Hình ảnh thường được cấu trúc thành các hàng và cột chứa điểm ảnh, với ảnh raster là loại hình ảnh phổ biến thu được từ camera, máy chiếu, hoặc quá trình quét Đây là đối tượng chính trong lĩnh vực xử lý ảnh và thị giác máy tính, trong khi ảnh vector lại đại diện cho một dạng hình ảnh khác.
Ảnh vector là loại hình ảnh được tạo ra từ các yếu tố hình học cơ bản như điểm, đường thẳng và hình khối Khác với ảnh raster, được lưu trữ dưới dạng ma trận điểm ảnh, ảnh vector được biểu diễn thông qua tọa độ của các thành phần, mang lại sự linh hoạt và khả năng mở rộng mà không bị mất chất lượng.
Ảnh vector nổi bật với khả năng kéo dãn và thu nhỏ mà không bị vỡ hay xuất hiện răng cưa, điều này tạo nên sự khác biệt so với ảnh raster Ngoài ra, dữ liệu trong ảnh vector nhỏ gọn hơn, giúp tiết kiệm dung lượng lưu trữ hiệu quả hơn so với ảnh raster.
• Tuy thế, màu sắc trong ảnh vector nhìn không thật, sắc độ ít tinh tế hơn ảnh raster
2.2.2 Mức xám của ảnh và độ phân giải của ảnh
Mức xám là kết quả của sự biến đổi độ sáng của một điểm ảnh với giá trị nguyên dương, thường nằm trong khoảng [0, 255] Giá trị này xác định cách mà mỗi điểm ảnh được biểu diễn, và các thang giá trị mức xám thường gặp bao gồm các mức từ 0 (đen) đến 255 (trắng).
Mức độ xám phổ biến trong kỹ thuật máy tính là 256, vì 1 byte (8 bit) có thể biểu diễn 256 mức xám, từ 0 đến 255 Độ phân giải của một bức ảnh số được xác định bởi mật độ điểm ảnh, với khoảng cách giữa các điểm ảnh được chọn sao cho mắt người vẫn cảm nhận được sự liên tục Việc lựa chọn khoảng cách thích hợp tạo nên độ phân giải, phân bổ theo trục x và y trong không gian hai chiều Tuy nhiên, cùng một độ phân giải nhưng với diện tích rộng hơn sẽ dẫn đến độ mịn kém hơn, ảnh hưởng đến sự liên tục của các điểm ảnh.
2.2.3 Các không gian màu biểu diễn ảnh
Không gian màu là một mô hình toán học mô tả màu sắc thực tế dưới dạng số, cho phép biểu diễn lặp lại các màu khi kết hợp với thiết bị vật lý Mỗi không gian màu có thể được tùy chỉnh với các màu cụ thể gán cho mẫu màu vật lý và các tên hoặc số màu tương ứng, như bộ màu Pantone, hoặc được quy định theo toán học như hệ màu NCS, Adobe RGB và sRGB.
Hình 2.10 Không gian màu RGB [5]
RGB là không gian màu phổ biến được sử dụng trong máy tính, máy ảnh, điện thoại và nhiều thiết bị kỹ thuật số khác Không gian màu này tương đồng với cách mà mắt người tổng hợp màu sắc, với nguyên lý cơ bản dựa trên ba màu sắc chủ đạo: R (đỏ), G (xanh lá) và B (xanh dương).
- xanh lục) và B (blue - xanh lam) để biểu diễn tất cả các màu sắc
Trong mô hình 24 bit, không gian màu mặc định của OpenCV sử dụng hai kênh R và B theo thứ tự BGR Mỗi kênh màu R, G, B được biểu diễn bằng 8 bit, với giá trị nằm trong khoảng từ 0 đến 255.
Bộ ba số này đại diện cho cường độ màu của từng điểm ảnh, với mỗi số thể hiện một màu cụ thể Trong mô hình 24bit, số lượng màu tối đa có thể đạt được là 255 x 255 x 255, tương đương với hơn 16 triệu màu.
2.2.3.2 Không gian màu HSV (HSB)
Hình 2.11 Không gian màu HSV [5]
Không gian màu HSV (còn gọi là HSB) là một cách tự nhiên hơn để mô tả màu sắc, dựa trên 3 số liệu:
• S: (Saturation) Độ bão hòa màu
• B (hay V): (Bright hay Value) Độ sáng
Hình 2.12 Không gian màu CMYK [5]
Không gian màu CMYK chỉ mô hình màu loại trừ, thường dùng trong in ấn
Mô hình màu này dựa trên cơ sở trộn các chất màu của các màu sau:
• C=Cyan: màu xanh lơ hay cánh chả
• M=Magenta: màu cánh sen hay hồng sẫm
• K=Key: màu đen (màu chủ chốt)
Hỗn hợp lý tưởng của các màu CMY sẽ tạo ra màu đen khi in trên nền trắng Nguyên lý hoạt động của CMYK dựa trên khả năng hấp thụ ánh sáng, trong đó màu sắc mà mắt người nhìn thấy là phần ánh sáng không bị hấp thụ.
2.2.3.4 Không gian màu CIE LAB
Không gian màu CIE Lab là một hệ thống màu đồng đều, lý tưởng để so sánh sự khác biệt giữa các màu sắc Các giá trị Lab mô tả tất cả màu mà mắt người bình thường có thể nhìn thấy Lab được coi là mô hình màu độc lập với thiết bị, thường được sử dụng làm cơ sở tham chiếu khi chuyển đổi màu từ không gian này sang không gian khác.
Hình 2.13 Không gian màu CIE LAB [5]
Theo mô hình Lab, tất cả các màu có độ sáng tương đồng sẽ nằm trên một mặt phẳng hình tròn, được xác định bởi hai trục a* và b Các màu có giá trị a dương sẽ có sắc thái đỏ.
Các phép tiền/hậu xử lý ảnh
2.3.1 Thay đổi kích thước hình ảnh
Trong quá trình tiền xử lý và hậu xử lý ảnh, các phép biến đổi hình học đóng vai trò quan trọng trong việc thực hiện các biến đổi khác nhau cho hình ảnh 2D Những phép biến đổi này không làm thay đổi nội dung của hình ảnh, nhưng có thể gây ra sự biến dạng cho lưới pixel.
Để tránh việc lấy mẫu sai, quá trình biến đổi được thực hiện theo thứ tự ngược lại, từ ảnh đích về ảnh nguồn Cụ thể, đối với mỗi pixel (x, y) trong ảnh đích, các hàm sẽ tính toán tọa độ của pixel tương ứng trong ảnh nguồn và sao chép giá trị pixel từ đó.
Thay đổi kích thước ảnh (scale) là quá trình điều chỉnh kích thước của bức ảnh sang một kích thước mới, có thể giữ nguyên tỷ lệ gốc hoặc không Để thực hiện phép biến đổi này, cần có các thông số cụ thể.
• F x : hệ số biến đổi theo trục ngang Khi F x =0, nó được tính bằng:
• (Chiều ngang của ảnh đầu ra/ Số cột của ảnh gốc)
• F y : hệ số biến đổi theo trục ngang Khi F y =0, nó được tính bằng:
• (Chiều dọc của ảnh đầu ra/ Số hàng của ảnh gốc)
Kích thước ảnh đầu ra (Dsize) được xác định dựa trên các yếu tố sau: Nếu Dsize=0, kích thước sẽ được tính theo công thức Dsize = F x * số cột của ảnh gốc và F y * số hàng của ảnh gốc Trong các trường hợp khác, Dsize sẽ được xác định bằng F x và F y, với điều kiện F x và F y không bằng 0.
2.3.2 Xử lý hình thái học (Morphology)
Hình thái học là một tập hợp các hoạt động phi tuyến tính liên quan đến hình dạng của các đặc trưng trong hình ảnh Các hoạt động này áp dụng yếu tố cấu trúc cho hình ảnh đầu vào, tạo ra hình ảnh đầu ra có cùng kích thước Trong xử lý hình thái học, quá trình chỉ dựa vào thứ tự tương đối của các giá trị pixel, không dựa trên giá trị số của chúng, nên rất phù hợp cho xử lý ảnh nhị phân Giá trị pixel trong hình ảnh đầu ra được xác định dựa trên sự so sánh với các pixel lân cận trong hình ảnh đầu vào.
Kỹ thuật xử lý hình thái học là quá trình thăm dò hình ảnh hoặc mẫu nhỏ thông qua yếu tố cấu trúc Yếu tố cấu trúc này được định vị tại mọi vị trí có thể trong hình ảnh và được so sánh với các pixel lân cận Quá trình này kiểm tra xem yếu tố cấu trúc có khớp hay giao với vùng lân cận tương ứng hay không.
Xử lý hình thái học trên hình ảnh nhị phân tạo ra một hình ảnh mới, trong đó các pixel có giá trị khác không chỉ xuất hiện khi chúng vượt qua thử nghiệm thành công tại vị trí tương ứng trong hình ảnh đầu vào.
Phần tử cấu trúc là một hình ảnh nhị phân nhỏ, có thể là một ma trận pixel nhỏ, mỗi pixel có giá trị bằng 0 hoặc 1:
• Kích thước ma trận xác định kích thước của phần tử cấu trúc
• Mẫu của của các giá trị 0 và 1 sẽ thể hiện hình dạng của phần tử cấu trúc
• Gốc của phần tử cấu trúc thường là một trong các pixel của nó, mặc dù nhìn chung gốc có thể nằm ngoài phần tử cấu trúc
Ma trận cấu trúc, với kích thước lẻ và tâm xác định, là một ứng dụng phổ biến trong kỹ thuật xử lý hình thái học Các phần tử cấu trúc này tương tự như các bộ lọc kernel tích chập trong quy trình lọc hình ảnh tuyến tính, đóng vai trò quan trọng trong việc cải thiện chất lượng hình ảnh.
Khi một phần tử cấu trúc được áp dụng lên hình ảnh nhị phân, mỗi pixel của nó sẽ tương ứng với pixel trong vùng lân cận của phần tử cấu trúc Phần tử cấu trúc được xem là phù hợp với hình ảnh nếu mọi pixel được đặt thành 1 cũng có pixel tương ứng trong hình ảnh là 1 Ngoài ra, phần tử cấu trúc được coi là cắt hình ảnh nếu ít nhất một trong các pixel của nó được đặt thành 1.
1 thì pixel hình ảnh tương ứng cũng là 1
Các pixel có giá trị bằng 0 trong phần tử cấu trúc sẽ bị loại bỏ, cho thấy những điểm mà giá trị hình ảnh tương ứng không có ý nghĩa.
2.3.2.1 Phép toán giãn nở (Dilation)
Phép toán giãn nở, ký hiệu là ⊕, là một kỹ thuật cơ bản trong xử lý hình thái toán học, được phát triển chủ yếu cho hình ảnh nhị phân Quá trình này bắt đầu bằng việc chuyển đổi ảnh sang ảnh xám, sau đó tạo ra các giá trị cho ảnh đầu ra Hoạt động giãn nở sử dụng một phần tử cấu trúc để thăm dò và mở rộng các hình dạng có trong hình ảnh đầu vào.
Kỹ thuật tích chập hình ảnh A với bộ lọc kernel B, có thể có nhiều hình dạng và kích thước khác nhau, thường là hình vuông hoặc hình tròn.
Bộ lọc kernel B có một điểm neo xác định, thường là trung tâm của kernel
Khi bộ lọc kernel B quét qua hình ảnh, phép toán sẽ tính toán giá trị pixel tối đa mà B chồng lấp lên và thay thế pixel ở vị trí điểm neo bằng giá trị tối đa đó Thao tác tối đa hóa này tạo ra các vùng sáng trong ảnh, giúp phát triển và giãn nở hình ảnh.
Phép toán giãn nở (Dilation) được minh họa trong Hình 2.15, với a) là ảnh tiền xử lý và b) là ảnh sau khi giãn nở Qua việc áp dụng giãn nở vào hình, có thể nhận thấy rằng phần trắng của chữ đã được mở rộng xung quanh các vùng màu đen Hiện tượng này làm cho vật thể có màu trắng trở nên lớn hơn.
2.3.2.2 Phép toán co ảnh (Erosion)
Phép toán co ảnh, ký hiệu là ⊖, là một trong hai kỹ thuật cơ bản trong xử lý hình thái học, bên cạnh sự giãn nở Tất cả các kỹ thuật xử lý hình thái học khác đều dựa trên hai kỹ thuật này Phép toán co ảnh có nhiều ứng dụng, bao gồm việc giảm kích thước của đối tượng, tách rời các đối tượng gần nhau, làm mảnh và tìm xương của đối tượng.
Thuật toán phát hiện cạnh Canny (Canny Edge Detection)
Trong hình ảnh, các thành phần chính bao gồm vùng trơn, góc/cạnh và nhiễu, trong đó cạnh đóng vai trò quan trọng, thường thuộc về đối tượng trong ảnh Thuật toán phát hiện cạnh Canny, được phát triển bởi John F Canny vào năm 1986, là một trong những phương pháp nổi tiếng nhất trong việc phát hiện cạnh trong hình ảnh.
Thuật toán phát hiện cạnh Canny là một kỹ thuật quan trọng trong việc trích xuất thông tin và cấu trúc từ hình ảnh, giúp giảm thiểu đáng kể khối lượng dữ liệu cần xử lý Các tiêu chí chính cho việc phát hiện cạnh bao gồm độ nhạy và chính xác của các cạnh được phát hiện.
- Phát hiện cạnh với tỷ lệ sai số thấp, điều đó có nghĩa là phải tìm được càng nhiều cạnh của đối tượng (hình ảnh) càng tốt
- Điểm cạnh được phát hiện nên được định vị chính xác là điểm tâm của cạnh
Để đảm bảo độ chính xác trong việc đánh dấu cạnh của ảnh, chỉ nên đánh dấu mỗi cạnh một lần và cần giảm thiểu nhiễu của ảnh nhằm tránh tạo ra các cạnh không chính xác.
Thuật toán phát hiện cạnh Canny nổi bật trong số các phương pháp phát hiện cạnh nhờ vào khả năng tối ưu để đáp ứng ba tiêu chí quan trọng và quy trình thực hiện đơn giản Đây là một trong những thuật toán phổ biến và đáng tin cậy nhất trong lĩnh vực tiền/hậu xử lý ảnh, mang lại hiệu quả cao trong việc phát hiện cạnh.
Thuật toán phát hiện cạnh Canny gồm 4 bước chính [14]
2.4.1 Giảm nhiễu, làm mờ ảnh
Làm mờ ảnh và giảm nhiễu thường sử dụng bộ lọc Gaussian với kích thước A*A, trong đó kích thước 5*5 thường mang lại hiệu quả tốt cho thuật toán Canny Kích thước của bộ lọc có thể điều chỉnh để phù hợp với từng ứng dụng Phép làm mờ ảnh đóng vai trò quan trọng trong xử lý ảnh và được áp dụng rộng rãi, mang lại nhiều tác dụng tích cực.
Làm trơn ảnh giúp giảm độ sắc nét của các cạnh, khiến vùng trơn lan ra hơn Để thực hiện quá trình này, bạn cần áp dụng bộ lọc cho hình ảnh, với bộ lọc tuyến tính là loại phổ biến nhất Trong đó, giá trị pixel đầu ra g(i, j) được tính bằng tổng trọng số của các giá trị pixel đầu vào f(i + k, j + l).
Bộ lọc kernel, ký hiệu là h k l ( ), bao gồm các hệ số của bộ lọc, được sử dụng trong quá trình xử lý ảnh để thực hiện phép toán tích chập (convolution) Phép toán này cho phép áp dụng cửa sổ/bộ lọc lên ảnh gốc, từ đó tạo ra hiệu ứng làm mờ Tại mỗi tọa độ pixel cụ thể trên ảnh kết quả, quá trình làm mờ diễn ra thông qua việc giao thoa màu với các điểm ảnh lân cận.
Có nhiều loại bộ lọc trong xử lý ảnh, trong đó ba loại phổ biến nhất là bộ lọc mờ trung bình (Box Filter), bộ lọc mờ Gaussian (Gaussian Filter) và bộ lọc mờ trung vị (Median Filter) Những bộ lọc này được sử dụng để làm mờ hình ảnh và giảm nhiễu, mỗi loại có cách hoạt động và ứng dụng riêng biệt.
• Bộ lọc mờ trung bình (Box Filter):
- Bộ lọc làm mờ trung bình được thiết kế bằng cách thiết lập mỗi giá trị trên bộ lọc bằng: 1/(w*h)
- Tức là nếu chiều cao và chiều rộng của bộ lọc bằng 3 Thì giá trị trên cửa sổ sẽ là: 1/9
Do đặc tính sử dụng các trọng số bằng nhau, thuật toán này có thể được thực hiện đơn giản và nhanh chóng hơn so với thuật toán cửa sổ trượt.
• Bộ lọc làm mờ Gaussian (Gaussian Filter):
Bộ lọc Gaussian là một công cụ hữu ích trong xử lý hình ảnh, mặc dù không phải là nhanh nhất Phương pháp này hoạt động bằng cách kết hợp từng điểm trong mảng đầu vào với bộ lọt Gaussian (Gaussian kernel) và tổng hợp các kết quả để tạo ra mảng đầu ra.
Pixel trung tâm có giá trị lớn nhất, trong khi trọng lượng của các pixel lân cận giảm dần khi khoảng cách từ chúng đến pixel trung tâm tăng lên Bộ lọc Gaussian không chỉ phụ thuộc vào kích thước cửa sổ mà còn cho phép điều chỉnh hai tham số bổ sung là Sigma X và Sigma.
Y, tức độ lệch chuẩn theo trục x và trục y tương ứng
Hình 2.23 Một bộ lọc Gaussian (Gaussian kernel) [16]
• Bộ lọc làm mờ trung vị (Median Filter):
- Trung vị (median) là lấy ra giá trị trung vị sau khi sắp thứ tự dãy số Ví dụ: median([6, 8, 11, 4, 1]) = 6 Sau khi sắp thứ tự dãy [6, 8, 11, 4, 1], ta được dãy [1, 4,
6, 8, 11] cho nên số ở giữa dãy đã sắp thứ tự là 6
- Rất hiệu quả với nhiễu muối tiêu (nhiễu các hạt nhỏ)
2.4.2 Tính gradient và hướng gradient:
Dùng bộ lọc Sobel X và Sobel Y (3x3) để tính được gradient của ảnh G x và
Trong xử lý ảnh, độ dốc (gradient) đề cập đến sự thay đổi mức sáng, tức là sự biến đổi của các giá trị pixel trong bức ảnh.
Trong vùng ảnh trơn, các pixel có giá trị gần như giống nhau, dẫn đến đạo hàm gần bằng zero, cho thấy không có sự biến thiên về mức sáng Điều này chỉ ra rằng độ dốc của các pixel trong vùng ảnh trơn là rất nhỏ Khi đạo hàm dương tại một pixel, mức sáng đang tăng lên, trong khi đạo hàm âm cho thấy mức sáng đang giảm dần tại pixel đó.
Hình 2.24 Bộ lọc Sobel X và Sobel Y (3x3) [17]
Sau đó, tiếp tục cạnh gradient và góc của gradient theo công thức :
Ảnh đạo hàm Gx và Gy là các ma trận kích thước a*a, và kết quả của phép tính ảnh đạo hàm Edge Gradient cũng sẽ là một ma trận có cùng kích thước a*a Mỗi pixel trong ma trận này biểu thị độ lớn của sự biến đổi mức sáng tại vị trí tương ứng trên ảnh gốc.
Ma trận Angle có kích thước a*a, trong đó mỗi pixel biểu thị hướng của cạnh Khi góc gradient đạt 0 độ, cạnh trên ảnh sẽ tạo thành một đường thẳng đứng.
Thuật toán phát hiện đường thẳng biến đổi Hough (Hough Transform)
Hình 2.25 Thuật toán biến đổi Hough Transform (Hough Transform) [18]
Biến đổi Hough là một thuật toán hiệu quả để nhận diện các hình dạng và đường thẳng có thể được biểu diễn bằng phương trình toán học Thuật toán này có khả năng phát hiện ngay cả khi hình dạng hoặc đường thẳng bị đứt quãng hoặc biến dạng Nguyên tắc chính của việc phát hiện đường thẳng trong thuật toán này là chuyển đổi từ không gian ảnh (A) sang một không gian mới (B), trong đó mỗi đường thẳng trong không gian (A) tương ứng với một điểm trong không gian (B).
2.5.1 Phương trình đường thẳng trong không gian ảnh (A)
Thông thường một phương trình đường thẳng cơ bản sẽ được biểu diễn theo 2 tham số a và b như sau: y = a x b * + (2.30)
Giá trị của góc nghiêng (độ dốc) của a có thể dao động từ –∞ đến +∞ Chẳng hạn, để xác định phương trình đường thẳng Oy (x=0), a cần phải tăng từ 0 đến ∞.
Thuật toán biến đổi Hough Transform yêu cầu các giá trị a và b nằm trong một khoảng xác định Để biểu diễn phương trình đường thẳng, cần sử dụng hệ tọa độ cực.
• : là khoảng cách vuông góc từ gốc tọa độ đến đường thẳng
• : là góc được tạo bởi đường thẳng vuông góc từ gốc tọa độ đến đường thẳng hợp với trục hoành theo chiều thuận chiều kim đồng hồ
Hình 2.26 Phương trình đường thẳng trong hệ tọa độ Hough [19]
Trong hệ tọa độ cực, góc θ được giới hạn trong khoảng [0, π), trong khi giá trị ρ cũng bị chặn do không gian ảnh là hữu hạn Nếu đường thẳng nằm dưới gốc tọa độ, thì ρ sẽ dương và θ sẽ lớn hơn 180 độ Ngược lại, nếu đường thẳng nằm trên gốc tọa độ, ρ sẽ âm và θ sẽ nhỏ hơn 180 độ Đặc biệt, mọi đường thẳng đứng có θ = 0 độ, trong khi mọi đường thẳng nằm ngang có θ = 90 độ.
2.5.2 Chuyển đổi giữa không gian ảnh (A) và không gian Hough (B)
Từ một đường thẳng trong không gian ảnh (A) với 2 tham số ρ và θ, chúng ta sẽ map sang không gian Hough (B) thành một điểm
Hình 2.27 Chuyển đổi phương trình một đường thẳng từ không gian ảnh sang không gian Hough [19]
Và ngược lại, từ một điểm trong không gian ảnh, chúng ta lại có được một tập hợp các điểm theo đồ thị hình sin trong không gian Hough:
Hình 2.28 Chuyển đổi một điểm từ không gian ảnh sang không gian Hough [19]
Các điểm trên cùng một đường thẳng có thể được biểu diễn bằng các hình sin giao nhau tại một điểm trong không gian Hough, từ đó hình thành ý tưởng cho thuật toán Hough Transform Chúng ta sẽ sử dụng các điểm giao nhau này để suy ngược và xác định phương trình đường thẳng trong không gian ảnh.
Hinh 2.29 Chuyển đổi nhiều điểm thẳng hàng từ không gian ảnh sang không gian
2.5.3 Cách hoạt động của thuật toán Hough Transform
Hough Transform cần một ảnh nhị phân làm đầu vào Trước khi áp dụng, ảnh sẽ được chuyển đổi thành ảnh xám và sử dụng thuật toán lọc biên để phát hiện các đường biên trong ảnh Trong bài viết này, chúng ta sẽ áp dụng thuật toán Canny để thực hiện việc lọc biên.
Hình 2.30 Chuyển đổi ảnh xám và xác định đường biên trong ảnh
Mọi đường thẳng có thể được biểu diễn bằng hai thông số và Để thực hiện điều này, chúng ta tạo một mảng 2D để tích lũy các giá trị của và , với các giá trị khởi đầu là 0 Không gian Hough được chia thành một lưới ô vuông nhỏ để dễ dàng xử lý.
Chúng ta sẽ sử dụng một lưới ô vuông, trong đó các hàng tương ứng với trục ρ và các cột tương ứng với trục Độ chính xác của thuật toán phụ thuộc vào số lượng ô vuông được chọn cho mỗi cạnh Nếu bạn muốn đạt được độ chính xác là 1 độ cho trục , bạn sẽ cần 180 cột.
Giá trị lớn nhất của là độ dài đường chéo của hình Khi độ chính xác của được xác định là 1 pixel, số hàng sẽ tương đương với độ dài đường chéo của ảnh tính bằng đơn vị pixel.
Hình 2.31 Mảng 2D để tích lũy các giá trị của và [22]
Để tìm đường thẳng trong ảnh, thực hiện quá trình voting trên lưới ô vuông với giá trị ban đầu là 0 cho các ô Đối với mỗi điểm sáng trên ảnh nhị phân thu được từ bộ lọc biên Canny, ta sẽ xem xét các góc θ trong khoảng [0, 180).
Biết tọa độ điểm (x, y) giúp chúng ta dễ dàng tính giá trị ρ Với mỗi cặp (θ, ρ), chúng ta thực hiện bình chọn bằng cách tăng giá trị tương ứng trên lưới ô vuông lên 1 đơn vị Cuối cùng, chúng ta thiết lập một ngưỡng để xác định cặp giá trị (θ, ρ) nào tương ứng với một đường thẳng thực tế trên lưới ô vuông.
2.5.4 Biến đổi xác suất Hough (Probabilistic Hough Transform)
Biến đổi xác suất Hough (Probabilistic Hough Transform) là một cải tiến của thuật toán biến đổi Hough truyền thống, giúp tối ưu hóa quá trình tính toán phương trình đường thẳng Thay vì rà soát tất cả các điểm trên đường thẳng, phương pháp này sử dụng các kỹ thuật xác suất để giảm thiểu khối lượng phép toán và tăng tốc độ tính toán mà vẫn đảm bảo độ chính xác Điều này giúp tiết kiệm thời gian và tài nguyên khi thực hiện các phép biến đổi Hough.
39 này chỉ quan tâm tới các tập con ngẫu nhiên gồm các điểm đủ dùng để nhận diện một đường thẳng.
Phép toán tìm đường viền (Find Contours)
Contour là tập hợp các điểm liên tục tạo thành một đường cong không có khoảng hở, với đặc điểm chung là các điểm này có cùng hoặc xấp xỉ một giá trị màu hoặc mật độ Công cụ này rất hữu ích trong việc phân tích hình dạng, phát hiện và nhận dạng đối tượng Để tìm contour chính xác, cần thực hiện nhị phân hóa bức ảnh, không chỉ đơn giản là chuyển đổi sang ảnh xám Các kỹ thuật nhị phân hóa như đặt ngưỡng hoặc phát hiện viền canny thường được sử dụng Việc tìm contour thực chất là xác định một đối tượng có màu trên nền đen, và kết quả sẽ là một bức ảnh chứa danh sách các đường viền cùng hệ thống cấp bậc, mỗi đường viền được biểu diễn bằng các tọa độ (x,y).
Điều hướng trong xe tự hành
Vạch kẻ đường là một loại tín hiệu giao thông quan trọng, giúp hướng dẫn và điều khiển lưu thông, từ đó nâng cao an toàn cho người tham gia giao thông Việc tuân thủ các vạch kẻ đường là cần thiết để đảm bảo khả năng thông xe Vạch kẻ đường có thể được sử dụng độc lập hoặc kết hợp với biển báo hiệu và đèn tín hiệu giao thông để tăng cường hiệu quả điều phối giao thông.
Vạch kẻ đường đóng vai trò quan trọng trong việc đảm bảo an toàn giao thông, giúp người tham gia giao thông tuân thủ luật lệ và tăng cường an toàn cũng như khả năng lưu thông của các phương tiện Các vạch kẻ đường thường được sơn trên bề mặt đường với hai dạng chính là đường thẳng liền và nét đứt, thường có màu trắng hoặc vàng đặc trưng.
Hình 2.32 Hình ảnh line đường
Nhóm nghiên cứu đã áp dụng thuật toán biến đổi Hough Transform để xác định vị trí của đường line thông qua tín hiệu hình ảnh thu được từ camera, dựa trên những tính chất đặc trưng của thuật toán này.
Hình 2.33 Kết quả sau khi xác định vị trí của line đường
Nhóm sẽ xác định một vị trí tối ưu giữa hai làn đường trên tuyến đường thẳng, nhằm đạt được độ trễ góc lái tốt nhất cho xe Từ vị trí này, họ sẽ tính toán góc lệch so với tâm xe và truyền thông tin góc lái đến động cơ servo để điều hướng xe.
Nhận dạng biển báo giao thông
Biển báo giao thông đường bộ, hay hệ thống báo hiệu đường bộ, là tập hợp các biển báo cung cấp thông tin cụ thể cho người tham gia giao thông Người tham gia giao thông cần được học và nhận biết các biển báo này để đảm bảo an toàn khi lưu thông trên đường.
Trong xử lý tín hiệu hình ảnh, việc xác định sự khác biệt giữa các biển báo là rất quan trọng để hướng dẫn cách di chuyển cho xe tự hành.
Hình 2.34 Một số biển báo giao thông: (a) Biển báo rẽ trái; (b) Biển báo dừng lại;
Nhóm đã phân loại ba mẫu biển báo dựa trên các thông số màu xanh và màu đỏ riêng biệt, được biểu diễn dưới dạng 24 bit, cho kết quả rõ ràng và chính xác.
Hình 2.35 Một số biển báo giao thông sau khi được xử lý màu: (a) Biển báo rẽ trái;
(b) Biển báo dừng lại; (c) Biển báo rẽ phải
Nếu biển báo có màu đỏ, có thể xác định đó là biển báo dừng lại Ngược lại, nếu không phải màu đỏ, biển báo có thể là biển báo rẽ trái hoặc rẽ phải.
Để phân biệt và nhận dạng biển báo với hai hướng rẽ trái và rẽ phải, cần xác định gúc ẳ phớa dưới bên trái của biển báo Ảnh biển báo sẽ được nhị phân hóa, giúp nhóm dễ dàng kiểm tra số pixel khác biệt tại khu vực gúc ẳ phớa dưới bên trái.
Hinh 2.36 Phân biệt biển báo rẽ trái và rẽ phải: (a) Nhị phân hóa ảnh biển báo rẽ trái;
Gúc ẳ nằm phía dưới bờ biển, nơi có trỗi biển bỏo rẽ trỏi Nhị phõn húa ảnh biển bỏo rẽ phải, tạo nên một cảnh quan độc đáo Bi Gúc ẳ cũng được tìm thấy dưới bờ biển, tại vị trí nơi trỗi biển bỏo rẽ phải.
Dựa vào kết quả từ vị trí góc phần tư thứ ba của biển báo, nhóm sẽ so sánh số pixel có giá trị khác 0 (màu trắng trong thực tế) để đưa ra kết quả nhận dạng chính xác.
Nếu số pixel nằm trong một khoảng nhất định ở gúc ẳ phớa dưới bờn trỏi, thì biển báo được xác định là biển rẽ trái; ngược lại, nếu không nằm trong khoảng đó, biển báo sẽ là biển rẽ phải.