tôi đã có một cái nhìn nhanh chóng trong PHP ImageMagick và GD và không phải đã được xây dựng theo cách làm đó. Một cách tiếp cận có thể là sử dụng ImageMagick để chia hình ảnh lớn hơn thành hình nhỏ hơn (cùng kích thước với hình nhỏ hơn) và bắt đầu so sánh chúng với hình nhỏ hơn.
Tuy nhiên điều này sẽ rất chậm tôi cho là vậy.
Bạn có thể làm điều đó bằng tính năng tưởng tượng nếu bạn sử dụng lệnh gọi hệ thống trong mã PHP của mình. Tôi không biết nếu bạn muốn thử này ra nhưng đây là cách nó có thể được thực hiện:
<?php
//set a bigger time out limit because comparison takes a while
set_time_limit (275) ;
//the bigger image
$bigimage = "big.bmp";
//the smaller image
$smallimage = "small.bmp";
//result image
$resimg = "/tmp/similarity";
//system call
$output = shell_exec("(compare -metric AE -subimage-search ".$bigimage." ".$smallimage." ".$resimg." > /dev/null) 3>&1 1>&2 2>&3");
//result is something like "0 @ 251,263"
$res = explode("@",$output);
if($res[0]==0)
{
echo "Perfect match<br/>";
$res = explode(",",$res[1]);
echo "width: ".$res[0];
echo "<br/>";
echo "height: ".$res[1];
} else {
echo "Not match";
}
?>
Tôi đã thử nghiệm các mã trên trong một hộp linux với XAMPP 1.7.3a cho Linux và ImageMagick 6.7. 1-0 2011-07-10 Q16.
Giới thiệu về so sánh Tôi sử dụng chỉ số AE (Lỗi tuyệt đối) để tính số pixel khác nhau. Kết quả được in ra dòng lỗi (STERR). Tìm hiểu thêm về tìm kiếm subimage của imagemagick bạn có thể tìm thấy here.
Chúc may mắn :)
Nguồn
2011-07-21 02:41:07
Bạn đang tìm kiếm bất kỳ cách tiếp cận nào (tức là: sức mạnh vũ phu) hoặc bạn đang tìm cách tiếp cận thuật toán thông minh hơn? – MoarCodePlz
Bạn muốn tìm hình ảnh nhỏ hơn cụ thể (mà bạn có dữ liệu bitmap) hoặc chỉ bất kỳ hình ảnh chung nào? Kích thước hình ảnh nhỏ có được biết hay không? – lxa
Về cơ bản tôi đang tìm cách tiếp cận thuật toán thông minh hơn, nếu điều này có thể trong PHP với so sánh hình ảnh ... Tôi biết mọi thứ, bao gồm kích thước hình ảnh, của hình ảnh nhỏ hơn. –