2012-04-24 29 views
10

Tôi gặp vấn đề. Tôi đang cố gắng làm nổi bật chính xác 50% khối lượng gà tây này. Trong thực tế nó sẽ không được 50%, nhưng nếu tôi có thể nhận được 50%, tôi có thể tìm ra phần còn lại.Làm thế nào để khắc một nửa của một Thổ Nhĩ Kỳ tạ ơn?

ý tưởng hiện tại của tôi là thế này: Quét trong mỗi điểm ảnh để tìm ra khối lượng của gà tây, tính theo pixel. Sau đó, khi tôi muốn 50% số gà tây, hãy đánh dấu các pixel từ trái sang phải cho đến khi tôi đánh dấu 50% pixel.

Có ai có bất kỳ ý tưởng tốt hơn? Đây là ý tưởng chậm nhất, mạnh mẽ, yêu cầu lặp trên mỗi pixel một lần để đếm các điểm ảnh và một lần nữa để làm nổi bật 50% trong số chúng.

Lưu ý rằng cách chia hình ảnh theo chiều dọc sẽ không để lại 50% số gà tây, như cơ thể của gà tây là meatier rất nhiều so với cổ của nó.

This is a Turkey

+1

Bất cứ ai đã bỏ phiếu để đóng này .. Đây là một vấn đề nghiêm trọng. Tôi đang cố gắng tạo ra một họa thông tin có màu gà tây dựa trên một số tỷ lệ phần trăm. – DanRedux

+2

@DanRedux: Nhưng ở trạng thái hiện tại, nó không phải là vấn đề lập trình. Bạn chỉ hỏi về phương pháp; * Làm thế nào * bạn sẽ đi về việc này. Đó là nhiều chủ đề cho lập trình viên. – animuson

+0

Bạn có chắc chắn muốn đánh dấu 50% số pixel thay vì 50% của một số thước đo tuyến tính không? Tôi không nghĩ mọi người giỏi đánh giá khối lượng hoặc diện tích bằng cách nhìn vào những hình dạng phức tạp. –

Trả lời

3

Bạn nói tỷ lệ sẽ thay đổi, nhưng tôi sẽ đi trên một chân tay ở đây và đảm nhận gà tây bản thân sẽ không.

Vì vậy, bạn không cần phải lặp hai lần. Bạn chỉ cần làm điều đó một lần, ánh xạ dữ liệu vào một dạng cấu trúc nào đó mà bạn có thể tham khảo, sau đó chỉ đề cập đến nó mỗi khi bạn cần làm nổi bật để tìm hiểu xem bạn cần đi bao xa.

Ví dụ, làm cho một mảng kết hợp của <percentage of mass (integer out of a hundred) => vertical column number (int)>

Bằng cách đó, khi bạn cần đến bóng râm x phần trăm, bạn chỉ cần lặp trên cached_data [percent_to_highlight] cột của pixel, che tất cả, và sau đó thoát ra khỏi của vòng lặp hoàn toàn khi bạn đạt đến nó.


Để có hiệu suất cao hơn, có hai ảnh - một ảnh hoàn toàn được tô bóng cộng với hình ảnh bình thường của bạn. Mảng kết hợp nên ánh xạ percentage => byte_offset

Đối với mỗi hình ảnh bạn muốn tạo, chỉ cần ghi nhớ hoặc bất kỳ PHP nào tương đương với bản sao được tô bóng nhanh, không bị che khuất và lưu. Không lặp lại nữa. Bạn không thể nhanh hơn điều này.

+0

Thực ra, đây là những gì tôi đã làm ..Tôi nên có quy định, nhưng có, nếu tôi đã làm phương pháp của tôi, tôi sẽ chuyển đổi nó thành một dòng điểm ảnh và họ dòng một tỷ lệ nhất định trong số họ. – DanRedux

+0

Nếu bạn đang làm chính xác những gì tôi đăng ... làm thế nào bạn có thể nhận được bất kỳ hiệu suất tốt hơn O (N/x) trong đó x là nghịch đảo của số tiền bạn cần bóng mờ? –

+0

Có thể bằng cách sử dụng một số loại cây/ma trận điểm ảnh mà tôi có thể đánh dấu ... Giống như, nếu tôi yêu cầu 10%, chắc chắn tôi có thể thực hiện một số phím tắt trái ngược với đạp xe qua 10% pixel và vẽ chúng. suy nghĩ về bất kỳ định dạng nào khác sẽ làm cho nó nhỏ hơn O (n/x) .. – DanRedux

0

Sự cố không nhìn để có thuật toán thông minh trên đỉnh đầu của tôi để thực hiện. Nhưng sau đó tôi không phải là một chuyên gia trong CG vì vậy tôi có thể sai về điều đó. Và cố gắng tìm giải pháp như vậy có thể làm tăng độ phức tạp của thời gian (hơn O (n)) nếu bạn sử dụng vòng lặp lồng nhau trên n, trong đó n là tổng số điểm ảnh được sử dụng bởi gà tây. Thay vì thực hiện hai cách vượt qua là rất dễ thực hiện (rất ít thời gian/công sức để thực hiện) và cũng sẽ là O (n) bỏ qua hằng số 2 mà không phải là một giải pháp tồi. Tùy thuộc vào mục đích, phần cứng, hạn chế về không gian, v.v. bạn đang viết giải pháp này cho; đi theo hai cách có thể là bổ ích hơn.

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