इस चुनौती में आप एक छवि पूर्वावलोकन संपीड़न एल्गोरिदम बना रहे होंगे। यह लक्ष्य है कि एक मनमाना छवि फ़ाइल को 4 KiB पूर्वावलोकन छवि में कम किया जाए, जिसका उपयोग बहुत कम बैंडविड्थ के साथ छवियों को जल्दी से पहचानने के लिए किया जा सकता है।
आपको दो प्रोग्राम (या एक संयुक्त प्रोग्राम) लिखना होगा: एक कंप्रेसर और एक डिकम्प्रेसर। दोनों को इनपुट के रूप में एक फ़ाइल या स्टड लेना चाहिए, और फ़ाइल या स्टडआउट में आउटपुट करना चाहिए। कंप्रेसर को एक छवि को पसंद की मुख्यधारा दोषरहित छवि प्रारूप (जैसे पीएनजी, बीएमपी, पीपीएम) में स्वीकार करना चाहिए, और अधिकतम 4096 बाइट्स की एक फ़ाइल का उत्पादन करना चाहिए । डीकंप्रेसर को कंप्रेसर द्वारा उत्पन्न किसी भी फ़ाइल को स्वीकार करना चाहिए, और इनपुट के जितना संभव हो सके एक छवि को आउटपुट करना चाहिए। ध्यान दें कि एनकोडर / डिकोडर के लिए कोई स्रोत कोड आकार सीमा नहीं है, इसलिए आप अपने एल्गोरिथ्म में रचनात्मक हो सकते हैं।
प्रतिबंध:
बेईमानी नहीं'। हो सकता है कि आपके प्रोग्राम छिपे हुए इनपुट्स, इंटरनेट पर डेटा को स्टोर करने आदि का उपयोग न करें। आपको केवल स्कोरिंग छवियों के सेट से संबंधित सुविधाओं / डेटा को शामिल करने से भी मना किया गया है।
पुस्तकालयों / उपकरण / बनाया-इन के लिए आप कर रहे हैं उपयोग करने की अनुमति सामान्य छवि प्रसंस्करण संचालन (स्केलिंग, धुंधला, रंग स्थान परिवर्तन, आदि), लेकिन नहीं चित्र डिकोडिंग / एन्कोडिंग / संपीड़न (कंप्रेसर इनपुट और decompressor उत्पादन को छोड़कर) आपरेशनों। सामान्य संपीड़न / विघटन भी अस्वीकृत है । यह इरादा है कि आप इस चुनौती के लिए अपने स्वयं के संपीड़न को लागू करें।
डिकम्प्रेसर द्वारा छवि आउटपुट के आयामों को कंप्रेसर को दिए गए मूल फ़ाइल से बिल्कुल मेल खाना चाहिए। आप मान सकते हैं कि छवि आयाम किसी भी दिशा में 2 16 से अधिक नहीं है ।
आपके कंप्रेसर को औसत उपभोक्ता पीसी पर 5 मिनट से कम समय में चलना चाहिए, और डिकम्प्रेसर को नीचे दिए गए सेट में किसी भी छवि के लिए 10 सेकंड से कम में चलना चाहिए।
स्कोरिंग
त्वरित सत्यापन और दृश्य तुलना में मदद करने के लिए, अपने उत्तर का उपयोग करके संपीड़न के बाद परीक्षण कॉर्पस की दोषरहित छवि एल्बम को शामिल करें।
आपके कंप्रेशर को छवियों के निम्नलिखित कॉर्पस का उपयोग करके परीक्षण किया जाएगा :
आप यहाँ सभी चित्रों को एक ज़िप फ़ाइल में डाउनलोड कर सकते हैं ।
आपका स्कोर सभी छवियों पर आपके कंप्रेसर के लिए औसत संरचनात्मक समानता सूचकांक होगा । हम dssim
इस चुनौती के लिए खुले स्रोत का उपयोग करेंगे । यह आसानी से स्रोत से बनाया गया है, या यदि आप उबंटू पर हैं तो इसमें एक पीपीए भी है। यह पसंद किया जाता है यदि आप अपना स्वयं का उत्तर देते हैं, लेकिन यदि आप नहीं जानते कि सी अनुप्रयोगों का निर्माण कैसे करें और आप डेबियन / उबंटू नहीं चलाते हैं, तो आप किसी और को आपके लिए स्कोर दे सकते हैं। dssim
PNG में इनपुट / आउटपुट की अपेक्षा करता है, इसलिए यदि आप किसी भिन्न प्रारूप में आउटपुट करते हैं तो अपने आउटपुट को पहले PNG में परिवर्तित करें।
दर्द रहित बनाने के लिए, यहाँ एक त्वरित सहायक पायथन लिपि है, उपयोग python score.py corpus_dir compressed_dir
:
import glob, sys, os, subprocess
scores = []
for img in sorted(os.listdir(sys.argv[1])):
ref, preview = (os.path.join(sys.argv[i], img) for i in (1, 2))
sys.stdout.write("Comparing {} to {}... ".format(ref, preview))
out = subprocess.check_output(["dssim", ref, preview]).decode("utf-8").split()[0]
print(out)
scores.append(float(out))
print("Average score: {:.6f}".format(sum(scores) / len(scores)))
सबसे कम स्कोर जीतता है।
You may assume that the image dimensions do not exceed 2^32 in either direction.
क्या यह बहुत अधिक नहीं है? इसका मतलब है कि मुझे (x, y) निर्देशांक की एक जोड़ी को स्टोर करने के लिए 16 बाइट्स का उपयोग करना होगा। कुछ छवि फ़ाइलों में किसी भी दिशा में 2 ^ 16 (65536) पिक्सेल से अधिक के आयाम हैं, और कॉर्पस में सभी छवियों के लिए 2 ^ 11 पर्याप्त है।
2^16
।