Thuật toán để so sánh hai hình ảnh


158

Đưa ra hai tệp hình ảnh khác nhau (ở bất kỳ định dạng nào tôi chọn), tôi cần viết một chương trình để dự đoán cơ hội nếu một là bản sao bất hợp pháp của người khác. Tác giả của bản sao có thể làm những việc như xoay, làm âm bản hoặc thêm các chi tiết tầm thường (cũng như thay đổi kích thước của hình ảnh).

Bạn có biết bất kỳ thuật toán để làm loại công việc này?


12
Làm thế nào để bạn xác định cái nào là bản gốc?
jfs

1
Tôi đoán anh ta có bản gốc và cần xác minh xem một tập tin nước ngoài có phải là bản sao được định dạng hay không liên quan đến bản gốc.
unfa

Câu trả lời:


303

Đâ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ăn bản thay thế

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.

văn bản thay thế

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ụ:

văn bản thay thế
(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:

văn bản thay thế
(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:

văn bản thay thế

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.

văn bản thay thế
(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ó:

văn bản thay thế
(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!


21
Phản ứng tuyệt vời. Kudos cho một câu trả lời suy nghĩ tốt và khai sáng.
Andrew Hubbs

Cảm ơn bạn! Tôi hy vọng sẽ mở rộng trên nó vào ngày mai, tôi có thêm một số ý tưởng tôi muốn nghĩ và tìm kiếm.
Tom Gullen

Xin chào Tom - bạn có biết về bất kỳ thư viện phát hiện cạnh nguồn mở nào, pref trong java không?
Richard H

1
Xin chào Richard, không xin lỗi, nhưng tôi chắc chắn có một số ở ngoài đó. Tìm kiếm trên google cho "Bộ lọc Java Gabor" hoặc "Phát hiện cạnh Java" và tôi chắc chắn bạn sẽ bắt gặp một hoặc hai.
Tom Gullen

Liên kết cho hình ảnh ( blog.meetthegimp.orgwp-content / uploads / 2009/04/97.jpg ) đã bị lỗi. Lưu ý rằng stackoverflow hiện có dịch vụ lưu trữ hình ảnh.
ThomasW

36

Đọc bài báo: Porikli, Fatih, Oncel Tuzel và Peter Meer. Theo dõi hiệp phương sai sử dụng Cập nhật mô hình dựa trên các phương tiện trên Riemannian Manifold. (2006) Tầm nhìn máy tính và nhận dạng mẫu của IEEE.

Tôi đã thành công có thể phát hiện các vùng chồng lấp trong các hình ảnh được chụp từ các webcam liền kề bằng cách sử dụng kỹ thuật được trình bày trong bài viết này. Ma trận hiệp phương sai của tôi bao gồm các đầu ra phát hiện khía cạnh / cạnh Sobel, canny và SUSAN, cũng như các pixel thang độ xám ban đầu.


1
@Satoru Logic: tìm kiếm google hiển thị lượt truy cập trên giấy: google.com/ ,.
Nick

34

Một ý tưởng:

  1. sử dụng các bộ phát hiện keypoint để tìm các mô tả tỷ lệ và biến đổi bất biến của một số điểm trong ảnh (ví dụ: SIFT, SURF, GLOH hoặc LESH).
  2. cố gắng căn chỉnh các điểm chính với các mô tả tương tự từ cả hai hình ảnh (như trong khâu toàn cảnh), cho phép một số biến đổi hình ảnh nếu cần thiết (ví dụ: tỷ lệ & xoay hoặc kéo dài đàn hồi).
  3. nếu nhiều điểm chính căn chỉnh tốt (tồn tại một biến đổi như vậy, thì lỗi căn chỉnh điểm chính đó là thấp; hoặc "năng lượng" biến đổi thấp, v.v.), bạn có thể có hình ảnh tương tự.

Bước 2 không tầm thường. Cụ thể, bạn có thể cần sử dụng một thuật toán thông minh để tìm ra điểm then chốt tương tự nhất trên hình ảnh khác. Các mô tả điểm thường rất cao (như một trăm tham số), và có nhiều điểm để xem qua. cây kd có thể hữu ích ở đây, tra cứu băm không hoạt động tốt.

Các biến thể:

  • Phát hiện các cạnh hoặc các tính năng khác thay vì điểm.

2
Tôi nghĩ đó cũng là cách tiếp cận đúng đắn. Chỉ cần một chi tiết: SIFT, SURF, GLOH không phải là máy dò điểm chính. Chúng là những mô tả quan trọng. Các máy dò keypoint phổ biến là (bất biến tỷ lệ) các máy dò DoG, Harris hoặc Eigenvalue.
Niki

Đối với bước 2, bạn có thể sử dụng hàng xóm gần nhất, sử dụng khoảng cách euclide giữa các mô tả
MobileC Muff

15

Nó thực sự ít đơn giản hơn nhiều so với vẻ ngoài của nó :-) Đề xuất của Nick là một điều tốt.

Để bắt đầu, hãy nhớ rằng bất kỳ phương pháp so sánh đáng giá nào về cơ bản sẽ hoạt động bằng cách chuyển đổi hình ảnh sang một hình thức khác - một hình thức giúp dễ dàng chọn ra các tính năng tương tự. Thông thường, những thứ này không làm cho việc đọc rất nhẹ ...


Một trong những ví dụ đơn giản nhất tôi có thể nghĩ đến chỉ đơn giản là sử dụng không gian màu của mỗi hình ảnh. Nếu hai hình ảnh có phân phối màu rất giống nhau, thì bạn có thể chắc chắn chắc chắn rằng chúng hiển thị cùng một thứ. Ít nhất, bạn có thể có đủ sự chắc chắn để gắn cờ hoặc kiểm tra thêm. So sánh hình ảnh trong không gian màu cũng sẽ chống lại những thứ như xoay, chia tỷ lệ và một số cắt xén. Tất nhiên, nó sẽ không chống lại sự sửa đổi nặng nề của hình ảnh hoặc đổi màu nặng (và thậm chí một sự thay đổi màu sắc đơn giản sẽ hơi khó khăn).

http://en.wikipedia.org/wiki/RGB_color_space
http://upvector.com/index.php?section=tutorials&subection=tutorials/colorspace


Một ví dụ khác liên quan đến một cái gì đó gọi là Hough Transform. Biến đổi này về cơ bản phân hủy một hình ảnh thành một tập hợp các dòng. Sau đó, bạn có thể lấy một số dòng 'mạnh nhất' trong mỗi hình ảnh và xem chúng có xếp hàng không. Bạn có thể thực hiện một số công việc bổ sung để thử và bù cho xoay và chia tỷ lệ - và trong trường hợp này, vì so sánh một vài dòng là công việc tính toán ít hơn so với làm cùng một hình ảnh - nó sẽ không tệ lắm.

http://homepages.inf.ed.ac.uk/amos/hough.html
http://rkb.home.cern.ch/rkb/AN16pp/node122.html
http://en.wikipedia.org/wiki/ Hough_transform


8

Trong các hình thức được mô tả bởi bạn, vấn đề là khó khăn. Bạn có xem xét sao chép, dán một phần của hình ảnh vào một hình ảnh lớn hơn như một bản sao? Vân vân.

Nếu bạn lùi lại một bước, điều này sẽ dễ giải quyết hơn nếu bạn watermark hình ảnh chính. Bạn sẽ cần sử dụng sơ đồ hình chìm mờ để nhúng mã vào hình ảnh. Để lùi một bước, trái ngược với một số cách tiếp cận cấp thấp (phát hiện cạnh v.v.) được đề xuất bởi một số người, một phương pháp thủy ấn là ưu việt hơn bởi:

Nó có khả năng chống lại các cuộc tấn công xử lý tín hiệu ► Tăng cường tín hiệu - làm sắc nét, độ tương phản, vv ► Lọc - trung vị, thông thấp, vượt qua cao, v.v. ► Nhiễu phụ gia - Gaussian, thống nhất, v.v. ► Nén mất dữ liệu - JPEG, MPEG, v.v.

Nó có khả năng chống lại các cuộc tấn công hình học ► Biến đổi affine ► Giảm dữ liệu - cắt, cắt, v.v ... ► Biến dạng cục bộ ngẫu nhiên ► cong vênh

Thực hiện một số nghiên cứu về các thuật toán thủy ấn và bạn sẽ đi đúng hướng để giải quyết vấn đề của mình. (Lưu ý: Bạn có thể điểm chuẩn phương pháp của mình bằng bộ dữ liệu STIR86 . Đây là một tiêu chuẩn được chấp nhận cho loại ứng dụng này.


5

Đây chỉ là một gợi ý, nó có thể không hoạt động và tôi đã sẵn sàng để được gọi về điều này.

Điều này sẽ tạo ra dương tính giả, nhưng hy vọng không phải là phủ định sai.

  1. Thay đổi kích thước cả hai hình ảnh sao cho chúng có cùng kích thước (tôi giả sử rằng tỷ lệ giữa chiều rộng và chiều dài là như nhau trong cả hai hình ảnh).

  2. Nén một bitmap của cả hai hình ảnh bằng thuật toán nén không mất dữ liệu (ví dụ: gzip).

  3. Tìm các cặp tệp có kích thước tệp tương tự nhau. Chẳng hạn, bạn chỉ có thể sắp xếp mọi cặp tệp bạn có bằng cách kích thước tệp tương tự nhau và truy xuất X.

Như tôi đã nói, điều này chắc chắn sẽ tạo ra dương tính giả, nhưng hy vọng không phải là phủ định sai. Bạn có thể thực hiện điều này trong năm phút, trong khi đó, porikil et. al. có lẽ sẽ yêu cầu công việc rộng rãi.


Tôi thích giải pháp này rất nhiều, dễ thực hiện và tôi tin rằng nó sẽ mang lại tỷ lệ nhận dạng ngẫu nhiên tốt hơn
Tom Gullen

Đây là một câu hỏi: Nó có hoạt động nếu bản sao đã được lưu với độ phân giải khác không?
Tiến sĩ belisarius

4

Tôi tin rằng nếu bạn sẵn sàng áp dụng cách tiếp cận cho mọi định hướng có thể và cho các phiên bản tiêu cực, một khởi đầu tốt để nhận dạng hình ảnh (với độ tin cậy tốt) là sử dụng giao diện điện tử: http://en.wikipedia.org/wiki/Eigenface

Một ý tưởng khác là biến đổi cả hai hình ảnh thành các vectơ của các thành phần của chúng. Một cách tốt để làm điều này là tạo một vectơ hoạt động theo kích thước x * y (x là chiều rộng của hình ảnh của bạn và y là chiều cao), với giá trị cho mỗi kích thước áp dụng cho giá trị pixel (x, y). Sau đó chạy một biến thể của Hàng xóm K-Gần nhất với hai loại: khớp và không khớp. Nếu nó đủ gần với hình ảnh gốc, nó sẽ phù hợp với thể loại phù hợp, nếu không thì nó sẽ không.

Hàng xóm gần nhất (KNN) có thể được tìm thấy ở đây, cũng có những lời giải thích tốt khác về nó trên web: http://en.wikipedia.org/wiki/K-gầnest_neighbor_alerskym

Lợi ích của KNN là bạn càng so sánh nhiều biến thể với ảnh gốc, thuật toán càng trở nên chính xác. Nhược điểm là bạn cần một danh mục hình ảnh để đào tạo hệ thống trước.


1
Một ý tưởng tốt nhưng chỉ khi khuôn mặt có mặt trong dữ liệu. Ngoài ra nó xác định người, không phải tình huống. Do đó, một diễn viên chuyên nghiệp có tính năng trong nhiều ấn phẩm sẽ tạo ra rất nhiều thông tin sai lệch.
Tom Gullen

Trừ khi tôi hiểu nhầm ý định sử dụng của bạn
Tom Gullen

Trên thực tế tôi tin rằng thuật toán hoạt động bất kể đối tượng, vì vậy nếu bạn so sánh cây, nó cũng sẽ hữu ích. Nó chỉ được gọi là Eigenfaces vì ​​nó liên quan đến nhận dạng khuôn mặt. Miễn là mục được tìm kiếm sở hữu các tính năng tổng thể tương tự như mục bạn đang so sánh với mục đó vẫn sẽ hoạt động.
Nick Udell

Quá dài để thêm vào nhận xét trước: Ngoài ra: Eigenfaces so sánh toàn bộ hình ảnh, không chỉ khuôn mặt trên màn hình. Các ví dụ trên wikipedia chỉ sử dụng khuôn mặt bị cắt vì ứng dụng truyền thống là nhận dạng khuôn mặt, chỉ có khuôn mặt là hữu ích. Nếu diễn viên của bạn xuất hiện ở các vị trí khác nhau, nó sẽ được gắn cờ là khác nhau.
Nick Udell

1
Tôi nghi ngờ việc áp dụng KNN trực tiếp trên các giá trị pixel thô cũng sẽ giúp ích rất nhiều. Các bản dịch / xoay nhỏ thường dẫn đến sự khác biệt lớn trong các giá trị pixel thô, đặc biệt nếu hình ảnh có độ tương phản sắc nét hoặc đường mỏng. Vì vậy, các phiên bản được chuyển đổi tùy ý của cùng một hình ảnh không thực sự gần nhau trong không gian đó (chúng không rơi vào cụm) và KNN sẽ không hoạt động tốt. Tôi đoán rằng nó có thể hoạt động tốt trên biểu đồ hình ảnh hoặc một số đại diện biến đổi bất biến khác của hình ảnh, mặc dù.
Niki

1

Nếu bạn sẵn sàng xem xét một cách tiếp cận khác hoàn toàn để phát hiện các bản sao bất hợp pháp của hình ảnh của mình, bạn có thể xem xét hình mờ . (từ 1.4)

... chèn thông tin bản quyền vào đối tượng kỹ thuật số mà không làm giảm chất lượng. Bất cứ khi nào bản quyền của một đối tượng kỹ thuật số có vấn đề, thông tin này được trích xuất để xác định chủ sở hữu hợp pháp. Cũng có thể mã hóa danh tính của người mua ban đầu cùng với danh tính của chủ sở hữu bản quyền, cho phép truy tìm bất kỳ bản sao trái phép nào.

Mặc dù đây cũng là một lĩnh vực phức tạp, có những kỹ thuật cho phép thông tin hình mờ tồn tại thông qua thay đổi hình ảnh thô: (từ 1.9)

... Bất kỳ biến đổi tín hiệu nào của cường độ hợp lý đều không thể loại bỏ hình mờ. Do đó, một tên cướp biển sẵn sàng xóa hình mờ sẽ không thành công trừ khi họ gỡ lỗi tài liệu quá nhiều để được lợi ích thương mại.

tất nhiên, faq gọi thực hiện phương pháp này: "... rất thách thức" nhưng nếu bạn thành công với nó, bạn sẽ có độ tin cậy cao về việc hình ảnh có phải là bản sao hay không, thay vì tỷ lệ phần trăm.


Bất kỳ thông tin thêm về làm thế nào watermarking vẫn tồn tại sau khi chỉnh sửa nặng? Âm thanh rất thú vị.
Tom Gullen

0

Nếu bạn đang chạy Linux, tôi sẽ đề xuất hai công cụ:

align_image_stack từ gói hugin-tools - là một chương trình dòng lệnh có thể tự động sửa lỗi xoay, chia tỷ lệ và các biến dạng khác (chủ yếu dành cho việc ghép ảnh HDR, nhưng cũng hoạt động cho khung hình video và các tài liệu khác). Thêm thông tin: http://hugin.sourceforge.net/docs/manual/Align_image_stack.html

so sánh từ gói hình ảnh - một chương trình có thể tìm và đếm số lượng pixel khác nhau trong hai hình ảnh. Đây là một hướng dẫn gọn gàng: http://www.imagemagick.org/Usage/compare/ uising -fuzz N% bạn có thể tăng khả năng chịu lỗi. N càng cao thì khả năng chịu lỗi càng cao để vẫn tính hai pixel là như nhau.

align_image_stack nên sửa bất kỳ phần bù nào để lệnh so sánh thực sự có cơ hội phát hiện các pixel giống nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.