आपका कार्य एक प्रोग्राम लिखना है जो एक इनपुट इमेज लेता है और इसे आउटपुट इमेज बनने के लिए एज-डिटेक्शन के माध्यम से चलाता है।
एज-डिटेक्शन निम्नानुसार काम करता है (यदि अस्पष्ट हो, तो सोबेल एज डिटेक्शन देखें ):
- एक पिक्सेल के लिए मूल्य एक पिक्सेल की कुल चमक है, इसलिए यदि यह रंग में है, तो आपको इसे पहले ग्रेस्केल में बदलने की आवश्यकता होगी (चीजों को सरल और गोल्फ-सक्षम रखने के लिए, आप आर, जी और के लिए औसत मूल्य ले सकते हैं। बी)।
- पिक्सेल x के लिए G x और G y के सूत्र (i, j) हैं:
- G x = -1 * p (i-1, j-1) - 2 * p (i-1, j) - 1 * p (i-1, j + 1) + 1 * p (i + 1, j) -1) + 2 * p (i + 1, j) + 1 * p (i + 1, j + 1)
- G y = -1 * p (i-1, j-1) - 2 * p (i, j-1) - 1 * p (i + 1, j-1) + 1 * p (i-1, j) +1) + 2 * p (i, j + 1) + 1 * p (i + 1, j + 1)
- उस पिक्सेल पर किनारे के आकार का मान तब है: G (G x 2 + G y 2 )
आउटपुट छवि प्रत्येक पिक्सेल के लिए किनारे G (G x 2 + G y 2 ) के आकार के रूप में होती है।
बोनस:
- एज-डिटेक्शन किक से पहले किसी भी छोटे किनारों को हटाने के लिए छवि को सुचारू करने के लिए एक गाऊसी धब्बा का प्रदर्शन करें। यह अंतिम परिणाम पर -30% का बोनस देता है।
- किनारे के कोण को ध्यान में रखें। आप आउटपुट पिक्सेल को कुछ रंग देते हैं, उसी ग्रेस्केल वैल्यू को ले कर और फॉर्मूला arctan (G y / G x ) से प्राप्त कोण का उपयोग करके रंग व्हील से रंग जोड़ते हैं । यह अंतिम परिणाम पर -30% का एक और बोनस देता है।
नियम:
- आप किनारे के लिए मान छोड़ सकते हैं, और उन्हें काले रंग में सेट कर सकते हैं, या आप छवि के बाहर किसी भी पिक्सेल के लिए 0 का उपयोग कर सकते हैं।
- आपकी ouput छवि एक छवि प्रारूप में होनी चाहिए जिसे अधिकांश कंप्यूटरों पर खोला जा सकता है।
- आउटपुट को डिस्क पर लिखा जाना चाहिए या फ़ाइल में पाइप करने योग्य होना चाहिए।
- इनपुट को कमांडलाइन तर्क के रूप में दिया जाता है, छवि के सापेक्ष पथ के रूप में, या कमांडलाइन से पाइप किया जाता है।
- यह कोड गोल्फ है, इसलिए बाइट्स जीत में सबसे छोटा कोड है!