Đây chỉ là những ý tưởng tôi đã nghĩ về vấn đề, chưa bao giờ thử nó nhưng tôi thích nghĩ về những vấn đề như thế này!
Trước khi bắt đầu
Cân nhắc việc bình thường hóa các hình ảnh, nếu một trong số đó có độ phân giải cao hơn các hình ảnh khác, hãy xem xét tùy chọn rằng một trong số chúng là phiên bản nén của hình ảnh khác, do đó việc giảm độ phân giải xuống có thể cung cấp kết quả chính xác hơn.
Xem xét việc quét các khu vực tiềm năng khác nhau của hình ảnh có thể đại diện cho các phần được phóng to của hình ảnh và các vị trí và góc quay khác nhau. Sẽ bắt đầu trở nên khó khăn nếu một trong những hình ảnh là phiên bản sai lệch của người khác, đây là những hạn chế bạn nên xác định và thỏa hiệp.
Matlab là một công cụ tuyệt vời để thử nghiệm và đánh giá hình ảnh.
Kiểm tra các thuật toán
Bạn nên kiểm tra (tối thiểu) một bộ dữ liệu thử nghiệm được phân tích lớn của con người trong đó các kết quả trùng khớp được biết trước. Ví dụ: trong dữ liệu thử nghiệm của bạn, bạn có 1.000 hình ảnh trong đó 5% trong số chúng khớp với nhau, thì bây giờ bạn có điểm chuẩn đáng tin cậy hợp lý. Một thuật toán tìm thấy 10% dương tính không tốt bằng thuật toán tìm thấy 4% dương tính trong dữ liệu thử nghiệm của chúng tôi. Tuy nhiên, một thuật toán có thể tìm thấy tất cả các kết quả khớp, nhưng cũng có tỷ lệ dương tính giả lớn 20%, vì vậy có một số cách để đánh giá thuật toán của bạn.
Dữ liệu thử nghiệm nên cố gắng được thiết kế để bao gồm càng nhiều loại động lực càng tốt mà bạn mong muốn tìm thấy trong thế giới thực.
Điều quan trọng cần lưu ý là mỗi thuật toán hữu ích phải thực hiện tốt hơn so với đoán ngẫu nhiên, nếu không nó là vô ích đối với chúng tôi!
Sau đó, bạn có thể áp dụng phần mềm của mình vào thế giới thực một cách có kiểm soát và bắt đầu phân tích kết quả mà nó tạo ra. Đây là loại dự án phần mềm có thể tiếp tục cho infinitum, luôn có những cải tiến và cải tiến bạn có thể thực hiện, điều quan trọng là phải nhớ rằng khi thiết kế nó vì nó dễ rơi vào cái bẫy của dự án không bao giờ kết thúc.
Xô màu
Với hai hình ảnh, quét từng pixel và đếm màu sắc. Ví dụ: bạn có thể có 'xô':
white
red
blue
green
black
(Rõ ràng là bạn sẽ có độ phân giải cao hơn của quầy). Mỗi khi bạn tìm thấy một pixel 'đỏ', bạn sẽ tăng bộ đếm màu đỏ. Mỗi thùng có thể đại diện cho phổ màu, độ phân giải càng cao thì càng chính xác nhưng bạn nên thử nghiệm với tỷ lệ chênh lệch chấp nhận được.
Khi bạn có tổng số của mình, hãy so sánh nó với tổng số cho hình ảnh thứ hai. Bạn có thể thấy rằng mỗi hình ảnh có một dấu chân khá độc đáo, đủ để xác định các kết quả khớp.
Phát hiện cạnh
Làm thế nào về việc sử dụng Phát hiện cạnh .
(nguồn: wikidia.org )
Với hai hình ảnh phát hiện cạnh tương tự sẽ cung cấp cho bạn một dấu chân độc đáo có thể sử dụng và khá đáng tin cậy.
Chụp cả hai hình ảnh, và áp dụng phát hiện cạnh. Có thể đo độ dày trung bình của các cạnh và sau đó tính xác suất hình ảnh có thể được thu nhỏ và chỉnh lại nếu cần. Dưới đây là một ví dụ về Bộ lọc Gabor được áp dụng (một loại phát hiện cạnh) trong các góc quay khác nhau.
So sánh pixel hình ảnh cho pixel, đếm các trận đấu và không khớp. Nếu chúng nằm trong một ngưỡng lỗi nhất định, bạn có một trận đấu. Mặt khác, bạn có thể thử giảm độ phân giải đến một điểm nhất định và xem xác suất của trận đấu có cải thiện không.
Khu vực quan tâm
Một số hình ảnh có thể có các phân đoạn / khu vực quan tâm đặc biệt. Các vùng này có thể tương phản cao với phần còn lại của hình ảnh và là một mục tốt để tìm kiếm trong các hình ảnh khác của bạn để tìm kết quả khớp. Lấy hình ảnh này làm ví dụ:
(nguồn: meetthegimp.org )
Công nhân xây dựng màu xanh lam là một khu vực quan tâm và có thể được sử dụng làm đối tượng tìm kiếm. Có thể có một số cách bạn có thể trích xuất các thuộc tính / dữ liệu từ vùng quan tâm này và sử dụng chúng để tìm kiếm tập dữ liệu của bạn.
Nếu bạn có nhiều hơn 2 vùng quan tâm, bạn có thể đo khoảng cách giữa chúng. Lấy ví dụ đơn giản này:
(nguồn: per2000.eu )
Chúng tôi có 3 khu vực quan tâm rõ ràng. Khoảng cách giữa vùng 1 và 2 có thể là 200 pixel, giữa 1 và 3 400 pixel và 2 và 3 200 pixel.
Tìm kiếm các hình ảnh khác cho các khu vực quan tâm tương tự, bình thường hóa các giá trị khoảng cách và xem bạn có phù hợp với tiềm năng không. Kỹ thuật này có thể hoạt động tốt cho hình ảnh xoay và tỷ lệ. Bạn càng có nhiều vùng quan tâm, xác suất của trận đấu sẽ tăng lên khi mỗi phép đo khoảng cách khớp.
Điều quan trọng là phải suy nghĩ về bối cảnh của tập dữ liệu của bạn. Ví dụ: nếu tập dữ liệu của bạn là nghệ thuật hiện đại, thì các vùng quan tâm sẽ hoạt động khá tốt, vì các vùng quan tâm có thể là được thiết kế để trở thành một phần cơ bản của hình ảnh cuối cùng. Tuy nhiên, nếu bạn đang xử lý hình ảnh của các trang web xây dựng, các khu vực quan tâm có thể được người sao chép bất hợp pháp hiểu là xấu xí và có thể bị cắt / chỉnh sửa một cách tự do. Hãy ghi nhớ các tính năng phổ biến của bộ dữ liệu của bạn và cố gắng khai thác kiến thức đó.
Biến hình
Biến đổi hai hình ảnh là quá trình biến một hình ảnh thành hình ảnh khác thông qua một bộ các bước:
Lưu ý, điều này khác với việc làm mờ hình ảnh này sang hình ảnh khác!
Có rất nhiều gói phần mềm có thể biến đổi hình ảnh. Đó là truyền thống được sử dụng như một hiệu ứng chuyển tiếp, hai hình ảnh không biến thành một thứ gì đó nửa chừng, một hình thái cực đoan đến cực đoan khác là kết quả cuối cùng.
Tại sao điều này có thể hữu ích? Phụ thuộc vào thuật toán biến hình bạn sử dụng, có thể có mối quan hệ giữa độ tương tự của hình ảnh và một số tham số của thuật toán biến hình.
Trong một ví dụ đơn giản hơn nhiều, một thuật toán có thể thực thi nhanh hơn khi có ít thay đổi được thực hiện. Sau đó chúng ta biết có xác suất cao hơn rằng hai hình ảnh này chia sẻ thuộc tính với nhau.
Kỹ thuật này có thể hoạt động tốt đối với các hình ảnh được sao chép, bị bóp méo, bị lệch, thu phóng, tất cả các loại hình ảnh được sao chép. Một lần nữa, đây chỉ là một ý tưởng mà tôi đã có, nó không dựa trên bất kỳ học viện nào được nghiên cứu theo như tôi biết (mặc dù tôi không nhìn chăm chỉ), vì vậy nó có thể là rất nhiều công việc cho bạn với kết quả hạn chế / không có.
Nén
Câu trả lời của Ow trong câu hỏi này là tuyệt vời, tôi nhớ đã đọc về những loại kỹ thuật nghiên cứu AI. Nó khá hiệu quả trong việc so sánh các từ vựng của corpus.
Một tối ưu hóa thú vị khi so sánh các kho văn bản là bạn có thể loại bỏ các từ được coi là quá phổ biến, ví dụ 'The', 'A', 'và' v.v. Những từ này làm loãng kết quả của chúng tôi, chúng tôi muốn tìm ra sự khác biệt của hai tập thể vì vậy những cái này có thể được gỡ bỏ trước khi xử lý. Có lẽ có những tín hiệu phổ biến tương tự trong hình ảnh có thể bị tước trước khi nén? Nó có thể đáng để xem xét.
Tỷ lệ nén là một cách rất nhanh và hợp lý để xác định mức độ giống nhau của hai bộ dữ liệu. Đọc về cách nén hoạt động sẽ cho bạn một ý tưởng tốt tại sao điều này có thể hiệu quả như vậy. Đối với một thuật toán nhanh để phát hành, đây có lẽ sẽ là một điểm khởi đầu tốt.
Minh bạch
Một lần nữa tôi không chắc làm thế nào dữ liệu trong suốt được lưu trữ cho một số loại hình ảnh nhất định, gif png, v.v., nhưng điều này sẽ có thể trích xuất được và sẽ đóng vai trò là một cách đơn giản hóa hiệu quả để so sánh với độ trong suốt của bộ dữ liệu của bạn.
Tín hiệu đảo ngược
Một hình ảnh chỉ là một tín hiệu. Nếu bạn phát ra tiếng ồn từ loa và bạn phát tiếng ồn ngược lại ở loa khác đồng bộ hoàn hảo ở cùng một âm lượng chính xác, chúng sẽ triệt tiêu lẫn nhau.
(nguồn: themotorreport.com )
Đảo ngược hình ảnh và thêm nó vào hình ảnh khác của bạn. Chia tỷ lệ vị trí của nó / vòng lặp lặp đi lặp lại cho đến khi bạn tìm thấy hình ảnh thu được trong đó đủ các pixel có màu trắng (hoặc đen? Tôi sẽ gọi nó là một khung vẽ trung tính) để cung cấp cho bạn một kết quả trùng khớp hoặc khớp một phần.
Tuy nhiên, hãy xem xét hai hình ảnh bằng nhau, ngoại trừ một trong số chúng có hiệu ứng làm sáng được áp dụng cho nó:
(nguồn: mcburrz.com )
Đảo ngược một trong số chúng, sau đó thêm nó vào cái khác sẽ không dẫn đến một bức tranh trung tính, đó là những gì chúng tôi đang hướng tới. Tuy nhiên, khi so sánh các pixel từ cả hai ảnh gốc, chúng ta có thể thấy rõ mối quan hệ rõ ràng giữa hai ảnh.
Tôi đã nghiên cứu màu sắc trong một số năm nay và không chắc là phổ màu có ở thang đo tuyến tính hay không, nhưng nếu bạn xác định hệ số trung bình của sự khác biệt màu sắc giữa cả hai hình ảnh, bạn có thể sử dụng giá trị này để chuẩn hóa dữ liệu trước khi xử lý kỹ thuật này.
Cấu trúc dữ liệu cây
Lúc đầu, những thứ này dường như không phù hợp với vấn đề, nhưng tôi nghĩ chúng có thể hoạt động.
Bạn có thể suy nghĩ về việc trích xuất một số thuộc tính nhất định của hình ảnh (ví dụ thùng màu) và tạo cây huffman hoặc cấu trúc dữ liệu tương tự. Bạn có thể so sánh hai cây cho giống nhau. Điều này sẽ không hoạt động tốt đối với dữ liệu ảnh, ví dụ với phổ màu lớn, nhưng phim hoạt hình hoặc các hình ảnh giảm màu khác có thể hoạt động.
Điều này có thể sẽ không hoạt động, nhưng đó là một ý tưởng. Cơ sở hạ tầng trie là tuyệt vời trong việc lưu trữ từ vựng, ví dụ như một từ điển. Đó là một cây tiền tố. Có lẽ có thể xây dựng một hình ảnh tương đương với một từ vựng, (một lần nữa tôi chỉ có thể nghĩ về màu sắc) để xây dựng một bộ ba. Nếu bạn giảm hình ảnh 300x300 thành hình vuông 5x5, sau đó phân tách mỗi hình vuông 5x5 thành một chuỗi màu bạn có thể tạo ra một trie từ dữ liệu kết quả. Nếu hình vuông 2x2 chứa:
FFFFFF|000000|FDFD44|FFFFFF
Chúng tôi có một mã trie khá độc đáo, mở rộng 24 cấp độ, tăng / giảm cấp độ (IE giảm / tăng kích thước của hình vuông phụ của chúng tôi) có thể mang lại kết quả chính xác hơn.
So sánh cây trie nên dễ dàng hợp lý, và có thể cung cấp kết quả hiệu quả.
Thêm ý tưởng
Tôi tình cờ phát hiện ra một bài báo thú vị về phân loại hình ảnh vệ tinh , nó phác thảo:
Các biện pháp kết cấu được xem xét là: ma trận cooccurrence, sự khác biệt ở mức độ xám, phân tích tông màu kết cấu, các tính năng có nguồn gốc từ phổ Fourier và bộ lọc Gabor. Một số tính năng Fourier và một số bộ lọc Gabor được tìm thấy là lựa chọn tốt, đặc biệt khi một dải tần số duy nhất được sử dụng để phân loại.
Có thể đáng để nghiên cứu các phép đo đó chi tiết hơn, mặc dù một số trong số chúng có thể không liên quan đến tập dữ liệu của bạn.
Những thứ khác để xem xét
Có lẽ có rất nhiều bài viết về loại điều này, vì vậy đọc một số trong số chúng sẽ giúp mặc dù chúng có thể rất kỹ thuật. Đó là một lĩnh vực cực kỳ khó khăn trong điện toán, với nhiều giờ làm việc không có kết quả của nhiều người cố gắng làm những việc tương tự. Giữ cho nó đơn giản và xây dựng theo những ý tưởng đó sẽ là cách tốt nhất để đi. Đây là một thử thách khá khó khăn để tạo ra một thuật toán có tỷ lệ so khớp ngẫu nhiên tốt hơn và để bắt đầu cải thiện điều đó thực sự bắt đầu khá khó khăn để đạt được.
Mỗi phương pháp có thể cần phải được kiểm tra và tinh chỉnh kỹ lưỡng, nếu bạn có bất kỳ thông tin nào về loại hình ảnh bạn sẽ kiểm tra, điều này sẽ hữu ích. Ví dụ: quảng cáo, nhiều người trong số họ sẽ có văn bản trong đó, do đó, nhận dạng văn bản sẽ là một cách dễ dàng và có lẽ rất đáng tin cậy để tìm kết quả khớp, đặc biệt khi kết hợp với các giải pháp khác. Như đã đề cập trước đó, hãy cố gắng khai thác các thuộc tính chung của tập dữ liệu của bạn.
Kết hợp các phép đo và kỹ thuật thay thế mà mỗi kỹ thuật có thể có phiếu bầu có trọng số (phụ thuộc vào hiệu quả của chúng) sẽ là một cách bạn có thể tạo ra một hệ thống tạo ra kết quả chính xác hơn.
Nếu sử dụng nhiều thuật toán, như đã đề cập ở phần đầu của câu trả lời này, người ta có thể tìm thấy tất cả các giá trị dương nhưng có tỷ lệ dương tính giả là 20%, sẽ rất đáng để nghiên cứu các tính chất / điểm mạnh / điểm yếu của các thuật toán khác vì thuật toán khác có thể có hiệu quả trong việc loại bỏ các dương tính giả được trả lại từ người khác.
Hãy cẩn thận để không rơi vào nỗ lực để hoàn thành dự án không bao giờ kết thúc, chúc may mắn!