2015-07-28 21 views
5

Tôi đang cố gắng so sánh hình dạng trong php. Tôi có một cơ sở dữ liệu với rất nhiều hình ảnh, trong những hình ảnh đó có một hình dạng (chủ yếu ở giữa hình ảnh). Bây giờ tôi muốn so sánh những hình ảnh đó với một Hình dạng.So sánh hình dạng trong hình ảnh với PHP

Đầu vào là hình dạng (png) có cùng kích thước với hình ảnh trong cơ sở dữ liệu.

tôi đã thực hiện một hàm mang theo màu sắc của hình dạng và biến nó trong màu đen (và nền trắng)

Đầu vào là như thế này: enter image description here

Bản gốc là như thế này: enter image description here

Tôi có thể so sánh mọi pixel trong hình ảnh và theo dõi số lượng pixel đen giống nhau, nhưng điều này sẽ mất rất nhiều CPU và tôi nghĩ rằng nó sẽ không hoạt động mọi lúc.

Tôi cũng có thể sử dụng một ngôn ngữ khác như python, nhưng tôi thực sự đã sửa lỗi này bằng PHP. Có ai có ý tưởng để làm điều này một cách thiết thực?

Người anwser trong câu hỏi "Compare 2 images in php" khác với tôi mong đợi. Tôi cần phải so sánh một phần của một hình ảnh (trong ví dụ nền màu trắng, nhưng nó có thể có một số tiếng ồn ở chế độ nền)

+0

bản sao có thể có của [So sánh 2 hình ảnh trong php] (http://stackoverflow.com/questions/3270929/compare-2-images-in-php) – cmorrissey

+0

Không thực sự @cmorrissey, tôi cần so sánh một phần nhỏ của hình ảnh, 'ImageMagick' lib so sánh toàn bộ .. Trong ví dụ của tôi, tôi cho thấy kết quả tốt nhất, nhưng nó có thể là có một số tiếng ồn trong hình ảnh. –

+0

có một vài câu trả lời ở đó, hãy xem 'libpuzzle' https://github.com/jedisct1/libpuzzle – cmorrissey

Trả lời

2

này có vẻ là doable với trimImage() function trong ImageMagick (-trim cờ trên dòng lệnh). Xem xét bạn đã có thể chuyển đổi hình ảnh thành một nền đen và nền trắng, chức năng này sẽ luôn luôn làm những gì bạn muốn. Tại thời điểm này chỉ cần so sánh hình ảnh như đã nêu trong câu hỏi bạn đã liên kết.

Đây là kết quả của việc sử dụng trim trên dòng lệnh vào hình ảnh với padding:

enter image description here


tôi cho rằng chức năng mà bạn đã thực hiện cũng tương tự như to the algorithm in findimagedupes. Nếu không, bạn nên vay ý tưởng đó.

+0

Hi @anonymous. Cảm ơn câu trả lời. Tôi sẽ viết một bài viết mà tôi cho thấy một số mã và giải thích nó, nhưng ở đây là nó trong một nutshell: Tôi đang sử dụng 'blackThresholdImage()' để làm cho hình ảnh màu đen và trắng. Sau đó, tôi sử dụng chức năng 'hình thái học 'để loại bỏ nhiễu trong hình ảnh. Sau đó tôi 'trim' hình ảnh và chạy thuật toán dupes .. Trong một bài kiểm tra nhanh (cục bộ) nó sẽ kiểm tra 100 hình ảnh trong khoảng +/- 5 giây. –

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