Tôi đang cố gắng chụp ảnh nguồn và tạo lại hình ảnh đó trên khung trong suốt chỉ sử dụng hình vuông có màu đơn sắc chồng lên nhau. Mục tiêu là sử dụng càng ít ô vuông càng tốt.Tạo lại hình ảnh chỉ sử dụng hình vuông chồng chéo
Nói cách khác, tôi lấy một hình ảnh trong suốt trống và vẽ các hình vuông có nhiều màu khác nhau cho đến khi tôi tạo lại hình ảnh nguồn, với mục tiêu là sử dụng ít ô vuông nhất có thể.
Ví dụ:
Đây là một hình ảnh nguồn. Nó có hai màu: đỏ và xanh lục. Tôi chỉ muốn sử dụng các ô vuông , có thể chồng lên nhau, để tạo lại hình ảnh nguồn.
Giải pháp lý tưởng sẽ là một hình vuông màu đỏ lớn, và sau đó là hai hình vuông màu xanh được vẽ trên đầu - đó là những gì tôi muốn thuật toán của tôi tìm thấy, với bất kỳ hình ảnh nguồn nào - vị trí, kích thước, màu sắc và thứ tự của mỗi ô vuông.
hình ảnh mục tiêu của tôi rằng tôi có ý định để xử lý là thế này:
(8x mở rộng)
Nó có 1411 pixel không trong suốt (trường hợp xấu nhất), và với một giải pháp bạo lực không sử dụng hình vuông chồng chéo, tôi đã tạo lại hình ảnh bằng cách sử dụng 1246 ô vuông.
giải pháp hiện tại của tôi là một phương pháp brute force dọc theo dòng:
- Tạo một danh sách tất cả các màu sắc được sử dụng trong hình ảnh nguồn. Mỗi mục là một "lớp". Một lớp có một màu và một mảng 2D đại diện cho các điểm ảnh. Thứ tự quan trọng, nhưng tôi không biết thứ tự các lớp cần là gì, nên ban đầu nó tùy ý.
- Đối với mỗi lớp trong danh sách, khởi tạo mảng 2D. Mỗi phần tử tương ứng với một pixel trong hình ảnh nguồn. Các pixel có cùng màu với màu được chọn của lớp được đánh dấu là '1'. Các điểm ảnh nằm trong một lớp Ở trên lớp hiện tại được đánh dấu là "không quan tâm". Tất cả các pixel khác được đánh dấu là '0'.
- Sử dụng một số thuật toán để xử lý từng lớp, sử dụng số lượng hình vuông nhỏ nhất để tiếp cận mọi pixel được đánh dấu '1', mà không chạm vào bất kỳ pixel nào được đánh dấu '0'.
- Sắp xếp thứ tự các lớp và quay lại Bước 2. Thực hiện việc này cho mọi kết hợp có thể có của các lớp, sau đó kiểm tra xem thứ tự nào sử dụng số lượng ô vuông tối thiểu trong tổng số.
Ai đó có lẽ là giải thích tốt hơn trong phản hồi; nhưng kiểm tra lực lượng vũ phu mỗi hoán vị là không khả thi, bởi vì hình ảnh mục tiêu của tôi có 31 màu (kết quả là 31 hoán vị).
Đối với lý do tại sao tôi làm điều này? Tôi đang cố gắng tạo ra một hình ảnh trong một trò chơi (Starbound), nơi tôi chỉ có thể sử dụng hình vuông. Giải pháp lười biếng là sử dụng một hình vuông cho mỗi pixel, nhưng đó chỉ là quá nhiều ô vuông.
Bạn có thể nhận được một số ý tưởng trong cuộc thảo luận về ["SMPAINT"] (http://discuss.codechef.com/questions/33892/smpaint-editorial) thách thức trên CodeChef. –
Xin lỗi, hình ảnh mẫu tôi đã cung cấp không phải là hình ảnh tốt. Tôi đã cập nhật OP với một số hình ảnh tốt hơn. Để làm rõ, đó là một hình vuông màu đỏ với hai hình vuông màu xanh lá cây trên nền trong suốt. – Narks
Đây là một hình ảnh tương đối phức tạp và tôi nghi ngờ nó sẽ "nén" rất tốt, bởi vì mọi góc sẽ yêu cầu hình vuông riêng của nó, bất kể bạn làm gì. –