Hình 2. 21: Hình ảnh minh họa thuật toán xoay ảnh
Toán tử xoay thực hiện một phép biến đổi hình học ánh xạ vị trí ( , ) của một
thành phần trong hình ảnh đầu vào thành một vị trí (, ) trong một hình ảnh đầu
ra bằng cách xoay nó qua một góc do người dùng chỉ định về một điểm gốc O. Trong hầu hết các trường hợp triển khai, các vị trí đầu ra ( , ) nằm ngoài ranh giới của hình ảnh sẽ bị bỏ qua. Phương pháp xoay này thường được sử dụng để cải thiện độ trực quan của hình ảnh, mặc dù nó có thể hữu ích như một bộ xử lý trước trong các ứng dụng có liên quan đến các toán tử định hướng. Xoay là một trường hợp đặc biệt của chuyển đổi affne
Toán tử xoay thực hiện một phép biến đổi như sau:
Trong đó ( , ) tọa độ của tâm quay (trong hình ảnh đầu vào) và là góc quay
với góc quay theo chiều kim đồng hồ có góc dương. (Lưu ý ở đây là chúng ta đang làm việc trong tọa độ hình ảnh, do đó trục y đi xuống. Công thức xoay tương tự có thể được xác định khi trục y đi lên). Thậm chí nhiều hơn toán tử dịch , thao tác xoay tạo ra các vị trí đầu ra ( , ) không khớp trong các ranh giới của hình ảnh (như
được xác định bởi kích thước của hình ảnh đầu vào ban đầu). Trong các trường hợp như vậy, các phần tử đích đã được ánh xạ bên ngoài hình ảnh bị bỏ qua bởi hầu hết các triển khai. Các vị trí pixel trong đó một hình ảnh đã được xoay thường được lấp đầy bằng các pixel đen.
Thuật toán xoay, không giống như thuật toán được sử dụng bởi dịch thuật , có
thể tạo ra các tọa độ ( , ) không phải là số nguyên. Để tạo cường độ của các 32
pixel tại mỗi vị trí số nguyên, các phương pháp phỏng đoán khác nhau (hoặc kỹ thuật
lấy mẫu lại) có thể được sử dụng. Ví dụ: hai phương pháp phổ biến bao gồm: - Cho phép mức cường độ tại mỗi vị trí pixel nguyên để đảm nhận giá trị của
hàng xóm không nguyên gần nhất ( , )
- Tính mức cường độ tại mỗi vị trí pixel nguyên dựa trên mức trung bình có trọng số của n giá trị không nguyên gần nhất. Trọng số tỷ lệ thuận với
khoảng cách hoặc pixel chồng lấp của các hình chiếu gần đó.
2.4. Kết luận chương
Trong phần này, chúng ta nắm bắt được sơ đồ khối và cách hoạt động của toàn hệ thống nhận dạng chỗ đỗ xe ô tô bằng camera cũng như khối thực hiện công việc (Image Processing) được đề cập đến trong luận văn này. Khối công việc này thực hiện những bước đầu của hệ thống nhận dạng chỗ đỗ xe. Nhiệm vụ của nó là cắt ra các vị trí đỗ trong ảnh chụp từ camera giám sát sau đó xuất thành fle ảnh chụp các vị trí đỗ xe để phục vụ cho các khối công việc tiếp theo của hệ thống. Để thực hiện được nhiệm vụ này, chúng ta cần sử dụng phần mềm với ngôn ngữ lập trình Python và thư viện OpenCV. Vì thế, chúng ta đã đi tìm hiều về khái niệm và các thuật toán được sử dụng trong Image Processing. Qua đây, chúng ta biết được những thuật toán nào được áp dụng cho từng giai đoạn của bài toán. Từ đó, chúng ta thực hiện các công việc cụ thể để giải quyết bài toán này, điều này sẽ được trình bày chi tiết ở chương tiếp theo.
CHƯƠNG 3. NỘI SUY VỊ TRÍ ĐỖ XE VÀ KẾT QUẢ ĐẠT ĐƯỢC
Nội dung chính trong phần này là viết một chương trình có thể tự động phát hiện các chỗ đỗ xe và có khả năng thích ứng với những thay đổi về góc chiếu của camera. Chương trình này tương đương với khối Image Processing trong sơ đồ khối hệ thống, khối này có chức năng tính toán và đưa ra các vị trí đỗ xe trong bãi đỗ.
Vì thế, chúng ta cần khảo sát và đưa ra các phương pháp phát triển công việc này một cách tốt nhất. Công việc bao gồm các phương pháp xử lý hình ảnh, nghiên cứu phần mềm cho phép nhận dạng mốc trong ảnh và cắt ảnh theo thiết kế trước.
Để xây dựng phát triển hệ thống, trước tiên, chúng ta phải tạo một bộ dữ liệu hình ảnh. Do nhóm nghiên cứu dự kiến áp dụng sản phẩm ở các bãi đỗ xe ở thành phố Hà Nội và sau đó là trên cả nước nên đã tiến hành khảo sát các bãi đỗ xe ở Hà Nội, chụp ảnh một số bãi đỗ tạo cơ sở dữ liệu ảnh các bãi đỗ. Để phục vụ cho việc chụp ảnh và nhận dạng ảnh, việc khảo sát bãi đỗ xe cần xác định những tính chất sau: số lượng chỗ đỗ xe, hướng đỗ xe, cách thức xây dựng chỗ đỗ và việc có vẽ hay không các ô đỗ xe. Từ đó, sản phẩm thiết kế có thể thích ứng và áp dụng với nhiều bãi đỗ xe khác nhau.
Từ kết quả khảo sát, tính chất các bãi đỗ xe ở Hà Nội khác nhau rất lớn:
- Phần lớn các bãi đỗ xe nhỏ, ở lề đường, phần lớn xe ô tô đỗ dọc lề đường
- Một số bãi đỗ xe đỗ vuông góc với đường ô tô
- Chỉ có 1 bãi đỗ ô tô chéo
- Một số bãi đỗ ô tô lớn ngoài trời như ở AEON Mall
- Trừ các bãi đỗ xe lớn, hầu hết không có vẽ ô vị trí đỗ hoặc có vẽ nhưng xe
không đỗ đúng ô quy định.
Dựa vào kết quả khảo sát, nhóm đã thực hiện các công việc sau trong quá trình xây dựng bộ dữ liệu ảnh:
1. Xây dựng các yêu cầu về thư viện ảnh: Yêu cầu của ảnh theo bài toán:
- Về vị trí đặt camera: Camera bao quát được toàn bộ bãi đỗ hoặc phần lớn bãi đỗ, camera được đặt ở các vị trí cố định khác nhau. Cụ thể, camera đặt ở các tầng khác nhau của tòa nhà, hoặc tại nhiều góc khác nhau trên cùng một tầng nhà. Việc đặt camera ở nhiều vị trí, góc độ khác nhau của bãi đỗ giúp làm
tăng tính đa dạng của bộ dữ liệu, từ đó kết quả sẽ chính xác hơn thay vì chỉ đúng cho một vài trường hợp nhất định.
- Về thời gian chụp ảnh: Ảnh chụp cả ngày lẫn đêm trong nhiều điều kiện thời tiết, ánh sáng. Ảnh chụp tự động với tần suất 1 ảnh/phút. Tương tự như vị trí đặt camera, thời gian chụp ảnh đa dạng cũng sẽ giúp cho độ chính xác của hệ thống cao hơn.
- Về kích thước ảnh chụp: Ảnh chụp là ảnh HD có kích thước 1920x1080 pixel, định dạng ảnh .jpg. Ảnh chụp phải đảm bảo các vị trí đỗ sau khi cắt sẽ có kích thước tối thiểu là 75x75 pixel để đảm bảo nhận diện ô tô có độ chính xác cao.
2. Chọn bãi đỗ xe điển hình để tạo thư viện ảnh chuẩn cho các bãi đỗ xe đó.
Từ khảo sát bước 1, nhóm lựa chọn các bãi đỗ xe để chụp ảnh gồm:
- 02 bãi đỗ – chụp 628 ảnh bãi đỗ xe nhà C9, trường Đại học Bách khoa Hà Nội và 50 ảnh bãi đỗ xe thư viện Tạ Quang Bửu, trường Đại học Bách khoa Hà Nội.
- 01 bãi đỗ xe ở Bờ hồ.
- 01 bãi đỗ xe có số lượng lớn, bãi rộng – dự kiến ở AEO Mall, Gia lâm.
Các ảnh này được chụp vào các thời điểm khác nhau trong ngày, với thay đổi từ độ sáng, xe đỗ, thời tiết, kích thước ảnh, độ méo của ảnh…
3. Xử lý hình ảnh:
Với tần suất chụp ảnh khá dày so với khoảng thời gian đỗ xe trung bình nên trong bộ ảnh sẽ xuất hiện rất nhiều ảnh có trạng thái giống nhau (giống nhau cả về trạng thái các xe đỗ tại các vị trí và về điều kiện thời tiết, ánh sáng), vì vậy cần xử lý để loại bỏ những hình ảnh đó và chỉ giữ lại các các ảnh có tính chất khác nhau (khác nhau ít nhất ở 1 vị trí đỗ xe hay điều kiện thời tiết, ánh sáng khác nhau).
4. Cắt ảnh các chỗ đỗ xe
Để giám sát trạng thái bãi đỗ xe (kết quả cuối cùng của hệ thống nhận diện bãi đỗ xe), thuật toán phân loại ảnh dựa vào mạng nơ ron CNN được huấn luyện với đầu vào là ảnh chụp các vị trí đỗ xe. Tuy nhiên, ảnh chụp lấy từ camera là ảnh toàn cảnh bãi đỗ, trong đó chứa nhiều vị trí đỗ. Vì vậy, nhiệm vụ của đề tài này là tìm hiểu và
đưa ra được phương pháp cắt ảnh các vị trí đỗ một cách chính xác nhất. Từ đây, nhóm nghiên cứu đã đề xuất thực hiện việc cắt ảnh theo 2 cách:
- Cách 1: Trong trường hợp camera được giữ cố định, góc chụp không bị thay đổi, tọa độ của các vị trí đỗ sẽ được giữ nguyên trên tất cả các ảnh thu nhận từ camera. Vì vậy, ta chỉ cần sử dụng một ảnh làm ảnh tham chiếu để xác định toạ độ của các vị trí đỗ. Sau khi đã có tọa độ chuẩn, ta sử dụng phần để cắt đồng loạt các vị trí đỗ trong hình. Ưu điểm của phương pháp này là đơn giản, và có tốc độ xử lý nhanh. Tuy nhiên, nhược điểm đối với phương pháp này là nếu camera bị lệch khỏi vị trí ban đầu do tác động từ bên ngoài (gió, tác nhân khác) sẽ làm cho góc chụp thay đổi, tọa độ của vị trí đỗ được lấy mẫu theo tọa độ cố định xác định trước sẽ có nhiều sai số.
Hình 3. 1: Hình ảnh vị trí đỗ bị lệch
- Cách 2: Chọn ra 4 điểm trên bãi đỗ làm mốc, sau đó sẽ sử dụng những mốc này để nội suy ra vị trí của các chỗ đỗ xe. Phần mềm được phát triển (sử dụng thư viện Open CV) để nhận diện 4 điểm mốc, nội suy ra tọa độ ảnh của vị trí đỗ để cắt thành các ảnh nhỏ. Việc sử dụng 4 điểm mốc để đề phòng
trường hợp camera bị lệch so với thiết lập ban đầu, dẫn đến chụp ảnh lệch, và ảnh cắt được bị lệch nhiều. Chương trình sẽ hoạt động khi nhận ra ít nhất 3 điểm mốc hoặc nhận ra vị trí của camera không có sự thay đổi, nếu không, chương trình sẽ báo lỗi.
Sau khi hoàn thành khảo sát, nhóm nghiên cứu quyết định thực hiện công việc cắt ảnh theo cách 2 bởi vì nó hạn chế sai số khi thực hiện so sánh các hình ảnh vị trí đỗ xe về sau với hình ảnh vị trí đỗ từ ảnh mẫu, tiến gần hơn đến việc xác định các vị
36
trí tự động một cách chính xác hơn và khi sai lệch sẽ đưa ra cho chúng ta cảnh báo. Thực sự, đây là giải pháp tốt nhất được thực hiện đến hiện tại của nhóm nghiên cứu.
Đối với phương pháp này công việc được thực hiện bao gồm các bước:
- Thực hiện đánh dấu các cột mốc.
- Nội suy tọa độ ảnh của vị trí đỗ.