MINI PROJECT KẾT THÚC KHÓA HỌC Mã đề: 1 Tên đề bài: Giữa những con sóng Deadline: 23:59 11/05/2022 Lưu ý: Các dữ liệu và tình huống trong đề bài có thể sẽ không đúng hoặc không xảy ra trong thực tế. Những vấn đề đã được làm đơn giản hóa để phù hợp với kiến thức đã học trong khóa học. Vấn đề: Việt Nam ta hằng năm có khoảng 12 - 14 cơn bão xảy ra ở biển Đông thường diễn ra trong khoảng tháng 6 đến tháng 11 hằng năm. Những cơn bão có thể gây ra nhiều ảnh hưởng đến các hoạt động hàng hải, làm gián đoạn các hoạt động vận chuyển, đánh bắt hải sản. Trong các cơn bão, sóng là một trong những yếu tố gây nên hiện tượng chòng chành, mất kiểm soát cho tàu thuyền. Để có thể cập nhật tình hình sóng ở các con tàu và để có sự cảnh báo sớm phù hợp, bộ hàng hải đã đưa ra một hệ thống mới nhằm đánh giá cũng như tạo bản đồ sóng thời gian thực một cách trực quan nhất. Ý tưởng của hệ thống đó như sau: mỗi con tàu sẽ được gắn 1 camera ở trên bong lái. Hình ảnh từ camera sẽ được truyền đi 30s 1 lần thông qua mạng vệ tinh để đảm bảo tính ổn định và đảm bảo không làm tiêu tốn nhiều năng lượng của tàu. Một hệ thống máy tỉnh đặt ở trụ sở bộ sẽ lần lượt xử lý các bức ảnh được gửi về và đưa ra các thông số đồng thời quyết định có cần thông báo nguy hiểm hay không. Một con tàu khi bị sóng đánh vào mạn tàu sẽ làm tàu nghiêng sang trái nếu sóng đánh vào mạn bên phải và ngược lại. Sóng càng lớn thì đồng nghĩa với góc nghiêng của tàu càng lớn. Hãy xây dựng một hàm xử lý với đầu vào là bức ảnh được gửi về từ camera gắn trên bong lái tàu và độ nghiêng tối đa mà tàu chịu được. Đầu ra của hàm bao gồm bức ảnh đã được xoay thẳng theo đường chân trời, góc nghiêng của tàu (xét chiều dương là bên phải) và một giá trị luận lý (true/false) cho thấy cần hay không cần thông báo nguy hiểm, trong đó một con tàu được coi là trong tình trạng nguy hiểm nếu độ nghiêng của tàu vượt quá 90% độ nghiêng tối đa tàu chịu được. Với hệ thống mới này, bộ hàng hải hy vọng sẽ giúp giảm thiểu số vụ tai nạn đường thủy do bão, đồng thời có được các thông số cần thiết để thiết lập những tuyến đường an toàn để tránh tối đa các ảnh hưởng của bão lên vận tải đường biển. TÀI LIỆU 2 Yêu cầu: - Đầu vào bao gồm: + Ảnh định dạng RGB. + độ nghiêng tối đa. - Đầu ra bao gồm: + Ảnh đã được xoay thẳng theo đường chân trời (gray hoặc RGB đêu được). + Góc nghiêng hiện tại của tàu. + Giá trị true/false cho thấy cần cảnh báo nguy hiểm hay không. - Chỉ được sử dụng thư viện Numpy, ngoài ra được sử dụng thư viện PIL và matplotlib cho việc đọc và xuất ảnh. - Các hàm xoay ảnh, lật ảnh, di dời ảnh, edge detection, các hàm tự code bổ sung phải được code đầy đủ, không được sử dụng hàm có sẵn. Biểu điểm: - Hàm chạy đúng yêu cầu (không yêu cầu cao, chỉ cần chạy đúng trong các trường hợp ảnh dễ nhận thấy, rõ ràng): 70%. - Code dễ đọc, dễ hiểu, khả tăng tái sử dụng cao (xét dưới góc nhìn một học viên khác): 20%. - Có thêm các tính năng phụ trợ bổ sung: làm rõ ảnh trong trường hợp ảnh bị mờ, xóa rỗ ảnh khi xoay, ...: 10%. - Nếu dùng hàm có sẵn bạn sẽ có thể bị trừ 20% số điểm. Gợi ý: - Chuyển về ảnh gray để dễ xử lý. - Edge detection để tìm ra đường chân trời. - Dựa vào kết quả edge detection, tính được góc nghiêng của tàu. - Xoay ảnh. - Xử lý các thông số và trả về các kết quả theo yêu cầu. Tài liệu [1] https://www.youtube.com/watch?v=gaZhnNlutuQ. [2] https://www.youtube.com/watch?v=FV_z4NCmeTk. [3] https://www.youtube.com/watch?v=cat30PaExyo (tua đến 2:22:22). 2