2012-04-24 2 views
10

मुझे एक अच्छी समस्या है। मैं इस तुर्की के द्रव्यमान का बिल्कुल 50% हाइलाइट करने की कोशिश कर रहा हूं। व्यवहार में यह 50% नहीं होगा, लेकिन अगर मुझे 50% मिल सकता है, तो मैं बाकी को समझ सकता हूं।थैंक्सगिविंग तुर्की के आधे हिस्से को कैसे बनाया जाए?

मेरा वर्तमान विचार यह है: टर्की के द्रव्यमान को पिक्सेल में खोजने के लिए प्रत्येक पिक्सेल में स्कैन करें। फिर, जब मैं तुर्की का 50% चाहता हूं, तब तक बाएं से दाएं पिक्सेल को हाइलाइट करें जब तक कि मैंने 50% पिक्सल को हाइलाइट नहीं किया हो।

क्या किसी के पास कोई बेहतर विचार है? यह सबसे धीमा, क्रूर-बल विचार है जिसके लिए पिक्सेल गिनने के लिए प्रत्येक पिक्सेल पर लूपिंग की आवश्यकता होती है और फिर उनमें से 50% को हाइलाइट करने के लिए।

ध्यान दें कि तस्वीर को लंबवत रूप से विभाजित करने से तुर्की का 50% नहीं निकलता है, क्योंकि टर्की का शरीर इसकी गर्दन की तुलना में बहुत अधिक मांसपेशियों में होता है।

This is a Turkey

+1

जो भी इसे बंद करने के लिए मतदान किया .. यह एक गंभीर समस्या है। मैं एक इन्फोग्राफिक बनाने की कोशिश कर रहा हूं जो कुछ प्रतिशतों के आधार पर एक तुर्की रंगता है। – DanRedux

+2

@DanRedux: लेकिन वर्तमान स्थिति में, यह एक प्रोग्रामिंग समस्या नहीं है। आप केवल विधियों के बारे में पूछ रहे हैं; * कैसे * आप यह करने के बारे में जाना होगा। यह प्रोग्रामर के लिए अधिक विषय पर है। – animuson

+0

क्या आप वाकई कुछ रैखिक माप के 50% के बजाय 50% पिक्सेल को हाइलाइट करना चाहते हैं? मुझे नहीं लगता कि जटिल आकारों को देखकर लोग मात्रा या क्षेत्र का न्याय करने में अच्छे हैं। –

उत्तर

3

आप कहते हैं कि प्रतिशत में बदलाव होगा, लेकिन मैं यहाँ एक अंग पर जाने के लिए और टर्की में ही नहीं होगा ग्रहण करने के लिए जा रहा हूँ।

तो आपको दो बार लूप करने की आवश्यकता नहीं है। आपको केवल एक बार ऐसा करने की आवश्यकता है, डेटा को उस संरचना के रूप में मानचित्रित करें जिसे आप संदर्भित कर सकते हैं, फिर प्रत्येक बार जब आपको यह जानने के लिए हाइलाइट करने की आवश्यकता होती है कि आपको कितनी दूर जाने की आवश्यकता है।

उदाहरण के लिए, <percentage of mass (integer out of a hundred) => vertical column number (int)>

इस तरह के एक साहचर्य सरणी, जब आप छाया एक्स प्रतिशत करने की जरूरत है, आप केवल पाश को cached_data से अधिक [percent_to_highlight] पिक्सल के कॉलम, उन सब को छायांकन की जरूरत है, और फिर बाहर तोड़ कर एक बार जब आप इसे प्राप्त करते हैं तो लूप का पूरी तरह से।


और भी प्रदर्शन के लिए, दो चित्र हैं - एक पूरी तरह से छायांकित प्लस आपके सामान्य एक। साहचर्य सरणी percentage => byte_offset

प्रत्येक छवि उत्पन्न करने के लिए, बस memcpy या एक तेजी से की जो कुछ भी PHP के बराबर इच्छा के लिए नक्शा चाहिए, गैर छायांकित से अधिक छायांकित तस्वीर के 0 -> byte_offset से कॉपी और बचाने के बीच था। और अधिक लूपिंग नहीं। आप इससे तेज नहीं हो सकते हैं।

+0

असल में, यह वही है जो मैं पहले से कर रहा हूं ..मुझे निर्दिष्ट होना चाहिए था, लेकिन हाँ, अगर मैं अपनी विधि कर रहा था, तो मैं इसे पिक्सेल की धारा में परिवर्तित कर दूंगा और उनमें से एक निश्चित प्रतिशत स्ट्रीम करेगा। – DanRedux

+0

यदि आप वही कर रहे हैं जो मैंने पोस्ट किया है ... आप ओ (एन/एक्स) से बेहतर प्रदर्शन कैसे प्राप्त कर सकते हैं, जहां x छायांकित होने वाली राशि के विपरीत है? –

+0

संभावित रूप से कुछ प्रकार के पेड़/मैट्रिक्स का उपयोग करके मैं हाइलाइट कर सकता हूं ... जैसे, अगर मैं 10% मांगता हूं, तो निश्चित रूप से मैं कुछ शॉर्टकट ले सकता हूं क्योंकि चक्र के 10% पिक्सल के माध्यम से साइकिल चलाने और उन्हें चित्रित करने के विपरीत .. मैं मैं किसी भी अन्य प्रारूप के बारे में सोच रहा हूं जो इसे ओ (एन/एक्स) से कम कर देगा .. – DanRedux

0

समस्या यह करने के लिए मेरे सिर के शीर्ष पर एक स्मार्ट एल्गोरिदम नहीं दिखता है। लेकिन फिर मैं सीजी में भी एक विशेषज्ञ नहीं हूं इसलिए मैं उस पर गलत हो सकता हूं।

और ऐसे समाधान की तलाश करने की कोशिश करने से समय जटिलता बढ़ सकती है (ओ (एन) से) यदि आप एन पर नेस्टेड लूप का उपयोग करते हैं, जहां एन टर्की द्वारा उपयोग किए जाने वाले पिक्सल की कुल संख्या है।

इसके बजाय दो पास करने के तरीके को लागू करना बहुत आसान है (लागू करने के लिए बहुत कम समय/प्रयास) और ओ (एन) निरंतर 2 की उपेक्षा कर रहा है जो खराब समाधान नहीं है। किस उद्देश्य, हार्डवेयर, अंतरिक्ष बाधा, आदि के आधार पर आप इस समाधान को लिख रहे हैं; दो पास रास्ता जा रहा है और अधिक फायदेमंद हो सकता है।