Anh em có ai biết thư viện nào dùng để so sánh tỉ lệ khác nhau giữa 2 ảnh không share mình với. Cần xử lý cả các trường hợp như ảnh khác width/height, khác resolution, revert color, rotate, ...
Tự viết thôi anh, kiểu như mình chạy đoạn lệnh so sánh dài ngắn qui theo cm rồi so ra. ^^ Em nghĩ cái nầy chắc ko có thư viện sẵn đâu
Trường hợp phức tạp thì rất khó, chắc phải tụi chuyên gia (Google/MS...) còn bình thường có cái này https://huddle.github.io/Resemble.js lười up thì click (Use example images) để xem ví dụ
Không ăn thua bro ạ. Dùng hình A kích thước 900x600 rồi resize về kích thước 750x500 và save thành hình B. Đem 2 hình này so sánh nó nói là khác nhau 90%
Em thấy nó ghi khác nhau 90% là đúng rồi mà anh, Chứ anh muốn kết quả ra thế nào mới đúng ý anh??? Giống nhau 100% ạ?
cụ thử làm như này dc ko 1. Resize về chung 1 kích thước 2. chọn random 100 điểm hoặc nhiều hơn trên cả 2 bức ảnh. rồi đem so sánh màu của chúng xem có giống nhau ko. nếu giống thì ảnh giống nhau
Bọn GG, Bing nó làm dc đó thôi. Em up 1 cái image lên là nó show ra image tương tự cho dù có resize, crop, rotate, revert color ... các kiểu. Anh nghĩ là ko khó lắm vì giữa hàng tỉ image nó lưu trữ mà nó so sánh và trả kết quả về nhanh thế chứng tỏ thuật toán cũng đơn giản.
Cái anh đang bảo nó như kiểu là thuật toán rồi. Trước em cũng phải viết 1 cái code bằng c với object c để xoá watermark trên ảnh. Em toàn tự nghĩ ra thuật toán thôi. Như của anh thì thường là cộng trừ giá trị của 2 điểm ảnh cạnh nhau. Bọn google với bing nó search hình ảnh cũng dùng trò này mà
Cách này ko pass dc trường hợp revert color. Anh có tìm hiểu thì thấy có cách là tụi nó dùng thuật toán edge detection trên từng image rồi map các edge ra ma trận 0 1 sau đó tính toán giá trị của 2 ma trận để đo độ khác nhau. Thấy phức tạp quá Nhưng có lẽ cách này dùng cho số lượng lớn ảnh phù hợp vì khi so sánh chỉ cần thông tin ma trận của ảnh (sẽ gọn hơn và việc tính toán nhanh hơn vì chỉ có các số 0 1) Cái anh cần là thư viện chứ ko phải thuật toán. Code cực lắm Nếu có thư viện cho dùng hoặc mua để dùng thì tốt.
Tool/API có sẵn thì mình không biết. Nhưng thư viện hỗ trợ thì nhiều...và phải code. Money đưa ra nhiều tiêu chí so sánh quá, mình nghĩ cứ theo cấp độ khác nhau mà chọn giải pháp khác nhau thôi. Tham khảo: - OpenCV => Google - https://rosettacode.org/wiki/Percentage_difference_between_images
Mình đang xem thằng này, dùng DTC Hash của nó khá chính xác: http:// phash. org/demo/ OpenCV thấy cũng hay mà không thấy có demo trực quan sinh động cho dễ test rosettacode xem phần code C# thấy đoạn dưới này là biết chuối rồi: Code: if (img1.Size != img2.Size) { Console.Error.WriteLine("Images are of different sizes"); return; }
LOL quá chuối, cơ mà tùy tiêu chí đánh giá như thế nào là khác thôi. phash.org kia thì C API, OpenCV cũng làm được mấy cái này.
Kaka chốt lại là dùng Magick.Net nha 500 anh em. Mới code xong cái tool, để ngưỡng xác định 2 images khác nhau là 0.26 (kết quả so sánh <= 0.26 là giống nhau, > 0.26 là khác nhau) Kết quả tạm chấp nhận được chứ không tuyệt đối. Mình không cần phải thông minh như GG nên thấy cũng ổn (AQ tí cho lên tinh thần ) Code đơn giản (dùng C#): Code: MagickImage img1 = new MagickImage(firstImagePath); MagickImage img2 = new MagickImage(secondImagePath); double magickCompare = img1.Compare(img2, ErrorMetric.RootMeanSquared); // có hỗ trợ compare theo perceptual hash như http:// phash. org nhưng thấy RootMeanSquared chính xác hơn MessageBox.Show(String.Format("MagickCompare: difference {0}", magickCompare), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);