2009-03-27 31 views
14

Tôi đã viết một điều jpeg joiner lossless cơ bản trong java bây giờ nhưng tôi muốn so sánh các tập tin nó tạo ra với các tập tin gốc.Một cách dễ dàng (công cụ?) Để so sánh hình ảnh pixel cho pixel ở các định dạng khác nhau?

Tôi chỉ có thể so sánh rất nhiều trong trình soạn thảo hex, có ai biết một cách dễ dàng, phần mềm hay java (tốt nhất là phần mềm như tôi không cảm thấy như bất kỳ mã hóa nhiều hơn bây giờ!) Mà tôi có thể so sánh hai hình ảnh và sản xuất một "bản đồ khác biệt" về nơi các pixel không giống nhau?

Cảm ơn.

Trả lời

14

Cảm ơn những lời đề nghị.

Tôi đã thử phương pháp GIMP đầu tiên hoạt động tốt trừ khi sự khác biệt giữa các hình ảnh rất nhỏ. Tôi không thể tìm thấy một tùy chọn "tăng cường sự khác biệt" để tạo sự khác biệt rõ ràng và biểu đồ cũng chỉ đưa ra một biểu diễn thô sơ về sự khác biệt.

Cuối cùng tôi đã sử dụng ImageMagick thứ mà tôi đã cài đặt cách đây một thời gian và quên tất cả. Tạo hình ảnh khác biệt/so sánh dễ dàng như nhập:

compare first.jpg second.png difference.gif 

trong dòng lệnh.

Đó là tất cả độc đáo giải thích here.

1

Sử dụng trình chỉnh sửa hình ảnh như Photoshop hoặc GIMP hoặc bất kỳ thứ gì, có nhiều lớp. Tạo một hình ảnh nơi mỗi hình ảnh nguồn trong một lớp riêng biệt.

Tại thời điểm này, bạn có thể so sánh trực quan hình ảnh bằng cách bật và tắt chế độ hiển thị của lớp trên cùng.

Trong hầu hết các trình chỉnh sửa phong nha, bạn cũng có thể đặt lớp trên cùng thành chế độ "khác biệt". Bây giờ mỗi giá trị của pixel hình ảnh là sự khác biệt tuyệt đối của các giá trị pixel trong hình ảnh bên dưới. Bạn có thể sử dụng ví dụ: một công cụ biểu đồ để xem hình ảnh có giống hệt nhau hay không. Nếu chúng giống nhau, thì tất cả các giá trị pixel sẽ chính xác là 0.

1

Đối với những thứ như thế này, tôi yêu bộ công cụ netpbm/pbmplus. Bạn có thể sử dụng djpegpnmtoplainpnm để chuyển đổi từng hình ảnh thành định dạng ASCII đơn giản. Sau đó, bạn chỉ cần đọc cả hai tệp và phát ra một hình ảnh mới cho biết các pixel khác nhau ở đâu. Ví dụ, bạn có thể tính toán khoảng cách Euclide trong không gian RGB giữa các điểm ảnh cũ và mới và phát ra một điểm ảnh trắng cho chênh lệch 0, màu xám nhạt cho một khác biệt nhỏ, tối hơn cho các khác biệt lớn hơn, v.v. Định dạng ASCII rất đơn giản và được ghi chép đầy đủ trên các trang của người đàn ông và tất cả các chương trình trình xem chuẩn đều có thể xem trực tiếp.

4

Bạn có thể làm tồi tệ hơn nhiều so với Perceptual Diff.

+0

Điều này có vẻ rất tốt, nhưng nó có thể nhiều hơn những gì tôi cần làm. Tôi chỉ muốn so sánh hình ảnh pixel theo pixel và thấy sự khác biệt chính xác. Đây là để kiểm tra như thế nào của tôi "lossless" jpeg chỉnh sửa đang làm việc. – joinJpegs

+0

Tôi cần phải làm rõ thêm một chút: bạn * có thể * chỉ định một lá cờ sẽ xuất ra một hình ảnh có chứa sự khác biệt trên mỗi pixel bằng cách sử dụng PDiff. Hạn chế duy nhất là nó ở định dạng lạ (PPM) :) –

+0

Cổng Java của công cụ Nhận thức Khác biệt của Hector Yee có thể tạo ra hình ảnh khác biệt .png: [bitbucket.org/joebowbeer/perceptualdiff](https://bitbucket.org/joebowbeer/perceptualdiff) –

5

TortoiseIDiff là một hình ảnh khác miễn phí xem:

http://tortoisesvn.tigris.org/TortoiseIDiff.html

Nó là một phần của TortoiseSVN, nhưng có thể được sử dụng mà không Subversion.

Tùy thuộc vào dự án của bạn, không phải tất cả các tệp nằm trong phiên bản đều là các tệp văn bản. Nhiều khả năng bạn cũng sẽ có hình ảnh, cho ảnh chụp màn hình ví dụ và sơ đồ cho tài liệu/helpfile.

Đối với những tệp đó, không thể sử dụng công cụ tìm kiếm tệp phổ biến, vì chúng chỉ hoạt động với các tệp văn bản và dòng khác nhau. Đây là trong đó công cụ Rối ảnh hình ảnh Rùa (TortoiseIDiff) đến giải cứu . Nó có thể hiển thị hai hình ảnh song song, hoặc thậm chí hiển thị hình ảnh trên mỗi kết hợp alpha khác.

2

Cách tiếp cận tốt nhất là sử dụng Pix cho cửa sổ (đi kèm với SDK DirectX). Hỗ trợ Bitmap, PNG và Jpeg ... Thưởng thức!

0

Ngoài ra còn có web app called Resemble.js thuận tiện, phân tích và so sánh hình ảnh pixel theo pixel. Các pixel khác nhau trong hình ảnh (nếu có) được đánh dấu bằng màu hồng hoặc màu vàng tùy theo sở thích của bạn.

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