2010-02-08 75 views
14

Tôi đang suy nghĩ về việc tạo một hệ thống cơ sở dữ liệu cho hình ảnh nơi chúng được lưu trữ với chữ ký nhỏ gọn và sau đó khớp với "hình ảnh truy vấn" có thể được thay đổi kích thước, cắt, sáng, xoay hoặc lật của phiên bản được lưu trữ. Lưu ý rằng tôi không nói về các thuật toán tương tự hình ảnh mà đúng hơn là phát hiện trùng lặp. Điều này sẽ làm cho mọi thứ đơn giản hơn rất nhiều. Hệ thống sẽ không quan tâm nếu hai hình ảnh có một con voi trên chúng, nó sẽ chỉ quan trọng để phát hiện nếu hai hình ảnh trong thực tế, cùng một hình ảnh.Thuật toán phát hiện hình ảnh trùng lặp?

So sánh biểu đồ chỉ đơn giản là không hoạt động đối với hình ảnh truy vấn đã cắt. Cách duy nhất để đi mà tôi thấy là phát hiện hình dạng/cạnh. Hình ảnh đầu tiên sẽ được phân loại bằng cách nào đó, mỗi pixel được chuyển đổi thành một thang độ xám 8 cấp chẳng hạn. Các hình ảnh discretized sẽ chứa các khu vực rộng lớn trong cùng một màu sắc mà sẽ giúp chỉ ra hình dạng. Những hình dạng này sau đó có thể được mô tả với các hệ số và vị trí tương đối của chúng có thể được ghi nhớ. Chữ ký nhỏ gọn sẽ được tạo ra từ đó. Quá trình này sẽ được thực hiện trên mỗi hình ảnh được lưu trữ và trên mỗi hình ảnh truy vấn khi thực hiện một so sánh. Điều đó nghe có vẻ giống như một thuật toán hiệu quả và có thể thực hiện được không? Để minh họa cho ý tưởng này:

loại bỏ liên kết ImageShack chết

Tôi biết đây là một lĩnh vực nghiên cứu còn non nớt, tôi đã đọc Wikipedia về đề tài này và tôi sẽ yêu cầu bạn đưa ra ý tưởng của bạn về một thuật toán như vậy.

+2

Bạn nói rằng bạn đang không nói về các thuật toán tương tự, nhưng phát hiện trùng lặp. Tuy nhiên, nếu bạn cũng đang nói về việc cho phép thay đổi, đặc biệt là cắt xén, bạn chắc chắn sẽ phải đưa ra phán quyết về mức độ "tương tự". –

+0

Không nghi ngờ gì sẽ có ngưỡng chấp nhận được khi thực hiện so sánh. Vấn đề là, ngay cả một hình ảnh truy vấn bị cắt và thay đổi kích cỡ vẫn chứa một tập con của cùng một hình dạng/khu vực quan tâm, được định vị tương đối theo cùng một cách, nhưng được biểu diễn bằng một số lượng pixel khác nhau. –

Trả lời

1

Kiểm tra tineye.com Họ có một hệ thống tốt luôn cải thiện. Tôi chắc rằng bạn có thể tìm thấy các tài liệu nghiên cứu từ họ về chủ đề này.

+1

Tôi thích đọc và tổng hợp các ý tưởng khác nhau ở đây. Tôi đã thấy Tineye trước đây. –

1

Làm cách nào để chuyển đổi this python codes sang C?

+0

Mã bạn tham chiếu dựa trên việc tìm nạp biểu đồ. Nó sẽ hoạt động tốt nếu hình ảnh truy vấn không thể bị cắt. Một hình ảnh con bị cắt sẽ tạo ra một biểu đồ hoàn toàn khác so với toàn bộ hình ảnh, do đó không thể áp dụng trong trường hợp này. –

1

Bài viết bạn có thể đang đề cập đến on Wikipedia on feature detection.

Nếu bạn đang chạy trên bộ vi xử lý Intel/AMD, bạn có thể sử dụng Intel Integrated Performance Primitives để truy cập vào thư viện các chức năng xử lý hình ảnh. Hoặc hơn thế nữa, có một dự án OpenCV, một thư viện khác của các chức năng xử lý hình ảnh cho bạn. Lợi thế của một thư viện sử dụng là bạn có thể thử các thuật toán khác nhau, đã được triển khai, để xem những gì sẽ làm việc cho tình huống của bạn.

+0

Việc thử các chức năng xử lý khác nhau không phải là vấn đề. Tôi sẽ quan tâm nếu bạn có một ý tưởng cụ thể, ngay cả một ý tưởng rất thưa thớt để đạt được nhiệm vụ. –

+0

Bạn có thể lấy các thành phần tần số từ cả hình ảnh mục tiêu và truy vấn và thực hiện "một số loại so sánh" nào không? Yup, đây là rất thưa thớt, nó được một thời gian. Làm điều này là tính toán chuyên sâu ;-) –

2

Nếu bạn muốn thực hiện mô hình điều khiển phát hiện tính năng, bạn có thể chụp singular value decomposition của hình ảnh (bạn có thể phải thực hiện SVD cho mỗi màu) và sử dụng một vài cột đầu tiên của ma trận U và V cùng với các giá trị số ít tương ứng để đánh giá mức độ tương tự của hình ảnh.

Rất giống với phương pháp SVD được gọi là principle component analysis mà tôi nghĩ sẽ dễ sử dụng hơn để so sánh giữa các hình ảnh. Phương pháp PCA là khá gần với chỉ lấy SVD và loại bỏ các giá trị số ít bằng cách bao thanh toán chúng vào ma trận U và V. Nếu bạn đi theo đường dẫn PCA, bạn cũng có thể muốn xem xét correspondence analysis. Bằng cách này, phương pháp PCA là một phương pháp phổ biến được sử dụng trong các Netflix Prize để trích xuất các tính năng.

+0

Tôi đã cố gắng để làm cho nó rõ ràng rằng hình ảnh truy vấn sẽ là một biến thể của bản gốc, không phải là một bản sao chính xác. Tôi phải điều tra về SVD. –

+0

Có, tôi đã chỉnh sửa giải pháp của mình. Tôi lấy ra thông tin kiểm tra, và đặt nhiều hơn liên quan đến SVD. –

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