2010-08-02 25 views
7

Tôi có một loại câu hỏi chung R ở đây:Hình ảnh nhóm trong R?

Thông thường với digicams, chúng tôi có xu hướng nhấp vào rất nhiều giai đoạn có thể lặp lại và có thể lãng phí không gian trực tuyến trong khi chia sẻ trên Picassa hoặc là chi phí khi cố gắng xóa một số nội dung không mong muốn hình ảnh.

Có thể ghép ảnh bằng R? Tôi có nghĩa là có một số khả năng phân cụm trong Matlab để xử lý hình ảnh, nhưng là loại chức năng có sẵn hoặc có bất cứ đề nghị để làm điều này như vậy trong R?

Vui lòng cung cấp một số ý tưởng nếu có về chủ đề này.

Trả lời

9

Nếu bạn nhìn vào CRAN, có nhiều gói khác nhau (tôi đếm khoảng 10) để đọc dữ liệu hình ảnh. Và tất nhiên, có nhiều gói khác nhau để thực hiện phân cụm. Trong lý thuyết, bạn có thể chỉ cần cắm dữ liệu hình ảnh thô vào các thuật toán phân cụm, nhưng trong thực tế sẽ không hoạt động tốt. Xét về tốc độ, nó sẽ rất chậm, và về độ chính xác nó có lẽ sẽ khá tệ. Các kỹ thuật hiện đại để nhóm dữ liệu hình ảnh dựa vào các tính năng chuyên biệt được trích xuất từ ​​hình ảnh và hoạt động trên đó. Các tính năng tốt nhất là ứng dụng phụ thuộc, nhưng một số nổi tiếng nhất là SIFT, SURF và HOG. Các kỹ thuật cũ hơn dựa vào biểu đồ màu sắc của hình ảnh dưới dạng đối tượng địa lý, và có thể thực hiện được với gói R nói trên, nhưng nó không chính xác lắm - nó khó có thể phân biệt giữa hình ảnh biển và hình ảnh của căn phòng màu xanh.

Vậy phải làm gì? Nó phụ thuộc vào mục tiêu cuối cùng của bạn, thực sự. Một cách có thể sử dụng một trong các trình trích xuất tính năng nguồn mở khác nhau, lưu dữ liệu vào văn bản hoặc định dạng R có thể đọc được khác, và sau đó thực hiện xử lý dữ liệu trong R như bình thường.

Thư viện C nguồn mở tốt đẹp để trích xuất các tính năng có giao diện cli là vlfeat. Nếu bạn sử dụng điều này, tôi khuyên bạn nên sử dụng khai thác SIFT dày đặc trên ba kênh màu. Sau đó, đại diện cho mỗi hình ảnh bằng các vectơ SIFT nối và áp dụng kỹ thuật phân cụm yêu thích của bạn (có thể xử lý các vectơ có chiều theo hàng nghìn). Điều đó khó có thể mang lại cho bạn trạng thái nghệ thuật, nhưng đó là một sự khởi đầu.

This page có nhiều triển khai tham chiếu khác nhau của trình tách tính năng, nhưng chỉ nhị phân.

Hãy coi chừng: theo kinh nghiệm của tôi, R không quy mô quá tốt với bộ dữ liệu lớn, chiều cao (có kích thước trong phạm vi GB). Tôi yêu R đến chết, nhưng sử dụng C++ cho công cụ này.

+0

Đề xuất tuyệt vời, sẽ xem xét vấn đề này. Cảm ơn! –

+1

@Neo_Me: Tôi đã nhớ một chương trình Python + C để nhóm hình ảnh dựa trên các kỹ thuật này. Theo như tôi có thể thấy đó là một dự án một lần cho mục đích nghiên cứu, nhưng nó có thể phục vụ cho cảm hứng. [Yorg] (http://lear.inrialpes.fr/src/yorg/doc/index.html) – dimatura

Các vấn đề liên quan