- Camera line-scan rất phù hợp để chụp các đối tượng chuyển động như tàu hỏa ở độ phân giải cao mà không bị méo hình
- Xử lý ảnh cần nhiều thuật toán và kỹ thuật khác nhau như phát hiện vùng quan tâm, ước lượng tốc độ, tái lấy mẫu
- Các bước cải thiện chất lượng như loại bỏ sọc ngang và dọc cùng khử nhiễu là rất quan trọng
- Việc triển khai bao gồm xử lý dữ liệu dung lượng lớn, sử dụng Python, numpy và nhiều cải tiến mang tính thực nghiệm
- Có thể thu được thêm nhiều góc nhìn hữu ích bằng cách so sánh với các ví dụ ảnh line-scan của những tác giả khác
Tổng quan về camera line-scan
- Camera line-scan quét ảnh với tốc độ rất cao bằng một hàng (hoặc hai hàng) pixel
- Camera được cố định, và khi tàu chạy ngang qua trước camera thì toàn bộ hình dạng sẽ được ghi lại
- Nền tĩnh được lặp lại trên mọi cột dọc của ảnh, tạo ra hiệu ứng sọc đặc trưng
- Cách làm này cho phép chụp ảnh độ phân giải cao không bị biến dạng trên toàn bộ chiều dài đoàn tàu, nên cũng hữu ích cho các sở thích như dựng mô hình tàu
- Camera strip dùng phim cũng hoạt động theo nguyên lý tương tự, nhưng khác ở chỗ phải tự căn tốc độ phim do vấn đề độ nhạy sáng
Thiết bị camera
- Sử dụng mẫu [Alkeria Necta N4K2-7C], được trang bị cảm biến ảnh mảng Bayer kép 4096×2
- Dữ liệu gốc được lưu dưới dạng mảng nhị phân 16-bit
- Việc chụp được thực hiện trong nhiều môi trường khác nhau như tàu điện ngầm đô thị
Phát hiện vùng quan tâm (ROI)
- Khi quét trong thời gian dài sẽ phát sinh lượng lớn dữ liệu nền, nên thuật toán tự động phát hiện đoạn chứa vật thể chuyển động là bắt buộc
- Thuật toán kết hợp hàm năng lượng (dựa trên gradient) với giá trị pixel cực đại để phân biệt cấu trúc dọc (chuyển động) và cấu trúc ngang (nền)
- Ảnh được chia thành nhiều chunk, rồi tính điểm bằng năng lượng phân vị 99 của từng chunk
- Các chunk có điểm cao hơn ít nhất 1,5 lần so với mức thấp nhất được xem là vùng có chứa vật thể chuyển động
- Các cách cũ không khái quát tốt, còn cách hiện tại hoạt động hiệu quả hơn trong nhiều tình huống khác nhau
Ước lượng tốc độ
- Khi chủ thể di chuyển, nếu ước lượng tốc độ sai thì ảnh sẽ bị kéo giãn hoặc bóp méo
- Tốc độ chuyển động của từng chunk được tính bằng cách so sánh hai kênh xanh lá (Green) của camera
- Với mỗi chunk, áp dụng các dịch chuyển nhỏ từ -7 đến +7 rồi tính tổng độ lệch tuyệt đối giữa hai kênh để tạo cost array
- Để tìm đỉnh subpixel, dùng phép nội suy kiểu [mean shift] dựa trên Gaussian, sau đó hiệu chỉnh toàn bộ biến thiên bằng spline
- Giá trị spline trích xuất được biểu thị khoảng cách mẫu trong chuỗi thời gian gốc, và được dùng để hiệu chỉnh méo ảnh
Tái lấy mẫu
- Tính vị trí mẫu theo spline để trích xuất ảnh mới
- Có xét các trường hợp ngoại lệ như spline âm thì lật trái-phải, hoặc gần 0 thì xử lý như lỗi
- Với mỗi vị trí mẫu cũng lưu thông tin về độ rộng mẫu, và dùng hàm cửa sổ phù hợp như Hann window để cải thiện hiệu năng chống aliasing
- Việc chỉ chọn cột đơn giản hoặc dùng cửa sổ hình chữ nhật không phù hợp vì tạo ra artifact thô khi upsampling
Demosaic
- Cần một quy trình demosaic tùy biến như bilinear interpolation có tính đến độ lệch không gian của mảng Bayer 2 cột
- Sau khi ước lượng tốc độ, hiện tượng fringing và các lỗi tương tự được hiệu chỉnh bằng nội suy tuyến tính
- Do có khác biệt giữa dữ liệu của hai kênh xanh lá, có khả năng khôi phục màu đầy đủ còn tốt hơn mảng Bayer thông thường
Loại bỏ sọc dọc
- Clock jitter (stripes) và thay đổi độ sáng của chủ thể gây ra sọc dọc trong ảnh
- Việc hiệu chỉnh sọc dùng hàm hiệu chỉnh theo từng cột với hồi quy tuyến tính và trọng số Gaussian (iteratively reweighted least squares)
- Các hàm hiệu chỉnh này tạo thành một cấu trúc nhóm toán học; để tránh drift khi tích lũy hiệu chỉnh, có thể cân nhắc lời giải hệ tuyến tính band-diagonal
- Trong thực tế, cũng có thể dùng bộ lọc làm mượt theo hàm mũ để triệt nhiễu tần số cao
- Việc hiệu chỉnh sọc bắt buộc phải thực hiện trước bước ước lượng tốc độ
Khử nhiễu
- Áp dụng kỹ thuật kiểm soát nhiễu dựa trên patch (block matching), tận dụng tích cực các kết cấu lặp lại trên bề mặt tàu
- Dùng vector đặc trưng của từng patch 3×3 pixel, rồi giảm nhiễu bằng trung bình có trọng số trong các patch tương tự
- Hiệu năng tốt hơn nếu tiền xử lý theo phân phối Poisson (biến đổi căn bậc hai) trước khi so sánh, tùy theo cường độ tín hiệu
- Kỹ thuật total variation denoising hiện có làm mất kết cấu quá nhiều nên không phù hợp
- Hạn chế của kỹ thuật này là khối lượng tính toán lớn và tốc độ chậm
Hiệu chỉnh độ nghiêng (Skew)
- Nếu camera không đặt thẳng đứng, toàn bộ ảnh sẽ bị nghiêng nhẹ
- Phát hiện skew nên được thực hiện sau bước ước lượng tốc độ và trước bước tái lấy mẫu cuối cùng để giảm thiểu mất mát thông tin
- Có thể tự động phát hiện dựa trên cấu trúc dọc bằng Hough transform hoặc các phương pháp tương tự
Hiệu chỉnh màu sắc
- Hiện tại màu sắc được cân chỉnh bằng ma trận hiệu chỉnh thủ công
- Trong thực tế, chất lượng cho ra khá tốt, bao gồm cả tông da tự nhiên
Chi tiết triển khai
- Toàn bộ pipeline được triển khai bằng Python và numpy
- Do kích thước dữ liệu rất lớn (4096 hàng × hàng trăm nghìn cột), nên để vượt qua vấn đề thiếu bộ nhớ đã áp dụng cách xử lý theo từng chunk, từng giai đoạn
- Không thể cấp phát bộ nhớ hàng loạt một lần, vì vậy ở mỗi bước đều xử lý và lưu từng phần dữ liệu
Kinh nghiệm triển khai
- Đã thử đưa công cụ AI vào quá trình viết mã, nhưng kết quả còn hạn chế
- AI thường xuyên sinh ra mã kém hiệu quả, chẳng hạn biến các bài toán tuyến tính thành độ phức tạp thời gian bậc hai không cần thiết
- Cũng có các vấn đề bộ nhớ như tạo mask toàn cục không cần thiết khi xử lý mảng lớn
- Dù vậy, AI vẫn có thể giúp tăng hiệu quả ở một số phần như API, tổ chức cấu trúc mã, hay trực quan hóa bằng Matplotlib
Các ví dụ ảnh tàu line-scan của người khác
Adam Magyar
- [Adam Magyar] đã thực hiện các dự án "Stainless", "Urban Flow" bằng camera line-scan đen trắng do chính mình chế tạo
- Ông từng chụp ra những kết quả rất sạch ngay cả trong môi trường thiếu sáng như tàu điện ngầm trong nhà
- Cần chọn vị trí chụp để tránh hiện tượng nhấp nháy của đèn tàu điện ngầm
Blog KR64
- [kr64.seesaa.net] đăng tải số lượng lớn ảnh tàu line-scan đa dạng trên khắp Nhật Bản
- Nhiều khả năng dựa trên camera slit-scan dùng phim, với độ đa dạng và chất lượng rất cao
- Trang web thường bị gián đoạn vì vấn đề kỹ thuật và không thể liên hệ được
Chưa có bình luận nào.