Giải Thích Theo Dõi Màu#
Theo dõi một màu là gì và CMUcam4 làm điều đó như thế nào?#
Theo dõi màu là khả năng lấy một ảnh, cô lập một màu cụ thể và trích xuất thông tin về vị trí của một vùng của ảnh đó chỉ chứa màu đó. Ví dụ, giả sử bạn được đưa cho một bức ảnh chứa một quả bóng đỏ nằm trên một con đường đất. Nếu ai đó yêu cầu bạn vẽ một khung quanh bất cứ thứ gì có màu đỏ trong ảnh, bạn sẽ khá dễ dàng vẽ một hình chữ nhật quanh quả bóng. Đây là ý tưởng cơ bản đằng sau việc theo dõi màu. Bạn không cần biết rằng đối tượng là một quả bóng. Bạn chỉ cần có một khái niệm về màu đỏ để cô lập đối tượng trong bức ảnh. Bên dưới, chúng tôi sẽ đề cập ngắn gọn về cách CMUcam4 thực sự sử dụng thông tin trong một ảnh camera để thực hiện việc theo dõi màu.
Để chỉ định màu, bạn cần định nghĩa một giá trị cho phép tối thiểu và tối đa cho ba kênh màu. Mỗi màu độc nhất được biểu diễn bởi một giá trị đỏ, xanh lá, và xanh dương cho biết lượng của mỗi kênh được pha trộn vào màu độc nhất đó. Phần khó khăn khi chỉ định một màu là bạn cần định nghĩa một phạm vi các giá trị cho phép cho cả ba kênh màu. Vì ánh sáng không hoàn toàn đồng nhất và màu của một đối tượng không hoàn toàn đồng nhất, bạn cần thích ứng với những biến đổi này. Tuy nhiên, bạn không muốn nới lỏng các giới hạn này quá nhiều, nếu không nhiều màu không mong muốn sẽ được chấp nhận. Vì, trong trường hợp của CMUcam4, mỗi kênh màu được chuyển đổi thành một số giữa 0 và 255, bạn có thể giới hạn mỗi kênh bằng hai số, một giới hạn trên và một giới hạn dưới. Nếu bạn có hai giới hạn cho mỗi kênh trong ba kênh, điều này có nghĩa là sáu giá trị có thể được sử dụng để ràng buộc toàn bộ không gian màu mà bạn muốn theo dõi. Nếu bạn tưởng tượng các màu được biểu diễn bởi một khối lập phương trong đó mỗi cạnh là một kênh màu khác nhau (đỏ, xanh lá và xanh dương) thì sáu giá trị được dùng để chọn màu của bạn sẽ vẽ một hộp ba chiều bên trong khối lập phương đó, hộp này định nghĩa tập hợp màu mong muốn của bạn.
Một khi bạn có một giới hạn cho màu bạn muốn theo dõi, CMUcam4 lấy các giới hạn này và xử lý ảnh. Có nhiều cách để theo dõi màu trong một ảnh có thể khá phức tạp. CMUcam4 sử dụng một thuật toán một lượt đơn giản xử lý mỗi khung hình ảnh mới từ camera một cách độc lập. Nó bắt đầu ở góc trên bên trái của ảnh và tuần tự kiểm tra mọi pixel theo từng hàng. Nếu pixel nó đang kiểm tra nằm trong phạm vi màu mà người dùng đã chỉ định, nó đánh dấu pixel đó là được theo dõi. Nó cũng kiểm tra vị trí của pixel được theo dõi hiện tại để xem liệu nó có phải là vị trí trên cùng, dưới cùng, trái nhất, hay phải nhất của tất cả các pixel được theo dõi được tìm thấy cho đến nay trong ảnh hay không. Nếu nó phát hiện rằng pixel nằm ngoài khung bao hiện tại của vùng được theo dõi, nó mở rộng khung bao để chứa pixel mới này. Vì vị trí của thậm chí một pixel được theo dõi duy nhất có thể thay đổi khung bao, khung bao đôi khi có thể dao động khá nhiều từ khung hình này sang khung hình khác. Lọc nhiễu (xem đoạn tiếp theo) có thể được sử dụng để giảm một số dao động đó. Phần thông tin chính khác duy nhất được lưu là tổng của các tọa độ ngang và dọc của các pixel được theo dõi. Ở cuối ảnh, CMUcam4 lấy tổng ngang và tổng dọc của các pixel được theo dõi và chia mỗi tổng cho tổng số pixel được theo dõi và có được một giá trị cho thấy nơi trung tâm của đối tượng được theo dõi tọa lạc. Vì mỗi pixel được theo dõi chỉ đóng góp một phần nhỏ vào các tổng ngang và dọc cuối cùng, trung tâm (thường được gọi là trọng tâm) của các pixel được theo dõi thường là một phép đo ổn định hơn nhiều so với khung bao. Một khi tất cả các pixel trong ảnh đã được kiểm tra, tổng số pixel được theo dõi cũng có thể được sử dụng kết hợp với diện tích của khung bao để tính toán độ tin cậy của và số lượng pixel trong đối tượng được theo dõi.
Lọc nhiễu cho phép chúng ta làm cho các phạm vi theo dõi màu lớn hơn để chúng ta có thể thích ứng với các biến đổi lớn hơn trong các giá trị pixel của ảnh mà không khiến các biến đổi ngẫu nhiên khác trong ảnh bị theo dõi. Ý tưởng đằng sau việc lọc nhiễu là chúng ta chỉ muốn coi một pixel là màu được theo dõi nếu nó là một phần của một nhóm pixel nằm trong các giới hạn theo dõi màu. Trong CMUcam4, chúng ta triển khai điều này theo cách chỉ yêu cầu một lượt duy nhất qua ảnh. Trong khi xử lý các pixel trong một ảnh, CMUcam4 duy trì một bộ đếm theo dõi số lượng pixel liên tiếp trong hàng hiện tại, trước pixel hiện tại, nằm trong các giới hạn màu được theo dõi. Nếu giá trị đó cao hơn giá trị bộ lọc nhiễu thì pixel hiện tại được đánh dấu là một pixel được theo dõi.
Histogram là gì và nó có ích cho việc gì?#
Histogram là một loại biểu đồ hiển thị tần suất và phân bố của dữ liệu. Trong trường hợp của CMUcam4, histogram cho thấy tần suất và phân bố của các giá trị màu tìm thấy trong một ảnh. Mỗi thanh biểu diễn một dải các giá trị màu cho một kênh cụ thể. CMUcam4 có thể chia các giá trị màu khả dĩ từ 0 đến 255 thành 1, 2, 4, 8, 16, 32, và 64 khoảng (bin) khác nhau. Mỗi bin chứa số lượng pixel tìm thấy trong ảnh nằm trong một số giới hạn màu nhất định. Vì vậy một giá trị lớn trong một bin cụ thể có nghĩa là nhiều màu đó đã được tìm thấy trong ảnh. Mỗi histogram chỉ biểu diễn một kênh màu được chọn.
Histogram là một cách trừu tượng hóa nội dung của một ảnh. Chúng có nhiều công dụng như nhận dạng đối tượng cơ bản, phân ngưỡng hoặc cân bằng màu. Chúng đặc biệt hữu ích để phân biệt giữa các kết cấu khác nhau. Hãy thử hướng CMUcam4 với auto-gain tắt vào hai bề mặt có kết cấu khác nhau và chú ý sự khác biệt trong phân bố màu của chúng. Hiệu ứng này có thể được sử dụng để phân biệt các bề mặt sàn hoặc phát hiện chướng ngại vật.