Các bước cơ bản của ứng dụng xử lý ảnh

Các bước cơ bản của ứng dụng xử lý ảnh

Các bước cơ bản của ứng dụng xử lý ảnh gồm 3 bước chính: Tiền xử lý -> Phát hiện -> Nhận diện. Tuy nhiên tùy theo yêu cầu mà không cần phải có đủ 3 bước.

Xử lý ảnh hay bị nhầm với chỉnh sửa ảnh bằng Photoshop, do đó gọi là Thị giác máy tính (TGMT) cho gọn.




Lý thuyết

Ứng dụng TGMT có input là ảnh và ouput là thông tin. Thông tin output dùng để trả lời các câu hỏi của bài toán như:
– Có vật thể trong ảnh không?
– Vật thể ở vị trí nào?
– Có bao nhiêu vật thể trong ảnh?
– Vật thể đó loại gì?
– Ảnh có đủ chất lượng không? (nét, nhiễu,…)
….

Bài viết này sử dụng 2 bài toán kinh điển là đọc biển số xenhận diện khuôn mặt làm ví dụ. 2 bài toán này nhiều người biết nên dễ phân tích.

Bước 1: Tiền xử lý

Tiền xử lý có mục đích làm cho ảnh dễ nhận dạng hơn, loại bỏ các yếu tố không cần thiết. Các công việc thường gặp như:
– Crop ảnh, resize ảnh
– Biến đổi ảnh thành dạng ảnh khác: ảnh màu sang ảnh xám, ảnh xám sang nhị phân, RGB -> HSV,…
– Cân bằng sáng
– Lọc nhiễu
– Xoay ảnh, warp ảnh
….

warp2
Ảnh sau khi warp để góc nhìn được trực diện hơn

Denoised
Ảnh sau khi đã lọc nhiễu (internet)

Trong ứng dụng nhận diện khuôn mặt thì tiền xử lý biến đổi ảnh thành ảnh xám. Ngoài ra tùy theo yêu cầu về độ chính xác mà có thể áp dụng nhiều phương thức để ảnh dễ nhận diện hơn. Thường là cân bằng sáng, tăng độ tương phản để nhận diện chính xác hơn.

Còn đọc biển số xe cũng chuyển sang ảnh xám, và tùy theo size ảnh của camera (1MP hay 2MP) mà resize lại. Cần phải resize vì kích cỡ ảnh quá lớn sẽ làm tốn thời gian xử lý.

Bước 2: Phát hiện

Phát hiện vật thể dùng để tìm vật thể trong ảnh. Sau bước này sẽ biết được có vật thể cần tìm không, nếu có thì ở vị trí nào & số lượng bao nhiêu.

Tùy theo loại đối tượng cần tìm mà có các cách khác nhau, như Cascade là 1 cách. Các bài toán đơn giản như tìm màu sắc chỉ cần dùng kênh màu HSV là được.

Khi xong bước phát hiện khuôn mặt bạn sẽ biết được số lượng khuôn mặt trong ảnh (0 -> n). Nếu 0 có khuôn mặt thì dừng lại & trả về kết quả, nếu có thì qua bước 3 để nhận diện.

Biển số xe cũng tương tự, cần phải xác định là có biển số xe trong ảnh hay không. Nếu không có thì trả về kết quả cho người dùng là không có biển số. Còn có biển số thì lặp lại bước Phát hiện một lần nữa để tìm ký tự trong biển. Sau khi tách xong các ký tự thì mới đưa sang bước 3 để nhận diện.

floodfill_plate

Bước 3: Nhận diện (Nhận dạng)

Sau khi đã phát hiện được vật thể và muốn nhận diện vật thể loại nào thì cần bước này. Bước này phải sử dụng Machine Learning để phân lớp (classification) đối tượng.

Để nhận diện khuôn mặt cần crop khuôn mặt để Machine Learning nhận diện. Bước phân lớp tác dụng là tìm xem giống khuôn mặt đã học nào nhất. Kết quả trả về là khuôn mặt giống nhất kèm tỉ lệ giống (confident).

Các ký tự sau khi segment khỏi ảnh thì tiến hành phân loại lớp để lấy kết quả:
char_histogram

Kết luận

Tiền xử lý luôn có trong mọi ứng dụng TGMT, còn bước Nhận diện tùy theo yêu cầu mà thực hiện. Bước Nhận diện cần phải chuẩn bị đầy đủ dữ liệu để training và kiến thức về ML.

Tuy nhiên bước 2 và bước 3 đều có thể phải cần đến Machine Learning nếu như vật thể cần tìm có cấu trúc phức tạp. Đôi khi phải lặp lại nhiều lần các bước 1-2-3 mới ra được kết quả. Do đó các bước cơ bản chỉ mang tính chất tham khảo tương đối, không áp dụng cho mọi hoàn cảnh.

Thứ tự của các bước cũng chỉ mang tính tương đối, tùy theo các loại yêu cầu của bài toán. Do đó cần có tư duy linh hoạt, sẵn sàng thử nghiệm, so sánh cái mới để tìm ra cách chính xác nhất.

Leave a Reply