Giải thuật

dog_thumb

Tạo ảnh PNG bằng cách xóa phông trắng

Có thể nhiều bạn đã biết ảnh PNG có thể “trong suốt – transparent”. Ảnh transparent khi nằm chồng lên ảnh khác thì phần transparent đó sẽ hiện ra ảnh bên dưới. Ví dụ như logo VisCom solution dạng PNG khi nằm ở trên ảnh camera sẽ không che lấp các pixel bên dưới:

Tạo ảnh PNG bằng cách xóa phông trắng

phát hiện giới tính

Giới thiệu chương trình phát hiện giới tính

Trong quá trình tìm hiểu mình có gặp chương trình phát hiện giới tính khá tốt. Tuy rằng chưa hoàn hảo nhưng có nhiều ưu điểm nên mình giới thiệu cho mọi người.

Chương trình do Arun Ponnusamy viết bằng ngôn ngữ Python sử dụng Keras. Chương trình vừa đủ các file cần thiết cho người mới tìm hiểu và hỗ trợ ảnh lẫn webcam. Nếu bạn muốn chạy test bằng video thì chỉ cần thay id của webcam thành video path là được.

Sử dụng các package gồm: numpy, opencv-python, tensorflow, keras, requests, progressbar, cvlib.

Ưu điểm của chương trình:
– Dễ chạy
– Độ chính xác chấp nhận được (phát hiện sai với khuôn mặt size nhỏ hơn 80px)
– Dễ training lại
– Code dễ hiểu, ngắn gọn

Model cascade đã huấn luyện

Model cascade đã huấn luyện

Có rất nhiều model cascade đã huấn luyện sẵn do cộng đồng OpenCV thực hiện. Các model này chứa đặc trưng của đối tượng cần tìm trong ảnh tổng hợp vào file *.xml. Dựa vào model này mà ta có thể biết đối tượng cần tìm có trong ảnh không. Trong lib opencv cũng đã đã có sẵn 1 số model cascade.

Hướng dẫn sử dụng IPSSclr

IPSSclr dùng để đọc biển số xe máy Việt Nam. Đây là 1 project open source của mình dành cho các bạn sinh viên tìm hiểu. Từ khi public source mình gặp nhiều câu hỏi của các bạn nên mình tổng hợp lại. Các vấn đề chủ yếu như:
– Build lỗi project lib
– Không pull được đầy đủ source
– Không tương thích phiên bản Visual Studio

ipss_clr

Bài này mình sẽ mô tả cách fix các lỗi trên cho người mới tìm hiểu.

nhận diện khuôn mặt

Nhận diện khuôn mặt – P2: face recognition

Sau khi đã phát hiện được khuôn mặt chúng ta tiến hành nhận dạng (recognition).

Để nhận dạng ta sử dụng lib face, là lib được đóng góp bởi người dùng OpenCV. Trong lib face hỗ trợ 3 phương pháp nhận diện là Eigen, Fisher và LBPH. Các tham số đó tốt nhất là để trong file config để dễ dàng thay đổi mà không cần build lại.

Retrain face cascade model

Bài viết này hướng dẫn các bạn retrain cascade model theo nhu cầu sử dụng. Thí dụ như muốn model nhẹ hơn để chương trình chạy nhanh và nhẹ hơn. Hoặc đôi lúc bỏ sót vật thể thì cần bổ sung thêm hình ảnh mới.

Dùng tool Cascade Analytics test file lbpcascade_frontalface.xml thì nhận nhầm 1 khuôn mặt (False Positive). Để chính xác hơn thì cần phải training lại, training nhiều lần đến khi đúng thì thôi.

false_positive_face

Hoặc các trường hợp sử dụng đặc biệt khác mà bạn cần training lại theo mục đích sử dụng. Có thể là xe cộ, chó mèo,… bài viết này tập trung vào khuôn mặt cho dễ hình dung.

Đây là bài viết nâng cao trong seri nhận diện khuôn mặt. Để hiểu bài này các bạn cần đọc lý thuyết & làm ví dụ trong OpenCV cơ bản. Cần đọc và làm theo 3 bài viết sau để hiểu bài này:

1. Phát hiện vật thể – P1: lý thuyết
2. Phát hiện vật thể – P2: thực hành
3. Phát hiện vật thể – P3: kinh nghiệm & hỏi đáp

text_locator_thumb

Tìm vị trí của text trong ảnh

Với các loại text có format cố định thì việc đọc rất dễ dàng. Tọa độ đã được xác định, chỉ cần chỉ định vùng text cố định là được. Còn các loại văn bản khác thì cần xác định vị trí trước sau đó mới nhận dạng ký tự.

Việc này giúp cho đọc text nhanh hơn là tìm toàn bộ ảnh. Tuy nhiên có thể bị miss (bỏ sót) vùng text nên các bạn cần cân nhắc kỹ.

thumbnail

Tạo ảnh thumbnail từ video

Bản chất của video trong Thị giác máy tính là chuỗi các hình ảnh liên tiếp nhau để tạo ra chuyển động mượt mà. Để mắt người cảm thấy hình ảnh không bị giật thì tối thiểu là 24 fps (frame per second). Do đó, từ video ta có thể tách ra các hình ảnh rồi ghép lại để tạo thành ảnh thumbnail.

Bài này mục đích giới thiệu về các hàm cơ bản của OpenCV cho các bạn mới làm quen. Sau khi làm xong bài này có thể hiểu được:
– Trích xuất frame từ video
– ROI (region of interest)
– Save ảnh

Xác định độ nhòe của ảnh

Xác định độ nhòe của ảnh

Xác định độ nhòe của ảnh ứng dụng trong lấy nét tự động (auto focus). Trong một số ứng dụng khác cũng cần tính độ nhòe của ảnh để kiểm tra chất lượng input.

Các bài toán cần xác định độ nhòe chủ yếu là nhận dạng hình ảnh. Khi ảnh nhòe sẽ làm mất đi các đặc trưng hoặc gây nhiễu. Do đó cần loại bỏ các ảnh bị nhòe trước khi xử lý.

Thí dụ nhận diện khuôn mặt, đọc biển số xe máy – xe hơi.

nhận diện khuôn mặt

[C++] Chương trình nhận diện khuôn mặt

Trong ứng dụng nhận diện khuôn mặt thì bước nhận diện là bước cuối cùng để hiển thị kết quả. Tìm hiểu các bài trước ở đây:
Phát hiện khuôn mặt – face detection
Phát hiện khuôn mặt – P2: tối ưu hoá

Và cũng đã có chương trình nhận diện khuôn mặt viết bằng EmguCV, tuy nhiên code cũng hơi cũ rồi:
[C#] Nhận diện khuôn mặt – face recognition