টুইটার চিত্র এনকোডিং চ্যালেঞ্জ [বন্ধ]


597

যদি কোনও ছবির মূল্য ১০০০ শব্দের হয় তবে আপনি কতটা ছবিতে 140 টি অক্ষরে ফিট করতে পারবেন?

দ্রষ্টব্য : এটি লোকেরা! অনুগ্রহের সময়সীমাটি এখানেই রয়েছে এবং কিছু কঠোর আলোচনার পরে, আমি সিদ্ধান্ত নিয়েছি যে বুজুমের প্রবেশ সবে স্যাম হোসেভারকে সবেমাত্র সরিয়ে দিয়েছে । একবার আমি লিখে রাখার সুযোগ পেলে আমি আরও বিস্তারিত নোট পোস্ট করব। অবশ্যই, সবার পক্ষে সমাধান জমা দেওয়া অব্যাহত রাখতে এবং লোকেদের ভোট দেওয়ার জন্য সমাধানগুলি উন্নত করা উচিত। যারা জমা দিয়েছেন এবং প্রবেশ করেছেন তাদের প্রত্যেককে ধন্যবাদ; আমি তাদের সব উপভোগ করেছি। আমার দৌড়াতে এটি অনেক মজাদার হয়েছে এবং আমি আশা করি এটি প্রবেশকারী এবং দর্শকদের উভয়ের জন্যই মজা হয়েছে।

আমি একটি আকর্ষণীয় পোস্টটি জুড়ে একটি টুইটার মন্তব্যে চিত্রগুলি সংকুচিত করার চেষ্টা করেছি এবং সেই থ্রেডের প্রচুর লোকের (এবং রেডডিতে একটি থ্রেড ) আপনি কীভাবে এটি করতে পারেন সে সম্পর্কে পরামর্শ ছিল। সুতরাং, আমি অনুমান করি যে এটি একটি ভাল কোডিং চ্যালেঞ্জ তৈরি করবে; লোকেরা যেখানে তাদের মুখ রয়েছে সেখানে তাদের অর্থ রাখুন এবং এনকোডিং সম্পর্কে তাদের ধারণাগুলি কীভাবে আপনার উপলব্ধ সীমিত জায়গায় আরও বিশদ দিকে নিয়ে যেতে পারে তা দেখান।

আমি আপনাকে চ্যালেঞ্জ জানায় যে 140 টি অক্ষর টুইটার বার্তায় চিত্রগুলি এনকোড করার জন্য এবং সেগুলি আবার একটি চিত্রে ডিকোড করার জন্য একটি সাধারণ উদ্দেশ্যে সিস্টেম নিয়ে আসা। আপনি ইউনিকোড অক্ষর ব্যবহার করতে পারেন, তাই আপনি প্রতি চরিত্রে 8 টিরও বেশি বিট পান। এমনকি ইউনিকোড অক্ষরগুলির জন্য অনুমতি দিলেও, আপনাকে চিত্রগুলি খুব অল্প পরিমাণে সংকুচিত করতে হবে; এটি অবশ্যই একটি ক্ষতিকারক সংকোচনের কারণ হবে এবং সুতরাং প্রতিটি ফলাফল কতটা ভাল দেখায় সে সম্পর্কে বিষয়গত বিচার হতে হবে।

মূল লেখক কাসিমন্ডো তার এনকোডিং থেকে এখানে এসেছেন (চিত্রটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন-অ-বাণিজ্যিক লাইসেন্সের অধীনে লাইসেন্স করা হয়েছে ): মোনালিসা

আপনি আরও ভাল করতে পারেন?

বিধি

  1. আপনার প্রোগ্রামে দুটি মোড থাকতে হবে: এনকোডিং এবং ডিকোডিং
  2. যখন এনকোডিং :
    1. আপনার প্রোগ্রামটি আপনার পছন্দের কোনও যুক্তিসঙ্গত রাস্টার গ্রাফিক ফর্ম্যাটে একটি গ্রাফিককে ইনপুট হিসাবে নিতে হবে । আমরা বলব যে চিত্রম্যাগিক দ্বারা সমর্থিত কোনও রাস্টার ফর্ম্যাট যুক্তিসঙ্গত হিসাবে গণনা করে।
    2. আপনার প্রোগ্রামকে অবশ্যই এমন একটি বার্তা আউটপুট করতে হবে যা 140 বা তার চেয়ে কম ইউনিকোড কোড পয়েন্টে প্রতিনিধিত্ব করা যেতে পারে; সীমার মধ্যে 140 কোড পয়েন্ট U+0000- U+10FFFF, অ-অক্ষর ব্যতীত ( U+FFFE, U+FFFF, U+এনFFFE , U+এনFFFF যেখানে এন হয় 1- 10হেক্সাডেসিমেল এবং পরিসর U+FDD0- U+FDEF) এবং ভাড়াটে কোড পয়েন্ট ( U+D800- U+DFFF)। এটি আপনার পছন্দসই কোনও যুক্তিসঙ্গত এনকোডিংয়ে আউটপুট হতে পারে; জিএনইউiconv দ্বারা সমর্থিত যে কোনও এনকোডিং যুক্তিসঙ্গত হিসাবে বিবেচিত হবে এবং আপনার প্ল্যাটফর্মের নেটিভ এনকোডিং বা লোকেল এনকোডিং সম্ভবত ভাল পছন্দ হবে। আরও তথ্যের জন্য নীচে ইউনিকোড নোট দেখুন ।
  3. যখন ডিকোডিং :
    1. আপনার প্রোগ্রামটি আপনার এনকোডিং মোডের ইনপুট হিসাবে নেওয়া উচিত ।
    2. আপনার প্রোগ্রামকে অবশ্যই আপনার পছন্দসই যেকোন যুক্তিসঙ্গত ফর্ম্যাটে একটি চিত্র আউটপুট দিতে হবে, যেমন উপরে বর্ণিত হয়েছে, যদিও আউটপুট ভেক্টর ফর্ম্যাটগুলির জন্য ঠিক আছে।
    3. চিত্রের আউটপুটটি ইনপুট চিত্রের একটি আনুমানিক হওয়া উচিত; আপনি ইনপুট চিত্রটি যত কাছাকাছি যেতে পারবেন তত ভাল।
    4. ডিকোডিং প্রক্রিয়াটির উপরে উল্লিখিত আউটপুট ব্যতীত এনকোডিং প্রক্রিয়াটির অন্য কোনও আউটপুট অ্যাক্সেস থাকতে পারে; এটি হ'ল, আপনি কোথাও চিত্রটি আপলোড করতে পারবেন না এবং ডিকোডিংয়ের প্রক্রিয়াটি ডাউনলোড করার জন্য ইউআরএল আউটপুট করতে পারবেন না বা এর মতো নির্বোধ কিছু করতে পারেন।
  4. ব্যবহারকারীর ইন্টারফেসে ধারাবাহিকতার জন্য, আপনার প্রোগ্রামটি অবশ্যই নীচে আচরণ করা উচিত:

    1. আপনার প্রোগ্রামটি অবশ্যই এমন একটি স্ক্রিপ্ট হতে হবে যা উপযুক্ত দোভাষী দিয়ে প্ল্যাটফর্মে এক্সিকিউটেবলের জন্য সেট করা যেতে পারে বা এমন একটি প্রোগ্রাম যা এক্সিকিউটেবলের মধ্যে সংকলন করা যায়।
    2. আপনার প্রোগ্রামটি অবশ্যই এটির প্রথম যুক্তি হিসাবে গ্রহণ করবে encodeবা decodeমোডটি সেট করতে হবে।
    3. আপনার প্রোগ্রামটি অবশ্যই নিম্নলিখিত এক বা একাধিক উপায়ে ইনপুট নেবে (যদি আপনি ফাইলের নাম নেয় এমন একটি প্রয়োগ করেন তবে আপনি স্টিডিন থেকে পড়া এবং লিখতে পারেন এবং ফাইলের নাম অনুপস্থিত থাকলে stdout):

      1. স্ট্যান্ডার্ড থেকে ইনপুট নিন এবং স্ট্যান্ডার্ড আউটপুট উত্পাদন করুন।

        my-program encode <input.png >output.txt
        my-program decode <output.txt >output.png
        
      2. দ্বিতীয় যুক্তিতে নামযুক্ত কোনও ফাইল থেকে ইনপুট নিন এবং তৃতীয় নামযুক্ত ফাইলটিতে আউটপুট উত্পাদন করুন।

        my-program encode input.png output.txt
        my-program decode output.txt output.png
        
  5. আপনার সমাধানের জন্য, দয়া করে পোস্ট করুন:
    1. আপনার কোড পূর্ণ, এবং / অথবা এর লিঙ্কটি অন্য কোথাও হোস্ট করা হয়েছে (যদি এটি খুব দীর্ঘ হয়, বা সংকলনের জন্য অনেকগুলি ফাইলের প্রয়োজন হয় বা কিছু)।
    2. এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা, যদি তা কোড থেকে তাত্ক্ষণিকভাবে স্পষ্ট না হয় বা কোডটি দীর্ঘ হয় এবং লোকেরা সংক্ষিপ্তসারে আগ্রহী হবে।
    3. মূল চিত্র সহ একটি উদাহরণ চিত্র, পাঠ্যটি এটি সংকুচিত করে এবং ডিকোডেড চিত্র।
    4. আপনি যদি অন্য কারও ধারণাটি তৈরি করছেন তবে দয়া করে এটিকে বিশিষ্ট করুন। অন্য কারও ধারণার সংশোধন করার চেষ্টা করা ঠিক আছে, তবে আপনাকে অবশ্যই এটিকে গুণিত করতে হবে

নির্দেশিকা

এগুলি মূলত এমন নিয়ম যা ভাঙ্গা, প্রস্তাবনা বা স্কোরিং মানদণ্ড হতে পারে:

  1. নান্দনিকতা গুরুত্বপূর্ণ। আমি বিচার করব এবং এর ভিত্তিতে অন্যান্য লোকদের বিচার করার পরামর্শ দেব:
    1. আউটপুট চিত্রটি দেখতে কতটা দুর্দান্ত এবং মূলটির মতো দেখতে এটি কতটা সুন্দর।
    2. লেখাটি কত সুন্দর লাগছে। আপনার যদি সত্যিই চতুর সংকোচনের স্কিম থাকে তবে সম্পূর্ণরূপে এলোমেলো গাবলডইগুক ঠিক আছে তবে আমি এমন উত্তরগুলিও দেখতে চাই যা চিত্রগুলিকে মুতলি-ভাষাগত কবিতায় পরিণত করে, বা এর মতো কিছু চালাক। নোট করুন যে মূল সমাধানটির লেখক কেবল চীনা অক্ষর ব্যবহার করার সিদ্ধান্ত নিয়েছেন, যেহেতু এটি দেখতে ভাল লাগছিল।
    3. আকর্ষণীয় কোড এবং চতুর অ্যালগরিদম সবসময় ভাল। আমি সংক্ষেপে, এবং স্পষ্ট কোডটি পছন্দ করি তবে যতক্ষণ না তারা ভাল ফলাফল দেয় ততক্ষণ পর্যন্ত চতুর জটিল অ্যালগরিদমগুলি ঠিক আছে।
  2. গতিটিও গুরুত্বপূর্ণ, যদিও আপনার কাজটি ইমেজকে সংকুচিত করে তোলে এমন কোনও কাজ তার পক্ষে গুরুত্বপূর্ণ নয়। আমি বরং এমন একটি প্রোগ্রাম চাই যা সেকেন্ডের দশমাংশে কোনও চিত্রকে রূপান্তর করতে পারে যা কিছু দিন ধরে জিনেটিক অ্যালগরিদমগুলি চলতে থাকবে than
  3. আমি দীর্ঘতরগুলির মধ্যে সংক্ষিপ্ত সমাধানগুলি অগ্রাধিকার দেব, যতক্ষণ না তারা গুণগত মানের তুলনায় উপযুক্ত হয়; সংক্ষিপ্ততা একটি পুণ্য।
  4. আপনার প্রোগ্রামটি এমন একটি ভাষায় প্রয়োগ করা উচিত যা ম্যাক ওএস এক্স, লিনাক্স বা উইন্ডোজে অবাধে উপলভ্য প্রয়োগ রয়েছে। আমি প্রোগ্রামগুলি চালাতে সক্ষম হতে চাই, তবে আপনার যদি একটি দুর্দান্ত সমাধান থাকে যা কেবল ম্যাটল্যাব বা কোনও কিছুর অধীনে চলে তবে তা ঠিক।
  5. আপনার প্রোগ্রামটি যথাসম্ভব সাধারণ হওয়া উচিত; এটি যথাসম্ভব বিভিন্ন চিত্রের জন্য কাজ করা উচিত, যদিও কিছু অন্যের চেয়ে ভাল ফলাফল দিতে পারে। নির্দিষ্টভাবে:
    1. প্রোগ্রামটির সাথে মিলিয়ে কিছু রেফারেন্স তৈরি হয়েছে যা এর সাথে মিলছে এবং একটি রেফারেন্স লিখেছে এবং তারপরে ডিকোডিংয়ের সাথে মিলে যাওয়া চিত্রটি তৈরি করে, বেশ লম্বা এবং কেবল কয়েকটি চিত্রকে আবৃত করবে।
    2. এমন একটি প্রোগ্রাম যা সাধারণ, সমতল, জ্যামিতিক আকারের চিত্রগুলি গ্রহণ করতে পারে এবং কিছু ভেক্টর আদিমকে সেগুলি পচন করতে পারে এটি বেশ নিফটি, তবে এটি যদি কোনও নির্দিষ্ট জটিলতার বাইরে চিত্রগুলিতে ব্যর্থ হয় তবে এটি সম্ভবত অপর্যাপ্ত সাধারণ।
    3. এমন একটি প্রোগ্রাম যা কেবলমাত্র নির্দিষ্ট নির্দিষ্ট দিক অনুপাতের চিত্র নিতে পারে তবে তাদের সাথে একটি ভাল কাজও ঠিক থাকে তবে আদর্শ নয় not
    4. আপনি দেখতে পাচ্ছেন যে একটি কালো এবং সাদা ছবি রঙের চিত্রের চেয়ে ছোট জায়গায় আরও তথ্য পেতে পারে। অন্যদিকে, এটি এতে প্রযোজ্য চিত্রের সীমাবদ্ধ করতে পারে; মুখগুলি কালো এবং সাদা রঙে সূক্ষ্মভাবে বেরিয়ে আসে তবে বিমূর্ত নকশাগুলি এত ভালভাবে নাও পারে।
    5. মোটামুটি ঠিক আছে যদি আউটপুট চিত্রটি ইনপুট থেকে ছোট হয় তবে প্রায় একই অনুপাত হয়। আপনার যদি চিত্রটি মূল সাথে তুলনা করতে স্কেল করতে হয় তবে তা ঠিক আছে; কী গুরুত্বপূর্ণ তা হল এটি কেমন দেখাচ্ছে।
  6. আপনার প্রোগ্রামটি এমন আউটপুট তৈরি করবে যা আসলে টুইটারের মধ্য দিয়ে যেতে পারে এবং ছড়িয়ে না যায়। এটি একটি নিয়মের পরিবর্তে কেবল একটি গাইডলাইন, যেহেতু সমর্থিত অক্ষরগুলির নির্দিষ্ট সেটটিতে আমি কোনও ডকুমেন্টেশন পাইনি, তবে আপনার সম্ভবত নিয়ন্ত্রণের অক্ষর, মজাদার অদৃশ্য সমন্বয়যুক্ত অক্ষর, ব্যক্তিগত ব্যবহারের অক্ষর এবং এই জাতীয় পছন্দগুলি এড়ানো উচিত।

স্কোর রব্রিক

আমার গৃহীত সমাধানটি নির্বাচন করার সময় আমি কীভাবে সমাধানগুলি র‌্যাঙ্কিং করব তার সাধারণ গাইড হিসাবে, আমি বলতে পারি যে আমি সম্ভবত 25 পয়েন্ট স্কেলের সমাধানগুলি মূল্যায়ন করব (এটি খুব রুক্ষ, এবং আমি সরাসরি কিছু ব্যবহার করব না, কেবল ব্যবহার করে এটি একটি প্রাথমিক নির্দেশিকা হিসাবে):

  • এনকোডিং স্কিমটি বিস্তৃত ইনপুট চিত্রগুলির পুনরুত্পাদন করার জন্য 15 পয়েন্ট । এটি একটি বিষয়, নান্দনিক রায় is
    • 0 এর অর্থ হ'ল এটি মোটেও কাজ করে না, এটি প্রতিবার, বা কিছু কিছু একই চিত্র দেয়
    • 5 এর অর্থ এটি কয়েকটি চিত্র এনকোড করতে পারে, যদিও ডিকোড করা সংস্করণটি দেখতে কুৎসিত এবং এটি আরও জটিল চিত্রগুলিতে কিছুতেই কাজ নাও করতে পারে that
    • 10 এর অর্থ হ'ল এটি বিস্তৃত চিত্রগুলিতে কাজ করে এবং মনোরম বর্ণমালা চিত্রগুলি উত্পাদন করে যা মাঝে মধ্যে পৃথক হতে পারে
    • 15 এর অর্থ এটি কিছু চিত্রের নিখুঁত প্রতিলিপি তৈরি করে এবং এমনকি বৃহত্তর এবং আরও জটিল চিত্রগুলির জন্য এমন কিছু দেয় যা স্বীকৃত। অথবা, সম্ভবত এটি এমন চিত্রগুলি তৈরি করে না যা বেশ স্বীকৃত, তবে এমন সুন্দর চিত্র তৈরি করে যা স্পষ্টত আসল থেকে প্রাপ্ত।
  • ইউনিকোড অক্ষর সেটটির চতুর ব্যবহারের জন্য 3 পয়েন্ট
    • কেবলমাত্র অনুমোদিত অক্ষরের পুরো সেটটি ব্যবহার করার জন্য 0 পয়েন্ট
    • টুইটারের মাধ্যমে বা বিস্তৃত বিভিন্ন পরিস্থিতিতে ট্রান্সফার করার জন্য সুরক্ষিত সীমিত অক্ষর ব্যবহারের জন্য 1 পয়েন্ট
    • অক্ষরের একটি থিম্যাটিক উপসেট ব্যবহারের জন্য 2 টি পয়েন্ট, যেমন কেবল হ্যান আইডোগ্রাফ বা কেবল ডান থেকে বাম অক্ষর
    • সত্যই ঝরঝরে কিছু করার জন্য তিনটি পয়েন্ট, যেমন পাঠযোগ্য পাঠ্য তৈরি করা বা প্রশ্নে থাকা চিত্রটির মতো দেখতে এমন অক্ষর ব্যবহার করা
  • চতুর অ্যালগরিদমিক পদ্ধতির এবং কোড শৈলীর জন্য 3 পয়েন্ট
    • কেবলমাত্র চিত্রটি নীচে স্কেল করার জন্য 1000 লাইন কোডের এমন কিছুর জন্য 0 পয়েন্ট, এটি প্রতি পিক্সেলকে 1 বিট হিসাবে বিবেচনা করুন এবং বেস 64 এ এনকোড করুন
    • এমন কোনও কিছুর জন্য 1 পয়েন্ট যা একটি স্ট্যান্ডার্ড এনকোডিং কৌশল ব্যবহার করে এবং ভালভাবে লিখিত এবং সংক্ষিপ্ত
    • এমন কোনও কিছুর জন্য 2 পয়েন্ট যা তুলনামূলকভাবে উপন্যাসের এনকোডিং কৌশলটি প্রবর্তন করে বা এটি আশ্চর্যজনকভাবে সংক্ষিপ্ত এবং পরিষ্কার
    • একটি লাইনারের জন্য 3 পয়েন্ট যা আসলে ভাল ফলাফল দেয় বা গ্রাফিক্স এনকোডিংয়ে নতুন ভিত্তি ভেঙে এমন কিছু ঘটে (যদি এটি নতুন স্থল ভাঙ্গার জন্য কম সংখ্যক পয়েন্টের মতো মনে হয় তবে মনে রাখবেন যে এই ফলাফলটি সম্ভবত নান্দনিকতার জন্য উচ্চতর স্কোর পাবে) যেমন)
  • গতির জন্য 2 পয়েন্ট । সমস্ত কিছু সমান, দ্রুত হওয়া ভাল, তবে উপরের মানদণ্ডগুলি গতির চেয়ে আরও গুরুত্বপূর্ণ
  • ফ্রি (ওপেন সোর্স) সফ্টওয়্যারটিতে চলার জন্য 1 পয়েন্ট , কারণ আমি নিখরচায় সফ্টওয়্যারটি পছন্দ করি (নোট করুন যে সি # এখনও এই পয়েন্টের জন্য উপযুক্ত হবে যতক্ষণ না এটি মনোতে চালিত হয়, একইভাবে ম্যাটল্যাব কোডটি যদি এটি জিএনইউ অ্যাকটাভে চালিত হয় তবে)
  • আসলে সমস্ত নিয়ম অনুসরণ করার জন্য 1 পয়েন্ট । এই নিয়মগুলি কিছুটা বড় এবং জটিল হয়ে উঠেছে, তাই আমি সম্ভবত অন্যথায় ভাল উত্তরগুলি গ্রহণ করব যা একটি ছোট বিবরণ ভুল পেয়ে যায় তবে আমি যে কোনও সমাধানের জন্য একটি অতিরিক্ত পয়েন্ট দেব যা আসলে সমস্ত বিধিগুলি অনুসরণ করে না

রেফারেন্স ইমেজ

কিছু লোকেরা কিছু রেফারেন্স চিত্র চেয়েছে। এখানে কয়েকটি উল্লেখযোগ্য চিত্র যা আপনি চেষ্টা করতে পারেন; ছোট সংস্করণগুলি এম্বেড করা হয়েছে, এগুলি সমস্ত আপনার যদি প্রয়োজন হয় তবে চিত্রের বৃহত সংস্করণগুলির সাথে লিঙ্ক করে:

লেনা মোনালিসা কর্নেল বক্স স্ট্যাকওভারফ্লো লোগো

পুরস্কার

উপরের মানদণ্ডের ভিত্তিতে আমি যে সমাধানটি সবচেয়ে ভাল পছন্দ করি তার জন্য আমি 500 রিপ্রেস অনুগ্রহ (প্লাস 50 যা স্ট্যাকওভারফ্লো কিক করে) দিচ্ছি। অবশ্যই, আমি অন্য সবাইকেও এখানে তাদের পছন্দের সমাধানগুলিতে ভোট দিতে উত্সাহিত করি।

সময়সীমা নোট

শনিবার, ৩০ মে শনিবার সন্ধ্যা PM টার দিকে অনুগ্রহ শেষ না হওয়া পর্যন্ত এই প্রতিযোগিতাটি চলবে it এটি শেষ হওয়ার সঠিক সময়টি আমি বলতে পারি না; এটি 5 থেকে 7 টা পর্যন্ত যে কোনও জায়গায় হতে পারে। আমি গ্যারান্টি দিচ্ছি যে আমি দুপুর ২ টা থেকে জমা দেওয়া সমস্ত এন্ট্রি দেখব, এবং আমি 4 মিনিটের জমা দেওয়া সমস্ত এন্ট্রি দেখার জন্য যথাসাধ্য চেষ্টা করব; যদি এর পরেও সমাধানগুলি জমা দেওয়া হয়, আমার সিদ্ধান্ত নেওয়ার আগে আমার সেগুলিকে সুষ্ঠু চেহারা দেওয়ার সুযোগ নাও থাকতে পারে। এছাড়াও, আপনি যতটা আগে জমা দিয়েছিলেন, ভোটদানের জন্য আপনার পক্ষে আমার পক্ষে সর্বোত্তম সমাধানটি বেছে নিতে আরও বেশি সুযোগ থাকবে, তাই চেষ্টা করুন এবং সময়সীমার চেয়ে আগে জমা দিন।

ইউনিকোড নোট

ইউনিকোড চরিত্রগুলি ঠিক কী অনুমোদিত তা নিয়েও কিছুটা বিভ্রান্তি দেখা দিয়েছে। সম্ভব ইউনিকোড কোড পয়েন্ট পরিসর U+0000থেকে U+10FFFF। কিছু কোড পয়েন্ট রয়েছে যা কোনও ইউনিকোড অক্ষর হিসাবে ডেটা খোলা ইন্টারচেঞ্জে ব্যবহার করার জন্য বৈধ নয়; এগুলি হ'ল ননচার্যাকারস এবং সারোগেট কোড পয়েন্ট । Noncharacters মধ্যে সংজ্ঞায়িত করা হয় Unidode স্ট্যান্ডার্ড 5.1.0 অধ্যায় 16.7 মান হিসাবে U+FFFE, U+FFFF, U+এনFFFE , U+এনFFFF যেখানে এন হয় 1- 10হেক্সাডেসিমেল এবং পরিসীমা U+FDD0-U+FDEF। এই মানগুলি অ্যাপ্লিকেশন-নির্দিষ্ট অভ্যন্তরীণ ব্যবহারের জন্য ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছে এবং অনুসারে অ্যাপ্লিকেশনগুলি তাদের দ্বারা প্রক্রিয়া করা পাঠ্যের বাইরে এই অক্ষরগুলি কেড়ে নিতে পারে। ভাড়াটে কোড পয়েন্ট, সংজ্ঞায়িত ইউনিকোড স্ট্যান্ডার্ড 5.1.0 অধ্যায় 3.8 যেমন U+D800- U+DFFF, হল UTF-16 বেসিক বহুভাষিক প্লেন পরলোক অক্ষর এনকোডিং করার জন্য ব্যবহার করা হয়; সুতরাং, ইউটিএফ -16 এনকোডিংয়ে এই কোড পয়েন্টগুলি সরাসরি উপস্থাপন করা অসম্ভব এবং এগুলি অন্য কোনও এনকোডিংয়ে এনকোড করা অবৈধ। সুতরাং, এই প্রতিযোগিতার উদ্দেশ্যে, আমি এমন কোনও প্রোগ্রামের অনুমতি দেব যা চিত্রগুলিকে রেঞ্জ থেকে ১৪০ টির বেশি ইউনিকোড কোড পয়েন্টের অনুক্রমের মধ্যে এনকোড করবে U+0000- U+10FFFFউপরে বর্ণিত সমস্ত ননচ্যাকার্টার এবং সারোগেট জোড়া বাদ দিয়ে।

আমি এমন সমাধানগুলি পছন্দ করব যা কেবলমাত্র নির্ধারিত অক্ষরগুলি ব্যবহার করে এবং এমনকী আরও ভাল যা নির্ধারিত অক্ষরের চতুর সাবসেট ব্যবহার করে বা চরিত্র সেটটি ব্যবহার করে আকর্ষণীয় কিছু করে। বরাদ্দ করা অক্ষরের তালিকার জন্য, ইউনিকোড অক্ষর ডাটাবেস দেখুন ; নোট করুন যে কয়েকটি অক্ষর সরাসরি তালিকাভুক্ত রয়েছে, কিছু কিছু কেবল একটি ব্যাপ্তির শুরু এবং শেষ হিসাবে তালিকাভুক্ত রয়েছে। এছাড়াও নোট করুন যে সারোগেট কোড পয়েন্টগুলি ডাটাবেসে তালিকাবদ্ধ রয়েছে, তবে উপরে বর্ণিত হিসাবে নিষিদ্ধ। আপনি যদি পাঠ্যটিকে আরও আকর্ষণীয় করে তোলার জন্য অক্ষরের কিছু বৈশিষ্ট্যের সুযোগ নিতে চান তবে বিভিন্ন বর্ণের তথ্য পাওয়া যায় যেমন নামকৃত কোড ব্লকের তালিকা এবং বিভিন্ন চরিত্রের বৈশিষ্ট্য

টুইটার যেহেতু তারা সমর্থন করে ঠিক সেই চরিত্রের সেটটি নির্দিষ্ট করে না, তাই আমি যে সমাধানগুলি আসলে টুইটারের সাথে কাজ করে না সেগুলি সম্পর্কে আমি ক্ষীণ হব কারণ নির্দিষ্ট অক্ষর অতিরিক্ত বা নির্দিষ্ট অক্ষর গণনা করা হয়। এটি পছন্দনীয় তবে প্রয়োজনীয় নয় যে সমস্ত এনকোডযুক্ত আউটপুটগুলি টুইটারের মাধ্যমে বা অন্য কোনও মাইক্রোব্লগিং পরিষেবা যেমন আইডেন্টিএসিএর মাধ্যমে নিরক্ষিত স্থানান্তরিত করতে সক্ষম হওয়া উচিত । আমি কিছু ডকুমেন্টেশন দেখেছি যা জানিয়েছে যে টুইটার সত্তা-এনকোড <,> এবং &, এবং এভাবে যথাক্রমে 4, 4 এবং 5 অক্ষর হিসাবে গণনা করা হয়েছে, তবে আমি নিজেই এটি পরীক্ষা করে দেখিনি, এবং তাদের জাভাস্ক্রিপ্টের চরিত্রের কাউন্টারটি মনে হচ্ছে না তাদের সেভাবে গণনা করা।

টিপস এবং লিঙ্কগুলি

  • নিয়মে বৈধ ইউনিকোড অক্ষরের সংজ্ঞাটি কিছুটা জটিল। অক্ষরের একক ব্লক নির্বাচন করা, যেমন সিজেকে ইউনিফাইড আইডিয়াগ্রাফগুলি (U + 4E00 – U + 9FCF) আরও সহজ হতে পারে।
  • আপনার ইমেজ ম্যানিপুলেশনের জন্য আপনি ইমেজম্যাগিক বা পাইথন ইমেজিং লাইব্রেরির মতো বিদ্যমান চিত্র গ্রন্থাগারগুলি ব্যবহার করতে পারেন ।
  • আপনার যদি ইউনিকোড অক্ষর সেট এবং এর বিভিন্ন এনকোডিংগুলি বোঝার জন্য কিছু সাহায্যের প্রয়োজন হয় তবে লিনাক্স এবং ইউনিক্সের এই ইউটিএফ -8-তে এই দ্রুত গাইড বা এই বিস্তারিত FAQ দেখুন
  • আপনার সমাধানটি যত তাড়াতাড়ি আপনি পেয়েছেন, তত বেশি সময় আমি (এবং অন্যান্য লোকেরা ভোট দেওয়ার) জন্য এটি দেখতে হবে। আপনি যদি নিজের সমাধানটিকে উন্নত করেন তবে এটি সম্পাদনা করতে পারেন; আমি সমাধানগুলির মধ্যে আমার শেষ চেহারাটি গ্রহণ করার সময় আমি আমার অনুগ্রহকে সাম্প্রতিকতম সংস্করণে ভিত্তি করব।
  • যদি আপনি সহজে ইমেজ ফর্ম্যাটটি বিশ্লেষণ করতে এবং লিখতে চান (এবং কেবল বিদ্যমান ফর্ম্যাটটি ব্যবহার করতে চান না), আমি পিপিএম ফর্ম্যাটটি ব্যবহার করার পরামর্শ দেব । এটি একটি পাঠ্য ভিত্তিক ফর্ম্যাট যা এর সাথে কাজ করা খুব সহজ এবং আপনি এতে থেকে রূপান্তর করতে ইমেজম্যাগিক ব্যবহার করতে পারেন ।

মন্তব্যে আমি যে বিধিগুলি লিখেছি সে বিষয়ে নির্দ্বিধায় পরামর্শ দিন; লোকেরা যদি তাদের স্পষ্টতার প্রয়োজন হয় বা খুব বেশি নির্দিষ্ট করে বলে মনে হয় তবে আমি অবশ্যই তাদের টুইট করতে ইচ্ছুক।
ব্রায়ান ক্যাম্পবেল

6
আপনার সম্ভবত বলা উচিত যে কোনও সার্ভারে ছবিটি আপলোড করা এবং এতে url পোস্ট করা বৈধ নয়।
শায় এরলিচম্যান

2
@ শায় আমি কি ইতিমধ্যে বলিনি? "ডিকোডিং প্রক্রিয়াটির উপরে উল্লিখিত আউটপুট ব্যতীত অন্য এনকোডিং প্রক্রিয়াটির অন্য কোনও আউটপুট অ্যাক্সেস থাকতে পারে না; অর্থাৎ আপনি কোথাও চিত্রটি আপলোড করতে পারবেন না এবং ডিকোডিং প্রক্রিয়াটির জন্য ইউআরএল আউটপুট করতে পারবেন না, বা এর মতো নির্লিপ্ত কিছু anything । "
ব্রায়ান ক্যাম্পবেল

1
@ কনরাড রুডল্ফ আমি সম্মত; আমি ব্যবহারিক দৃষ্টিকোণ থেকে "বোকা" বলতে চাইনি (স্পষ্টতই, এই পুরো প্রতিযোগিতাটি ব্যবহারিক দৃষ্টিকোণ থেকে নির্বোধ), আমি এই প্রতিযোগিতার প্রসঙ্গে "বোকা" বলতে চাইছিলাম। তথ্য তত্ত্বের অর্থে কোনও ইউআরআই ব্যবহার করা কোনও সংক্ষেপণ অ্যালগরিদম নয়, কারণ এটি কোনও বিকল্প চ্যানেলটি ব্যবহার না করে আপনাকে আর কোনও তথ্য হস্তান্তর করতে দেয় না। আপনি এনকোডার এবং ডিকোডারটিকে ইমেজগুলির একটি বৃহত ডাটাবেস দিতে পারেন এবং এটিকে সংক্ষেপণ বলতে পারেন যা কেবলমাত্র ইমেজগুলির একটি সীমিত সংখ্যায় কাজ করে, তবে আমি উল্লেখ করেছি যে আপনি একটি স্বেচ্ছাসেবী চিত্র পরিচালনা করতে সক্ষম হতে হবে।
ব্রায়ান ক্যাম্পবেল

2
ইউনিকোডের অক্ষরের বৈধ পরিসরের ব্যাখ্যার জন্য এই কয়েক লিঙ্ক এখানে আমি চালিয়েছি যাতে লোকেরা সাহায্য করতে পারে: azillionmonkeys.com/qed/unicode.html । মনে রাখবেন যে ইউটিএফ এনকোডিংগুলি হ'ল পুরো ইউনিকোড পরিসরটি এনকোড করতে পারে; ইউসিএস -4 হ'ল ইউনিকোডের সুপারস্টার, এবং ইউসিএস -২ এবং এএসসিআইআই সাবসেট। এবং সংক্ষেপণের সম্মুখভাগে, এখানে মূল পোস্টের মতো একটি কৌশল রয়েছে, যদিও তিনি 350 বাইটের চেয়ে নিজেকে 1 কে অনুমতি দিচ্ছেন: চিৎকার চেঁচামেচি
ব্রায়ান ক্যাম্পবেল

উত্তর:


244

ঠিক আছে, এখানে আমার: nanocrunch.cpp এবং CMakeLists.txt ফাইল এটি সিএমকে ব্যবহার করে তৈরি করতে এটি এর বেশিরভাগ চিত্র হ্যান্ডলিংয়ের জন্য ম্যাগিক ++ ইমেজম্যাগিক এপিআইয়ের উপর নির্ভর করে । এটির জন্য স্ট্রিং এনকোডিংয়ের জন্য বিগনাম পাটিগণিতের জন্য জিএমপি গ্রন্থাগারও প্রয়োজন ।

আমি কয়েকটি অনন্য মোচড় দিয়ে আমার সমাধানটিকে ফ্র্যাক্টাল ইমেজ সংক্ষেপণের ভিত্তিতে তৈরি করেছি। মূল ধারণাটি হ'ল চিত্রটি নেওয়া, একটি অনুলিপিটি 50% এ স্কেল করা এবং বিভিন্ন চিত্রের টুকরোগুলি অনুসন্ধান করা যা মূল চিত্রটিতে নন-ওভারল্যাপিং ব্লকের অনুরূপ। এটি এই অনুসন্ধানে খুব নিষ্ঠুর শক্তি গ্রহণ করে, তবে এটি আমার পরিবর্তনগুলি প্রবর্তন করা সহজ করে তোলে।

প্রথম পরিবর্তনটি হ'ল কেবল নব্বই ডিগ্রি ঘূর্ণন এবং ফ্লিপগুলি দেখার পরিবর্তে, আমার প্রোগ্রামটিও 45 ডিগ্রি ওরিয়েন্টেশন বিবেচনা করে। এটি প্রতি ব্লকে আরও একটি বিট, তবে এটি চিত্রের গুণমানকে প্রচুর পরিমাণে সহায়তা করে।

অন্য জিনিসটি হ'ল প্রতিটি ব্লকের প্রতিটি রঙের উপাদানগুলির জন্য একটি বৈসাদৃশ্য / উজ্জ্বলতা সমন্বয় সংরক্ষণ করা বেশ ব্যয়বহুল। পরিবর্তে, আমি একটি ভারী পরিমাণে রঞ্জিত রঙ সঞ্চয় করি (প্যালেটটিতে কেবল 4 * 4 * 4 = 64 টি রঙ রয়েছে) যা কিছুটা অনুপাতে কেবল মিশ্রিত হয়। গাণিতিকভাবে, এটি প্রতিটি রঙের জন্য একটি পরিবর্তনশীল উজ্জ্বলতা এবং ধ্রুবক বিপরীতে সামঞ্জস্যের সমতুল্য। দুর্ভাগ্যক্রমে, এর অর্থ এই যে রঙগুলি উল্টানোর কোনও নেতিবাচক বিপরীতে নেই।

একবার এটি প্রতিটি ব্লকের অবস্থান, ওরিয়েন্টেশন এবং রঙ গণনা করা হয়, এটি এটি একটি ইউটিএফ -8 স্ট্রিংয়ে এনকোড করে। প্রথমত, এটি ব্লক টেবিলের ডেটা এবং চিত্রের আকারের উপস্থাপনের জন্য একটি খুব বড় বিগনাম উত্পন্ন করে। এর দিকে দৃষ্টিভঙ্গি স্যাম হোসেভারের সলিউশনের সাথে সমান rad এক ধরণের র‌্যাডিক্স সহ এক বিশাল সংখ্যক যা অবস্থান অনুসারে পরিবর্তিত হয়।

তারপরে এটি এটিকে রূপান্তর করে যা উপলব্ধ অক্ষরের আকারের আকার যাই হোক না কেন একটি ভিত্তিতে into ডিফল্টরূপে, এটি নির্ধারিত ইউনিকোড অক্ষর সেটটির পুরো ব্যবহার করে, বিয়োগফলটি এর চেয়ে কম, এম্পারস্যান্ড, নিয়ন্ত্রণ, সংমিশ্রণ এবং সরোগেট এবং ব্যক্তিগত অক্ষরগুলির পুরো ব্যবহার করে। এটি সুন্দর নয় তবে এটি কাজ করে। আপনি ডিফল্ট টেবিলটিও মন্তব্য করতে পারেন এবং প্রিন্টযোগ্য 7-বিট ASCII (আবার <,> এবং & অক্ষরগুলি বাদ দিয়ে) বা এর পরিবর্তে সিজেকে ইউনিফাইড আইডোগ্রাফগুলি নির্বাচন করতে পারেন। কোন অক্ষর কোডগুলি উপলব্ধ রয়েছে তার সারণীতে অবৈধ এবং বৈধ অক্ষরের বিকল্প রানের সাথে এনকোড করা একটি রান-দৈর্ঘ্যের সঞ্চিত রয়েছে।

যাইহোক, এখানে কিছু চিত্র এবং সময় রয়েছে (যেমনটি আমার পুরানো 3.0GHz P4 তে পরিমাপ করা হয়েছে), এবং উপরে বর্ণিত পূর্ণ নির্ধারিত ইউনিকোড সেটে 140 টি অক্ষরকে সংকুচিত করা হয়েছে। সামগ্রিকভাবে, তারা কীভাবে পরিণত হয়েছিল তা নিয়ে আমি মোটামুটি সন্তুষ্ট। আমার যদি এটিতে আরও কাজ করার জন্য আরও সময় থাকে তবে আমি সম্ভবত পচে যাওয়া চিত্রগুলির ব্লকনেস হ্রাস করার চেষ্টা করব। তবুও, আমি মনে করি ফলাফলগুলি চূড়ান্ত সংক্ষেপণের অনুপাতের জন্য বেশ ভাল। সঙ্কুচিত চিত্রগুলি কিছুটা ছাপযুক্ত, তবে বিটগুলি মূলটির সাথে কীভাবে সামঞ্জস্য হয় তা দেখতে অপেক্ষাকৃত সহজ।

ওভারফ্লো লোগো (এনকোডে 8.6s, ডিকোডে 7.9s, 485 বাইট):
http://i44.tinypic.com/2w7lok1.png

লেনা (এনকোডে 32.8 সে, 13.0 সে ডিকোডে, 477 বাইট):
http://i42.tinypic.com/2rr49wg.png http://i40.tinypic.com/2rhxxyu.png

মোনালিসা (সঙ্কেতাক্ষরে লিখা 43.2s, ডিকোড করতে 14.5s, 490 বাইট):
http://i41.tinypic.com/ekgwp3.png http://i43.tinypic.com/ngsxep.png

সম্পাদনা করুন: সিজেকে ইউনিফাইড অক্ষর

স্যাম সিজেকে দিয়ে এটি ব্যবহার সম্পর্কে মন্তব্যে জিজ্ঞাসা করেছিলেন। সিজেকে ইউনিফাইড চরিত্রের সেট থেকে 139 টি অক্ষর সংকোচনের জন্য মোনা লিসার একটি সংস্করণ এখানে রয়েছে:

http://i43.tinypic.com/2yxgdfk.png 咏璘驞凄脒鵚据蛥鸂拗朐朖辿韩瀦魷歪痫栘璯緍脲蕜抱揎頻蓼債鑡嗞靊寞柮嚛嚵籥聚隤慛絖銓馿渫櫰矍昀鰛掾撄粂敽牙稉擎蔍螎葙峬覧絀蹔抆惫冧笻哜搀澐芯譶辍澮垝黟偞媄童竽梀韠镰猳閺狌而羶喙伆杇婣唆鐤諽鷍鴞駫搶毤埙誖萜愿旖鞰萗勹鈱哳垬濅鬒秀瞛洆认気狋異闥籴珵仾氙熜謋繴茴晋髭杍嚖熥勳縿餅珝爸擸萿

আমি এটির জন্য যে প্রোগ্রামটি ব্যবহার করেছি তার শীর্ষে থাকা টিউনিং প্যারামিটারগুলি হ'ল: 19, 19, 4, 4, 3, 10, 11, 1000, 1000. আমি সংখ্যা_-সাইনড এবং কোডগুলির প্রথম সংজ্ঞাটিও মন্তব্য করেছিলাম এবং সংক্ষিপ্ত বিবরণ ছাড়াই তাদের শেষ সংজ্ঞা সিজেকে ইউনিফাইড অক্ষর সেট নির্বাচন করতে।


কি দারুন! সুন্দর কাজ. আমি এই ছোট চিত্রগুলির জন্য ফ্র্যাক্টাল চিত্রের সংকোচনের বিষয়ে সন্দেহবাদী ছিলাম তবে এটি আসলে বেশ সুন্দর ফলাফল দেয়। এটি সংকলন এবং চালনা করাও বেশ সহজ ছিল।
ব্রায়ান ক্যাম্পবেল

1
ধন্যবাদ বন্ধুরা! স্যাম, আপনি কি কেবল 140 সিজেকে চরিত্রের ফলাফলগুলি বোঝাতে চাইছেন? যদি তা হয় তবে হ্যাঁ, আপনাকে শীর্ষে সংখ্যাগুলি টিউন করতে হবে। বিটগুলিতে চূড়ান্ত আকারটি লগ 2 (ধাপগুলি_ইন_ x পদক্ষেপ_ইন_ পদক্ষেপসমূহ_ইন_দিকের ধাপগুলি_ইন_গ্রীন ধাপগুলি_ইন_ ব্লু) * ব্লক_ইন_এক্স ব্লক_ইন_ই + লগ 2 (সর্বাধিক_উইথ সর্বোচ্চতম উচ্চতা ) হয়।
বুজুম

সম্পাদনা করুন: প্রথম লগ 2 () এ আমি রেখে গেছি একটি * 16 আছে। এটি সম্ভাব্য দিকনির্দেশনার জন্য।
বুজুম

20
কেউ কি এখনও কোনও ছবিটি ব্যবহার করে টুইটার করেছেন?
ডিবিআর

288

চিত্র ফাইল এবং পাইথন উত্স (সংস্করণ 1 এবং 2)

সংস্করণ 1 এখানে আমার প্রথম প্রচেষ্টা। আমি যেতে যেতে আপডেট করব।

আমি এসও লোগোটি প্রায় হ্রাসহীন 300 টি অক্ষরে পেয়েছি। আমার কৌশলটি এসভিজি ভেক্টর আর্টে রূপান্তর ব্যবহার করে তাই লাইন আর্টে এটি সর্বোত্তমভাবে কাজ করে। এটি আসলে একটি এসভিজি সংকোচকারী, এটির জন্য এখনও মূল শিল্পটি একটি ভেক্টরাইজেশন পর্যায়ে যেতে হবে।

আমার প্রথম প্রয়াসের জন্য আমি পিএনজি ট্রেসের জন্য একটি অনলাইন পরিষেবা ব্যবহার করেছি তবে অনেকগুলি নিখরচায় এবং অ-নিখরচায় সরঞ্জাম রয়েছে যা পোট্রেস (ওপেন সোর্স) সহ এই অংশটি পরিচালনা করতে পারে ।

ফলাফল এখানে

আসল এসও লোগো http://www.warriorhut.org/ographicics/svg_to_unicode/so-logo.png মূল ডিকোডড এসও লোগো http://www.warriorhut.org/ographicics/svg_to_unicode/so-logo-decoded.png এনকোডিংয়ের পরে এবং পাঠোদ্ধারতা

অক্ষর : 300

সময় : পরিমাপ করা হয়নি তবে ব্যবহারিকভাবে তাত্ক্ষণিকভাবে (ভেক্টরাইজেশন / রেস্টারাইজেশন পদক্ষেপগুলি সহ নয়)

পরবর্তী পর্যায়ে ইউনিকোড চরিত্রের জন্য 4 টি প্রতীক (এসভিজি পাথ পয়েন্ট এবং কমান্ড) এম্বেড করা হবে। এই মুহুর্তে আমার অজগর বিল্ডটিতে প্রশস্ত অক্ষর সমর্থন ইউসিএস 4 নেই যা চরিত্র অনুসারে আমার রেজুলেশনকে সীমাবদ্ধ করে। আমি ইউনিকোড সংরক্ষিত পরিসীমা 0xD800 এর নীচের প্রান্তে সর্বাধিক সীমাটিও সীমাবদ্ধ করেছি তবে একবার যদি আমি অনুমোদিত অক্ষরের তালিকা তৈরি করি এবং এগুলি এড়ানোর জন্য একটি ফিল্টার আমি তাত্ত্বিকভাবে প্রয়োজনীয় সংখ্যার অক্ষরকে 70-100 এর চেয়ে কম ঠেলাতে পারি উপরে লোগো।

বর্তমানে এই পদ্ধতির একটি সীমাবদ্ধতা হ'ল আউটপুট আকার স্থির নয়। এটি ভেক্টরিকরণের পরে ভেক্টর নোড / পয়েন্টের উপর নির্ভর করে। এই সীমাটি স্বয়ংক্রিয়রূপে চিত্রটিকে পিক্সেলটিং করা প্রয়োজন (যা ভেক্টরগুলির মূল উপকারটি সরিয়ে দেয়) অথবা প্রয়োজনীয় নোড গণনা না হওয়া অবধি সরলকরণের পর্যায়ে বার বার চলমান হবে (যা আমি বর্তমানে ইনসকেপে ম্যানুয়ালি করছি)।

সংস্করণ 2

আপডেট : ভি 2 এখন প্রতিযোগিতায় যোগ্য। পরিবর্তন করুন:

  • কমান্ড-লাইন নিয়ন্ত্রণ ইনপুট / আউটপুট এবং ডিবাগিং
  • রেগেক্সের পরিবর্তে এসভিজি হ্যান্ডেল করতে এক্সএমএল পার্সার (lxML) ব্যবহার করে
  • ইউনিকোড প্রতীক হিসাবে 2 পাথ বিভাগকে প্যাক করে
  • ডকুমেন্টেশন এবং পরিষ্কার
  • সমর্থন শৈলী = "পূরণ: রঙ" এবং পূরণ = "রঙ"
  • নথির প্রস্থ / উচ্চতা একক অক্ষরে প্যাক করা
  • পথের রঙ একক চরিত্রে প্যাক করা
  • রঙের প্রতি রঙের ডেটা 4 বিট ছুঁড়ে ফেলে দিয়ে হেক্স রূপান্তরের মাধ্যমে একটি চরিত্রে প্যাক করে রঙিন সংক্ষেপণ অর্জন করা হয়।

অক্ষর : 133

সময় : কয়েক সেকেন্ড

এন 2 এনকোডিং এবং ডিকোডিংয়ের পরে v2 ডিকোড হয়েছে http://www.warriorhut.org/ographicics/svg_to_unicode/so-logo-decoded-v2.png

আপনি দেখতে পাচ্ছেন যে এখানে কিছু শৈল্পিক রয়েছে। এটি পদ্ধতির সীমাবদ্ধতা নয় তবে আমার রূপান্তরগুলির কোথাও একটি ভুল। পয়েন্টগুলি 0.0 - 127.0 এর সীমার বাইরে গেলে শিল্পকর্মগুলি ঘটে এবং তাদের সীমাবদ্ধ করার আমার প্রচেষ্টা মিশ্র সাফল্য পেয়েছিল। সমাধানটি কেবল চিত্রটিকে নিচে স্কেল করা তবে আর্টবোর্ড বা গ্রুপ ম্যাট্রিক্সের চেয়ে প্রকৃত পয়েন্টগুলি স্কেল করতে আমার সমস্যা হয়েছিল এবং আমি এখন যত্ন নিতে খুব ক্লান্ত হয়ে পড়েছি। সংক্ষেপে, যদি আপনার পয়েন্টগুলি সমর্থিত পরিসরে থাকে তবে এটি সাধারণত কার্যকর হয়।

আমি বিশ্বাস করি মাঝখানে গিঁটটি কোনও হ্যান্ডেলের সাথে সংযুক্ত হ্যান্ডেলের অন্যদিকে চলে যাওয়ার কারণে is মূলত পয়েন্টগুলি প্রথম স্থানে খুব কাছাকাছি রয়েছে। উত্স চিত্রটি সংকোচন করার আগে আগে সরলকরণের ফিল্টারটি চালানো এটিকে ঠিক করা এবং কিছু অপ্রয়োজনীয় চরিত্রের শেভ করা উচিত।

আপডেট : সহজ পদ্ধতিগুলির জন্য এই পদ্ধতিটি ঠিক আছে তাই জটিল পথগুলি সরল করার জন্য এবং গোলমাল কমাতে আমার একটি উপায়ের প্রয়োজন ছিল। আমি এই কাজের জন্য ইনস্কেপ ব্যবহার করেছি । আমি ইনস্কেপ ব্যবহার করে অপ্রয়োজনীয় পথগুলি তৈরি করে কিছুটা ভাগ্য নিয়েছিলাম তবে এটি স্বয়ংক্রিয় করার চেষ্টা করার সময় পাইনি। আমি পথ সংখ্যা কমিয়ে আনার জন্য ইনস্কেপ 'সরলকরণ' ফাংশনটি ব্যবহার করে কিছু নমুনা এসভিজি তৈরি করেছি।

সরলীকরণ ঠিক আছে কাজ করে তবে এটি অনেকগুলি পথের সাথে ধীর হতে পারে।

অটোট্রেসের উদাহরণ http://www.warriorhut.org/ographicics/svg_to_unicode/autotrace_16_color_manual_reduction.png কর্নেল বক্স http://www.warriorhut.com/ographicics/svg_to_unicode/cornell_box_simplified.png /svg_to_unicode/lena_std_washed_autotrace.png

থাম্বনেইলস সনাক্ত করা হয়েছে

এখানে কিছু অতি স্বল্প-শর্ট শট। এগুলি 140 অক্ষরের সীমাটির আরও কাছাকাছি থাকবে যদিও কিছু চতুর পাথ সংক্ষেপণেরও প্রয়োজন হতে পারে।

তোলা http://www.warriorhut.org/graphics/svg_to_unicode/competition_thumbnails_groomed.png সরলীকৃত এবং despeckled।

ত্রিভুজযুক্ত http://www.warriorhut.org/ographicics/svg_to_unicode/compression_thumbnails_triangulated.png সরলীকৃত, হতাশাগ্রস্থ এবং ত্রিভুজযুক্ত।

autotrace --output-format svg --output-file cornell_box.svg --despeckle-level 20 --color-count 64 cornell_box.png

উপরের দিকে : অটোট্রেস ব্যবহার করে সরলীকৃত পাথ ।

দুর্ভাগ্যক্রমে আমার পার্সার অটোট্রেস আউটপুট পরিচালনা করে না তাই আমি জানি না পয়েন্টগুলি কীভাবে ব্যবহার করা যেতে পারে বা কতটা সরল করা যায়, দুঃখের বিষয় সময়সীমার আগে এটি লেখার খুব কম সময় আছে। যদিও ইনস্কেপ আউটপুটটির তুলনায় পার্স করা এটি অনেক সহজ।


2
অসাধারণ! প্রথমদিকে আমি উভয় ধারালো প্রান্ত এবং মসৃণ অঞ্চলগুলির সাথে একটি হাইব্রিড ভেক্টর সমাধান তৈরি করতে চেয়েছিলাম তবে এটি কোনও ট্রেসিং লাইব্রেরি (যা আমি ব্যবহার করতে চাই না) ব্যবহার না করেই অনেক জটিল প্রমাণিত করেছি। আমি আপনার পদ্ধতির সাথে কতটা দূরে যেতে পারি তা দেখার অপেক্ষায় রয়েছি!
সাম হোচেভার

নিস! আমি আশা করছিলাম যে আমরা ভেক্টরাইজেশন দ্বারা নিকট-ক্ষতিহীন পদ্ধতির কিছু প্রচেষ্টা দেখতে পাব। এর অর্থ এটির সাধারণতা কম, তবে চিত্রগুলির জন্য এটি উচ্চ মানের রয়েছে cover ভেক্টরাইজেশনের জন্য একটি অনলাইন পরিষেবা ব্যবহার করা ভাল। মাপ আরও নিচে নেওয়ার জন্য শুভকামনা!
ব্রায়ান ক্যাম্পবেল

আমি চিত্রের সংক্ষেপণ এবং চরিত্রের এনকোডিংটিকে দুটি পৃথক পদক্ষেপ হিসাবে বিবেচনা করব - স্যামের কৌশলটি এনকোডিংয়ের জন্য অনুকূল বলে মনে হচ্ছে, এবং সহজেই একটি স্ট্যান্ড-অ্যালোন প্রোগ্রামে তৈরি করা যেতে পারে। আপনার সমাধানের অনন্য অংশে (যেমন সংকোচনের অংশ) মনোনিবেশ করে এবং কেবল বিটগুলির একটি স্ট্রিং আউটপুট তৈরি করে আপনি আপনার বকের জন্য আরও বেশি ঠাঁই পাবেন।
মার্ক রান্সম 21

70
কি দারুন. এই চিত্রগুলি সত্যিই আড়ম্বরপূর্ণ দেখায়।
রিনাত আবদুল্লিন

199

আমার সম্পূর্ণ সমাধানটি পাওয়া যাবে http://caca.zoy.org/wiki/img2twit । এটিতে নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • যুক্তিসঙ্গত সংকোচনের সময় (উচ্চ মানের জন্য প্রায় 1 মিনিট)
  • দ্রুত ক্ষয় (এক সেকেন্ডের ভগ্নাংশ)
  • মূল চিত্রের আকার রাখে (কেবল দিক অনুপাত নয়)
  • শালীন পুনর্গঠনের গুণমান (আইএমএইচও)
  • বার্তা দৈর্ঘ্য এবং অক্ষর সেট (ASCII, CJK, প্রতীক) রানটাইম এ চয়ন করা যেতে পারে
  • বার্তার দৈর্ঘ্য এবং চরিত্রের সেটটি ডিকম্প্রেশন সময় স্বতঃরীক্ষণ হয়
  • অত্যন্ত দক্ষ তথ্য প্যাকিং

http://caca.zoy.org/raw-attachment/wiki/img2twit/so-logo.png http://caca.zoy.org/raw-attachment/wiki/img2twit/twitter4.png

蜥 秓 鋖 筷 聝 诿 缰 偺 腶 漷 庯 祩 皙 靊 谪 獜 岨 幻 寤 厎 趆 脘 搇 梄 踥 桻 理 戂 溥 欇 渹 裏 軱 骿 苸 髙 骟 市 簶 璨 粭 浧 鱉 捕 弫 潮 衍 蚙 瀹 岚玧 霫 鏓 蓕 戲 債 鼶 襋 躻 弯 袮 足 庭 侅 旍 凼 飙 驅 據 嘛 掔 倾 诗 籂 阉 嶹 婻 椿 糢 墤 渽 緛 赐 更 儅 棫 武 婩 縑 逡 荨 璙 杯 翉 珸 齸 陁 颗 鳣 憫擲 舥 攩 寉 鈶 兓 庭 璱 篂 鰀 乾 丕 耓 庁 錸 努 樀 肝 亖 弜 喆 蝞 躐 葌 熲 谎 蛪 曟 暙 刍 镶 媏 嘝 驌 慸 盂 氤 缰 殾 譑

এখানে এনকোডিং প্রক্রিয়াটির মোটামুটি ওভারভিউ দেওয়া হল:

  • উপলভ্য বিটের সংখ্যা পছন্দসই বার্তার দৈর্ঘ্য এবং ব্যবহারযোগ্য চার্সেট থেকে গণনা করা হয়
  • উত্স চিত্রটি উপলব্ধ বিট পারমিটের যতগুলি স্কোয়ার সেলগুলিতে বিভক্ত
  • প্রাথমিক স্থানাঙ্ক এবং রঙের মান সহ একটি নির্দিষ্ট সংখ্যক পয়েন্ট (বর্তমানে ২) প্রতিটি ঘরে আক্রান্ত হয়
  • কোনও মানের শর্ত পূরণ না হওয়া পর্যন্ত নিম্নলিখিতটি পুনরাবৃত্তি করা হয়:
    • একটি বিন্দু একটি এলোমেলোভাবে চয়ন করা হয়
    • এই বিন্দুটিতে এলোমেলোভাবে একটি অপারেশন করা হয় (এটিকে তার ঘরের অভ্যন্তরে স্থানান্তরিত করে, এর রঙ পরিবর্তন করে)
    • যদি ফলাফলের চিত্রটি (নীচে ডিকোডিং প্রক্রিয়াটি দেখুন) উত্স চিত্রের আরও কাছাকাছি হয়, তবে অপারেশনটি রাখা হয়
  • চিত্রের আকার এবং পয়েন্টগুলির তালিকাটি ইউটিএফ -8 এ এনকোড করা আছে

এবং এটি ডিকোডিং প্রক্রিয়া:

  • চিত্রের আকার এবং পয়েন্টগুলি ইউটিএফ -8 স্ট্রিম থেকে পড়ে
  • গন্তব্য চিত্রের প্রতিটি পিক্সেলের জন্য:
    • প্রাকৃতিক নেগ্রবার্সের তালিকাটি গণনা করা হয়
    • পিক্সেলের চূড়ান্ত রঙটি তার প্রাকৃতিক প্রতিবেশীদের রঙের ওজনযুক্ত গড় হিসাবে সেট করা হয়েছে

আমি যা বিশ্বাস করি প্রোগ্রামটির সর্বাধিক মূল অংশটি বিটস্ট্রিম। বিট-অ্যালাইনড মানগুলি ( stream <<= shift; stream |= value) প্যাকিংয়ের পরিবর্তে , আমি স্বেচ্ছাসেবী মানগুলি প্যাক করি যা পাওয়ার-অফ-টু রেঞ্জ ( stream *= range; stream += value) নয়। এর জন্য বিগনাম গণনা প্রয়োজন এবং অবশ্যই এটি অনেক ধীরে ধীরে, তবে এটি 20902 প্রধান সিজেকে অক্ষর ব্যবহার করার সময় 1960 এর পরিবর্তে 2009.18 বিট দেয় (এটি আরও তিনটি পয়েন্ট যা আমি ডেটাতে রাখতে পারি)। এবং ASCII ব্যবহার করার সময়, এটি আমাকে 840 এর পরিবর্তে 917.64 বিট দেয়।

আমি প্রাথমিক ইমেজ গণনার জন্য এমন একটি পদ্ধতির বিরুদ্ধে সিদ্ধান্ত নিয়েছি যাতে ভারী অস্ত্রের প্রয়োজন হবে (কোণার সনাক্তকরণ, বৈশিষ্ট্য নিষ্কাশন, রঙের পরিমাণ ...) কারণ আমি নিশ্চিত ছিলাম না যে এটি প্রথমে সত্যই সহায়তা করবে। এখন আমি বুঝতে পারি কনভারজেন্সটি ধীর (1 মিনিট গ্রহণযোগ্য তবে এটি ধীর হলেও) এবং আমি এটির উন্নতি করার চেষ্টা করতে পারি।

প্রধান ফিটিং লুপটি ডায়রিং বাইনারি সিচ ডাইরিং অ্যালগরিদম থেকে আলগাভাবে অনুপ্রাণিত হয় (যেখানে পিক্সেলগুলি এলোমেলোভাবে অদলবদল করা হয় বা আরও ভাল হাফটোন না পাওয়া পর্যন্ত উল্টানো থাকে)। শক্তির গণনাটি একটি সাধারণ মূল-বর্গ-দূরত্বের দূরত্ব, তবে আমি প্রথমে মূল চিত্রটিতে একটি 5x5 মিডিয়ান ফিল্টার সম্পাদন করি। গাউসিয়ান ব্লার সম্ভবত মানুষের চোখের আচরণকে আরও ভালভাবে উপস্থাপন করতে পারে তবে আমি তীক্ষ্ণ প্রান্তগুলি হারাতে চাইনি। আমি সিমুলেটেড অ্যানিলিং বা টিউন পদ্ধতিতে অন্যান্য অসুবিধার বিরুদ্ধেও সিদ্ধান্ত নিয়েছি কারণ প্রক্রিয়াটি ক্র্যাবিটেট করার জন্য আমার কাছে কয়েক মাস নেই। সুতরাং "মানের" পতাকাটি কেবল এনকোডার শেষ হওয়ার আগেই প্রতিটি পয়েন্টে সঞ্চালিত পুনরাবৃত্তির সংখ্যা উপস্থাপন করে।

http://caca.zoy.org/raw-attachment/wiki/img2twit/ Mona_Lisa_scaled.jpg http://caca.zoy.org/raw-attachment/wiki/img2twit/twitter2.png

苉 憗 揣 嶕 繠 剳 腏 篮 濕 茝 霮 墧 蒆 棌 杚 蓳 縳 樟 赒 肴 飗 噹 砃 燋 任 朓 峂 釰 靂 陴 貜 犟 掝 喗 讄 荛 砙 矺 敨 鷾 瓔 亨 髎 芟 氲 簵 鸬 嫤 鉸 俇激 躙 憮 鄴 甮 槺 骳 佛 愚 猪 駪 惾 嫥 綖 珏 矯 坼 堭 颽 箽 赭 飉 訥 偁 箝 窂 蹻 熛 漧 衆 橼 愀 航 玴 毡 裋 頢 羔 恺 墎 嬔 鑹 楄 瑥 鶼 呍 蕖 抲 鸝 秓苾 绒 酯 嵞 脔 婺 污 囉 酼 俵 菛 琪 棺 则 辩 曚 鸸 職 銛 蒝 礭 鱚 蟺 稿 纡 醾 陴 鳣 尥 蟀 惘 鋁 髚 忩 祤 脤 养 趯 沅 况

সমস্ত চিত্র ভালভাবে সংকুচিত না হলেও, আমি ফলাফলগুলি দ্বারা অবাক হয়েছি এবং আমি সত্যিই অবাক হয়ে দেখি যে অন্যান্য পদ্ধতিগুলি কী রয়েছে যা একটি চিত্রকে 250 বাইটে সংকোচিত করতে পারে।

আমার কাছে এলোমেলোনা রাজ্যের বিবর্তনের একটি ছোট্ট চলচ্চিত্র রয়েছে যা এলোমেলো প্রাথমিক অবস্থা এবং একটি "ভাল" প্রাথমিক অবস্থা থেকে

সম্পাদনা : সংক্ষেপণ পদ্ধতিটি কীভাবে JPEG এর সাথে তুলনা করে তা এখানে। বাম দিকে, জ্যামোর উপরে 536-বাইট ছবি। ডানদিকে, মোনা লিসা এখানে বর্ণিত পদ্ধতিটি ব্যবহার করে 534 বাইট সঙ্কুচিত হয়েছিলেন (এখানে উল্লিখিত বাইটগুলি ডেটা বাইটগুলি উল্লেখ করে, তাই ইউনিকোড অক্ষর ব্যবহার করে নষ্ট বিটগুলি উপেক্ষা করে):

http://caca.zoy.org/raw-attachment/wiki/img2twit/minimona.jpg http://caca.zoy.org/raw-attachment/wiki/img2twit/minimona2.png

সম্পাদনা করুন : সবেমাত্র চিত্রের সর্বাধিক সংস্করণ সহ সিজেকে পাঠ্য প্রতিস্থাপন করা হয়েছে।


কোডটি চালাতে আমার আসলেই সক্ষম হওয়ার দরকার নেই (আমি এটি নির্দেশাবলীতে চালানোর বিষয়ে অংশটি রেখেছি, পরামর্শ হিসাবে, বিধি নয়); আমি এটি চালাতে সক্ষম হতে পছন্দ করব, তবে আমি আপনার উত্পন্ন চিত্রগুলির কোড, কোড এবং আকর্ষণীয় কৌশল বা অ্যালগরিদমগুলির বিষয়ে আরও বিচার করব। যদি আমি এটি চালাতে চাই এবং এটির জন্য আমার প্রধান সিস্টেমে আমার কাছে নেই বা ইনস্টল করতে চাই না এমন প্যাকেজগুলির প্রয়োজন হয়, আমি কেবল একটি অ্যামাজন ইসি 2 উদাহরণটি বুট করে এটি ইনস্টল করতে পারি। আপনি যতক্ষণ লাইব্রেরিগুলির সাথে কাজ করছেন যেগুলি মুখ্য ডিস্ট্রোসের একটির জন্য প্যাকেজযুক্ত রয়েছে, আমার এটি চালানো উচিত should বিনামূল্যে সিজিএল ব্যবহার করুন।
ব্রায়ান ক্যাম্পবেল

2
ঠিক আছে, এখানে আমার সমাধান (উত্স কোড): caca.zoy.org/browser/libpipi/trunk/example/img2twit.cpp আমার ব্যাখ্যা করার প্রচেষ্টা এবং কয়েকটি উদাহরণ caca.zoy.org/wiki/img2twit
সাম হোসেভার

2
আমি আপনার সমাধানটি সত্যিই পছন্দ করি। আপনার চোখ নীল চ্যানেলে নির্ধারিত মানের সংখ্যা হ্রাস করার চেষ্টা করা উচিত কারণ মানুষের চোখ নীলকে খুব ভাল সমাধান করতে পারে না: nfggames.com/games/ntsc/visual.shtm ; এটি আপনাকে কিছু রঙিন তথ্য হারিয়ে যাওয়ার ব্যয়ে আরও বিশদ রাখতে দেয়। বা সম্ভবত এটি সবুজ বরাদ্দ?
রাপেটারিচ

5
ভাল যুক্তি. আমি এই ধারণার কয়েকটি প্রকরণ চেষ্টা করেছি (RANGE_X সংজ্ঞার আগে মন্তব্যগুলি দেখুন) তবে খুব ভালভাবে নয়। আপনি দেখতে পাচ্ছেন, 6 টির পরিবর্তে 5 টি নীল মান ব্যবহার করে ত্রুটিটি 7 টি সবুজ রঙের ব্যবহারের চেয়ে কিছুটা কম বেড়েছে it দু'জনেই অলসতার বাইরে যাওয়ার চেষ্টা করিনি। আমার আর একটি সমস্যা হ'ল আমার খুব ভাল ত্রুটি ফাংশন নেই। আমি বর্তমানে ∑ (²r² + ∆g² + ²b²) / 3 ব্যবহার করি যা ঠিক আছে। আমি YUV এর ওয়াই উপাদানটির উপর ভিত্তি করে (কোনও শারীরিক ন্যায়সঙ্গততা ছাড়াই) ∑ (0.299∆r² + 0.587∆g² + 0.114∆b²) চেষ্টা করেছি, তবে এটি নীল ত্রুটি সহ খুব সহনীয় ছিল। আমি এই সমস্যা সম্পর্কে কাগজপত্র সন্ধান করার চেষ্টা করব।
সাম হোচেভার

2
@ প্রিপরিচ: যতক্ষণ পর্যাপ্ত বিট পাওয়া যায় ততক্ষণ গতিশীলভাবে প্রোগ্রামটিকে আর / জি / বি রেঞ্জ বাড়ানোর জন্য আমি প্রোগ্রামটি পরিবর্তন করেছি। এটি নিশ্চিত করে যে আমরা কখনই পুরো বিটস্ট্রমে 13 টির বেশি বিট নষ্ট করি না (তবে বাস্তবে এটি সাধারণত 1 বা 2)। এবং চিত্রগুলি কিছুটা ভাল দেখাচ্ছে।
সাম হোচেভার

45

নিম্নলিখিতটি কোনও আনুষ্ঠানিক জমা নয়, যেহেতু আমার সফ্টওয়্যারটি কোনওভাবেই নির্দেশিত কাজের জন্য তৈরি করা হয়নি। ডিআইএলকে একটি অনুকূল উদ্দেশ্য হিসাবে ক্ষতিগ্রস্থ চিত্র কোডেক হিসাবে বর্ণনা করা যেতে পারে। এটি চিত্রের সংকোচনের জন্য পিএসএনআর এবং এমএস-এসএসআইএম রেকর্ডধারক এবং আমি ভেবেছিলাম যে এটি এই নির্দিষ্ট কাজের জন্য কীভাবে সম্পাদন করে তা দেখতে আকর্ষণীয় হবে। আমি সরবরাহ করা রেফারেন্স মোনা লিসা ইমেজটি ব্যবহার করে এটিকে ছোট করে 100x150 এ রেখেছি এবং 344 বাইটে সংকোচনের জন্য ডিএলআই ব্যবহার করেছি।

মোনা লিসা ডি এল এল http://i40.tinypic.com/2md5q4m.png

JPEG এবং IMG2TWIT সংক্ষেপিত নমুনাগুলির সাথে তুলনা করার জন্য, আমি ছবিটি 534 বাইটে সংকুচিত করতে DLI ব্যবহার করি। জেপিইজি 536 বাইট এবং আইএমজি 2 টিডব্লিউআইটি 534 বাইট। চিত্রগুলি সহজে তুলনা করার জন্য প্রায় একই আকার পর্যন্ত মাপানো হয়েছে। জেপিইজি হ'ল বাম চিত্র, আইএমজি 2 টিডব্লিউআইটি কেন্দ্রে এবং ডিএলআই হ'ল ডান চিত্র।

তুলনা http://i42.tinypic.com/302yjdg.png

ডিএলআই চিত্রটি মুখের বৈশিষ্ট্যগুলির কয়েকটি সংরক্ষণ করে, বিশেষত বিখ্যাত হাসি :) ages


6
উফ। উপরেরটি ডেনিস লিকে জমা দেওয়া উচিত, যিনি এটি মূলত জমা দিয়েছিলেন। আমি গুগলিংয়ের দ্বারা পাওয়া রেফারেন্সের চিত্রগুলি ইনলাইন এবং লিঙ্কটিতে এম্বেড করার জন্য এটি সম্পাদনা করেছি। এবং আমি অবশ্যই বলতে হবে, বাহ, আমি সংক্ষেপণ দ্বারা মুগ্ধ। আমাকে ডিএলআই সংক্ষেপণ পরীক্ষা করে দেখতে হবে।
ব্রায়ান ক্যাম্পবেল

1
যাইহোক, ডিএলআই লেখক একটি "দীর্ঘ প্রক্রিয়াজাতকরণের সময়" উল্লেখ করেছেন। আমি যেমন তার সফ্টওয়্যারটি চালাতে পারছি না, আপনি কি আমাদের মোটামুটি সংক্ষেপণের সময় নম্বর দিতে পারবেন?
সাম হোচেভার

1
একটি এএমডি অ্যাথলোন 2.৪.৪ গিগাহার্টজ ব্যবহার করে, ১০০x১৫০ মোনা লিসা চিত্রের সংকোচনে 38 সেকস এবং ডিকম্প্রেশন 6 সেকেন্ড লাগে। সর্বোচ্চ 251 বাইট সংকুচিত করা আরও শক্ত, আউটপুট গুণমান উল্লেখযোগ্যভাবে হ্রাস পেয়েছে। মোনা লিসা চিত্রটি রেফারেন্স ব্যবহার করে আমি এটিকে 60x91 এ কমিয়ে দিয়েছি এবং তারপরে এটি ডিএলআই ব্যবহার করে এটি 243 বাইট (251 না পেরে নিকটতম) এ সংকুচিত করতে ব্যবহার করেছি। এই আউটপুটটি i43.tinypic.com/2196m4g.png বিটরেট কেবল ~ 50% হ্রাস পেয়েছে যদিও বিবরণটি 534 বাইট ডিএলআইয়ের কাছে নেই। চিত্রটির কাঠামোটি যদিও বেশ ভালভাবে রক্ষণাবেক্ষণ করা হয়েছে।

1
250 বাইট সংক্ষেপিত নমুনাগুলি তুলনা করা আরও সহজ করার সিদ্ধান্ত নিয়েছে। 243 বাইট ডিএলআইকে ছোট করে IMG2TWIT নমুনার পাশে স্থাপন করা হয়েছিল beside বামদিকে IMG2TWIT, ডানদিকে DLI এখানে চিত্রটি আই 40.tinypic.com/30ndks6.png

1
ডিআইএলি জেপিইগির মতো মানের প্যারামিটার ব্যবহার করে, তাই যদি টার্গেট আউটপুট আকার পছন্দ হয় তবে ট্রায়াল-অ্যান্ড-ত্রুটি দরকার।

21

আমার সমাধানটির সাধারণ সংক্ষিপ্ত বিবরণ হবে:

  1. আমি সর্বোচ্চ পরিমাণে কাঁচা ডেটা গণনা করে শুরু করি যা আপনি 140 ইউটিএফ 8 টি অক্ষরের সাথে মানিয়ে নিতে পারেন।
    • (আমি ইউটিএফ 8 ধরে নিচ্ছি, এটিই মূল ওয়েবসাইটটি দাবি করেছিল যে টুইটারটি তার বার্তাগুলি সংরক্ষণ করেছে This এটি উপরের সমস্যার বিবৃতি থেকে পৃথক, যা utf16 এর জন্য জিজ্ঞাসা করে))
    • এই utf8 FAQ ব্যবহার করে , আমি গণনা করি যে আপনি একক utf8 অক্ষরটিতে এনকোড করতে পারবেন এমন বিটগুলির সর্বাধিক সংখ্যা 31 বিট। এটি করার জন্য, আমি U-04000000 - U-7FFFFFFF সীমার সমস্ত অক্ষর ব্যবহার করব। (1111110x 10XXXXX 10XXXXX 10XXXX 10XXXX 10Xxxxxxx, এখানে 31 x এর রয়েছে, তাই আমি 31 বিট পর্যন্ত এনকোড করতে পারি)।
    • 31 বিট বার 140 অক্ষর সমান 4340 বিট। 524.5 পেতে 8 কে ভাগ করুন এবং এটি 542 বাইটে গোল করুন ।
    • (যদি আমরা নিজেকে ইউএফ 16 এ সীমাবদ্ধ রাখি তবে আমরা কেবল অক্ষর প্রতি 2 বাইট সঞ্চয় করতে পারতাম, যা 280 বাইটের সমান হবে)।
  2. স্ট্যান্ডার্ড জেপিজি সংকোচনের সাহায্যে চিত্রটি নীচে সঙ্কুচিত করুন।
    • চিত্রটিকে প্রায় 50x50px আকারে আকার দিন, তারপরে আপনার কোনও চিত্র না আসা পর্যন্ত এটি বিভিন্ন সংকোচনের স্তরে সংক্ষেপণের চেষ্টা করুন যতক্ষণ না 54৪২ বাইটের কাছাকাছি যেতে পারে।
    • এটি মোনা লিসার একটি উদাহরণ যা 536 বাইটে নিচে সংকুচিত হয়েছে।
  3. সংক্ষেপিত চিত্রের কাঁচা বিটগুলিকে utf-8 টি অক্ষরে এনকোড করুন।
    • প্রতিটি এক্সকে নিম্নলিখিত বাইটে প্রতিস্থাপন করুন: চিত্রের বিটগুলির সাথে 1111110x 10XXXX 10XXXXXXXXXX 10XXXX 10xxxxxx
    • এই অংশটি সম্ভবত সেই অংশটি হবে যেখানে সংখ্যাগরিষ্ঠ কোডটি লেখার প্রয়োজন ছিল, কারণ বর্তমানে বিদ্যমান কিছু নেই যা এটি করে।

আমি জানি যে আপনি কোড চেয়েছিলেন, তবে আমি আসলে এটি কোড করার জন্য সময় ব্যয় করতে চাই না। আমি অনুভব করেছি যে একটি দক্ষ নকশা কমপক্ষে অন্য কাউকে এটি কোড করার জন্য অনুপ্রাণিত করতে পারে।

আমি মনে করি আমার প্রস্তাবিত সমাধানের সবচেয়ে বড় সুবিধাটি এটি যতটা সম্ভব বিদ্যমান প্রযুক্তি পুনরায় ব্যবহার করছে। একটি ভাল সংক্ষেপণ অ্যালগরিদম লেখার চেষ্টা করা মজাদার হতে পারে, তবে সেখানে আরও ভাল অ্যালগরিদম হওয়ার নিশ্চয়তা রয়েছে, সম্ভবত উচ্চতর গণিতের ডিগ্রি প্রাপ্ত ব্যক্তিরা লিখেছেন।

অন্য একটি গুরুত্বপূর্ণ নোট যদিও এটি যদি সিদ্ধান্ত নেওয়া হয় যে utf16 পছন্দসই এনকোডিং, তবে এই সমাধানটি পৃথক হয়ে যায়। 280 বাইট নিচে সংকুচিত হলে jpegs সত্যিই কাজ করে না। যদিও, সম্ভবত এই নির্দিষ্ট সমস্যা বিবরণের জন্য jpg এর চেয়ে আরও ভাল সংক্ষেপণ অ্যালগরিদম রয়েছে।


আমি এখন কাজে নিচ্ছি, তবে আমি ঘরে পৌঁছে আমি এই সমাধানটি সুনির্দিষ্টভাবে প্রয়োগ করছি।
পাওলো

2
আমার পরীক্ষা-নিরীক্ষা থেকে দেখা যাচ্ছে যে ইউটিএফ -16 আসলে টুইটার কীভাবে অক্ষর গণনা করে; বিএমপি অক্ষরগুলি 1 হিসাবে গণনা করা হয় এবং উচ্চতর প্লেনের অক্ষরগুলি 2 হিসাবে গণনা করা হয় It এটি নথিভুক্ত করা হয় না তবে আপনি যখন ইনপুট বাক্সে টাইপ করেন তখন তাদের জাভাস্ক্রিপ্টের চরিত্রের কাউন্টার গণনা করা হয়। এটি মূল থ্রেডের মন্তব্যেও উল্লেখ করা হয়েছে। কাউন্টারটি ভেঙে গেছে কিনা তা দেখার জন্য আমি এপিআইয়ের মাধ্যমে জমা দেওয়ার চেষ্টা করিনি; যদি তা হয় তবে আমি আসল সীমাবদ্ধতার জন্য সমস্যাটি আপডেট করব। তবে আপনি যথেচ্ছ ইউটিএফ -8 ব্যবহার করতে সক্ষম হবেন না, যেহেতু আপনি এনকোড করতে পারবেন এমন দীর্ঘতর ক্রমগুলির অনেকগুলি বৈধ ইউনিকোড নয়।
ব্রায়ান ক্যাম্পবেল

4
তাদের এপিআই দিয়ে পরীক্ষা করার পরে দেখা গেছে যে তারা ইউনিকোড অক্ষর (কোড পয়েন্ট) অনুসারে গণনা করেছেন, ইউটিএফ -16 কোড ইউনিট নয় (এটি জাভা স্ক্রিপ্টের অক্ষরের সাথে জড়িত যা ইউটিএফ -16 এর মাধ্যমে গণনা করা হয়েছে, যেহেতু সম্ভবত জাভাস্ক্রিপ্ট দৈর্ঘ্যের পদ্ধতিটি তাই করে) । সুতরাং আপনি সেখানে আরও কিছু তথ্য পেতে পারেন; বৈধ ইউনিকোড অক্ষরগুলি ইউ +0000 থেকে ইউ + 10 এফএফএফ-এর পরিসীমা (অক্ষরের প্রতি 20 বিটের চেয়ে কিছুটা বেশি; 2 ^ 20 + 2 ^ 16 অক্ষরের প্রতি সম্ভাব্য মান)। হল UTF-8 আপনি, না 542. স্থান বাইট 350 পেতে পারেন তুলনায় ইউনিকোড অনুমতি দেওয়া হয় আরও মূল্যবোধের এনকোডিং পারবেন, তাই আপনি যদি নিজেকে ইউনিকোড সীমিত,
ব্রায়ান ক্যাম্পবেল

3
চরম সংকোচনের ফলে, 536-বাইট মোনা লিসা আশ্চর্যজনকভাবে দুর্দান্ত দেখাচ্ছে!
ক্রিস

3
আমরা বর্তমানে 129,775 টি আলাদা (নির্ধারিত, নিয়ন্ত্রণহীন, বেসরকারী) ইউনিকোড অক্ষরগুলি এনকোড করতে পারি। যদি আমরা সেই উপসেটটিতে নিজেকে সীমাবদ্ধ রাখি তবে এটি মোট 2377 বিট বা 297 বাইট। এখানে কোড: porg.es/blog/
কি-

20

ঠিক আছে, আমি খেলায় দেরি করে ফেলেছি, তবুও আমি আমার প্রকল্পটি তৈরি করেছি।

এটি একটি খেলনা জেনেটিক অ্যালগরিদম যা প্রাথমিক চিত্রটি পুনরায় তৈরি করতে স্বচ্ছ রঙিন চেনাশোনাগুলি ব্যবহার করে।

বৈশিষ্ট্য:

  • খাঁটি লুয়া যেখানে কোনও লুয়া ইন্টারপ্রেটার চালায় সেখানেই চলে।
  • নেটপবিএম পি 3 ফর্ম্যাট ব্যবহার করে
  • ইউনিট পরীক্ষার একটি বিস্তৃত স্যুট সহ আসে
  • মূল চিত্রের আকার সংরক্ষণ করে

ভুল feautres:

  • ধীর
  • এই জায়গার সীমাবদ্ধতায় এটি কেবল প্রাথমিক চিত্রের প্রাথমিক রঙের স্কিম এবং এর কয়েকটি বৈশিষ্ট্যের একটি সাধারণ রূপরেখা সংরক্ষণ করে।

লেনাকে উপস্থাপন করে এমন একটি উদাহরণ টুইট: এখানে 楊岂 掂 戇 耔 攋 斘 眐 奡 萛 狂 昸 箆 亲 嬎 廙 栃 兡 塅 受 橯 恰 应 戞 优 猫 僘 瑩 吱 賾 卣 朸 杈 腠 綍 蝘 猕 屐 稱 悡 ​​詬 來 噩 压 罍 尕 熚 帤 厥 虤 嫐虲 兙 罨 縨 炘 排 叁 抠 堃 從 弅 慌 螎 熰 標 宑 簫 柢 橙 拃 丨 蜊 缩 昔 儻 舭 勵 癳 冂 囤 璟 彔 榕 兠 摈 侑 蒖 孂 埮 槃 姠 璐 哠 眛 嫡 琠 枀 訜 苄 暬厇 廩 焛 瀻 严 啘 刱 垫 仔

আসল লেনা এনকোড লেনা

কোডটি বিটবুকিট.আর.জে একটি মার্চুয়াল রিপোজিটরিতে রয়েছে। পরীক্ষা করে দেখুন http://bitbucket.org/tkadlubo/circles.lua


2
অসাধারণ! ঝরঝরে, শৈল্পিক দেখাচ্ছে চিত্র তৈরি করে। আমি আনন্দিত লোকেরা এখনও এ নিয়ে কাজ করছে; এটি বিভিন্ন পদ্ধতির সমস্ত দেখতে মজাদার ছিল।
ব্রায়ান ক্যাম্পবেল

1
বোকেহ এফেক্টের মতো কিছু দিয়ে আসলটির উপরে এটি স্বচ্ছ ওভারলেয়ের মতো দেখতে দেখতে চাই।
নিক র‌্যাডফোর্ড

19

সমস্যাটির প্রতি আমার দৃষ্টিভঙ্গিটি নীচে দেওয়া হল এবং আমি অবশ্যই স্বীকার করব যে এটি কাজ করার জন্য এটি একটি আকর্ষণীয় প্রকল্প ছিল, এটি অবশ্যই আমার স্বাভাবিক কাজের ক্ষেত্রের বাইরে এবং আমাকে শিখতে নতুন কিছু দিয়েছে।

আমার পিছনে মূল ধারণাটি নিম্নরূপ:

  1. চিত্রটি ধূসর-স্কেল ডাউন-স্যাম্পল করুন যাতে মোট 16 টি বিভিন্ন শেড রয়েছে
  2. চিত্রটিতে আরএলই প্রিফর্ম করুন
  3. ফলাফলগুলি ইউটিএফ -16 অক্ষরে প্যাক করুন
  4. অক্ষরের কোনও সদৃশ অপসারণ করতে প্যাকড ফলাফলগুলিতে আরএলই প্রিফর্ম করুন

দেখা যাচ্ছে যে এটি কাজ করে তবে কেবলমাত্র নীচের নমুনা চিত্রগুলি থেকে আপনি দেখতে পাচ্ছেন এমন একটি সীমিত পরিমাণে। আউটপুট শর্তাবলী, নিম্নলিখিত কি একটি নমুনা টুইট, বিশেষত নমুনায় প্রদর্শিত লেনা ইমেজ জন্য।

乤 乤 万 乐 唂 伂 倂 倁 企 儂 2 企 倁 3 企 倁 2 企 伂 8 企 伂 3 企 伂 5 企 倂 倃 伂 倁 3 企 儁 企 2 伂 倃 5 企 倁 3 企 倃 4 企 倂 企 倁 企伂 2 企 伂 5 企 倁 企 伂 쥹 皗 鞹 鐾 륶 䦽 阹 럆 䧜 椿 籫 릹 靭 욶 옷뎷 歩 㰷 歉 䴗 鑹 㞳 鞷 㬼 獴 鏙 돗 鍴 祳 㭾 뤶 殞 焻 乹 Ꮛ 靆 䍼

আপনি দেখতে পাচ্ছেন, আমি চেষ্টা করেছি এবং অক্ষরটিকে কিছুটা সেট করে ফেললাম; যাইহোক, আমি ইমেজ রঙের ডেটা সংরক্ষণ করার সময় এটি করতে সমস্যাগুলিতে ছুটে এসেছি। এছাড়াও, এই এনকোডিং স্কিমটি অতিরিক্ত কিছু চিত্রের তথ্যের জন্য ব্যবহৃত হতে পারে এমন একগুচ্ছ ডেটার বিটগুলি নষ্ট করে।

রান টাইমের ক্ষেত্রে, ছোট চিত্রগুলির জন্য কোডটি অত্যন্ত দ্রুত, প্রদত্ত নমুনা চিত্রগুলির জন্য প্রায় 55 মিমি, তবে বৃহত্তর চিত্রগুলির সাথে সময়টি বৃদ্ধি পায়। 512x512 লেনার রেফারেন্স চিত্রের জন্য চলমান সময় ছিল 1182 মিমি। আমার লক্ষ করা উচিত যে প্রতিক্রিয়াগুলি বেশ ভাল যে কোডটি কার্য সম্পাদনের জন্য খুব অনুকূল নয় (যেমন বিটম্যাপ হিসাবে সবকিছুই কাজ করা হয় ) যাতে কিছুটা রিফ্যাক্টরিংয়ের পরে সময়টি কিছুটা কমতে পারে।

আমি কী আরও ভাল করতে পারলাম বা কোডটির সাথে কী ভুল হতে পারে সে সম্পর্কে কোনও পরামর্শ দেওয়ার জন্য নির্দ্বিধায় আমাকে দয়া করুন। রান সময় এবং নমুনা আউটপুটের সম্পূর্ণ তালিকাটি নিম্নলিখিত স্থানে পাওয়া যাবে: http://code-zen.info/twitterimage/

আপডেট এক

আমি টুইটারের স্ট্রিংটি সঙ্কলন করার সময় ব্যবহৃত আরএলই কোডটি আপডেট করেছি একটি প্রাথমিক চেহারা ফিরে করতে এবং যদি তাই হয় তবে আউটপুটটির জন্য এটি ব্যবহার করি। এটি কেবল সংখ্যার মান জোড়ের জন্য কাজ করে তবে এটি কয়েকটি অক্ষরের ডেটা সংরক্ষণ করে। চলমান সময়টি কমবেশি একই সাথে চিত্রের মানের মতো, তবে টুইটগুলি কিছুটা ছোট হয়। আমি পরীক্ষাটি শেষ করার সাথে সাথে ওয়েবসাইটে চার্টটি আপডেট করব। লেনার ছোট সংস্করণের জন্য পুনরায় টুইট বার্তাগুলির মধ্যে একটি যা অনুসরণ করে:

乤 乤 万 乐 唂 伂 倂 倁 企 儂 2 企 倁 3 企 倁 ウ 伂 8 企 伂 エ 伂 5 企 倂 倃 伂 倁 グ 儁 企 2 伂 倃 ガ 倁 ジ 倃 4 企 倂 企 倁 企 伂 ツ 伂 ス 倁企 伂 쥹 皗 鞹 鐾 륶 䦽 阹 럆 䧜 椿 籫 릹 靭 욶 옷뎷 歩 㰷 歉 䴗 鑹 㞳 鞷 㬼 獴 鏙 돗 鍴 祳 㭾 뤶 殞 焻 乹 Ꮛ 靆 䍼

আপডেট দুটি

আরেকটি ছোট আপডেট, তবে আমি রঙের শেডগুলিকে চারটির বিপরীতে তিনটি গ্রুপে প্যাক করতে কোডটি সংশোধন করেছি, এতে আরও কিছু জায়গা ব্যবহার করা হয়েছে, তবে আমি কিছু অনুপস্থিত না হওয়া পর্যন্ত এর অর্থ হওয়া উচিত যে রঙ যেখানে "বিজোড়" অক্ষর আর উপস্থিত হবে না তথ্য হয়। এছাড়াও, আমি কমপ্রেসটিকে আরও কিছুটা আপডেট করেছি যাতে এটি এখন কেবল রঙের গণনা ব্লকের বিপরীতে পুরো স্ট্রিংয়ের উপরে কাজ করতে পারে। আমি এখনও রান সময় পরীক্ষা করছি, তবে তারা নামমাত্র উন্নত বলে মনে হচ্ছে; তবে চিত্রের মানটি এখনও একইরকম। এরপরে লেনার টুইটের নতুন সংস্করণটি দেওয়া হল:

2 乤 万 乐 唂 伂 倂 倁 企 儂 2 企 倁 3 企 倁 ウ 伂 8 企 伂 エ 伂 5 企 倂 倃 伂 倁 グ 儁 企 2 伂 倃 ガ 倁 ジ 倃 4 企 倂 企 倁 企 伂 ツ 伂 ス 倁企 伂 坹 坼 坶 坻 刾 啩 容 力 吹 婩 媷 劝 圿 咶 坼 妛 啭 奩 嗆 婣 冷 咛 啫 凃 奉 佶 坍 均 喳 女 媗 决 兴宗 喓 夽 兴 唹 屹 冷 圶 埫 奫 唓 坤 喝 奎 似商 嗉 乃

স্ট্যাকওভারফ্লো লোগো http://code-zen.info/twitterimage/images/stackoverflow-logo.bmp কর্নেল বক্স http://code-zen.info/twitterimage/images/cornell-box.bmp লেনা http: // কোড-জেন .info / টুইটারিমেজ / চিত্র / lena.bmp মোনা লিসা http://code-zen.info/twitterimage/images/mona-lisa.bmp


1
দুর্দান্ত, প্রবেশের জন্য ধন্যবাদ! গ্রেস্কেল আসলে এগুলির বেশিরভাগের পক্ষে মোটামুটি ভাল কাজ করে, যদিও লেনা তৈরি করা কিছুটা কঠিন। আমি আপনার উত্স সন্ধান করছি কিন্তু একটি 404 পেয়েছি; আপনি নিশ্চিত করতে পারেন যে এটা এখানে আছে?
ব্রায়ান ক্যাম্পবেল

এখনই এটি দুবার পরীক্ষা করে দেখুন, আমি সাইটটি আপডেট করছি যাতে আপনি আমাকে আপডেটের মধ্যে ধরতে পারেন।
rjzii

হ্যাঁ, আমি এখন এটি ডাউনলোড করতে পারি। এখন অবশ্যই আমি এটি নির্ধারণ করতে হবে যে আমি এটি সংকলনের জন্য মনো পেতে পারি কিনা।
ব্রায়ান ক্যাম্পবেল

হাঁ! মনো এর অধীনে কাজ করে, আমি "gmcs -r System.Drawing TwitterImage.cs প্রোগ্রাম.cs" সংকলন করেছি এবং "মনো টুইটারইমেজ.এক্সই এনকোড লেনা.পিএনজি লেনা টেক্সট" দিয়ে চালাচ্ছি
ব্রায়ান ক্যাম্পবেল

শান্ত! আমি যে লাইব্রেরিগুলি ব্যবহার করছিলাম সেগুলি মনোর জন্য তালিকাভুক্ত ছিল তা নিশ্চিত করার জন্য আমি ডাবল চেক করেছি, তবে আমি এখনও মনোর সাথে এখনও কাজ করি নি তাই এটি নিশ্চিত কিনা তা নিশ্চিত ছিলাম না যে তা হবে কিনা।
rjzii

15

রজার আলসিং লিখেছেন যে এই জেনেটিক অ্যালগরিদম দীর্ঘ সংকোচনের সময় ব্যয় করে একটি ভাল সংক্ষেপণ অনুপাত রয়েছে। উল্লম্বের ফলস্বরূপ ভেক্টরটি একটি ক্ষতিকারক বা ক্ষতিহীন অ্যালগরিদম ব্যবহার করে আরও সংকুচিত হতে পারে।

http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/

বাস্তবায়ন করার জন্য একটি আকর্ষণীয় প্রোগ্রাম হবে, তবে আমি এটি মিস করব।


12

মূল চ্যালেঞ্জে আকারের সীমাটি এমন হিসাবে সংজ্ঞায়িত করা হয় যে টুইটার এখনও আপনাকে কী পাঠাতে দেয় যদি আপনি তাদের পাঠ্যবক্সে টেক্সট আটকান এবং "আপডেট" টিপেন। কিছু লোক সঠিকভাবে লক্ষ্য করেছে যে আপনি এটি আপনার মোবাইল থেকে এসএমএস পাঠ্য বার্তা হিসাবে পাঠাতে পারবেন তার থেকে আলাদা।

যা স্পষ্টভাবে উল্লেখ করা হয়নি (তবে আমার ব্যক্তিগত নিয়মটি কী ছিল) তা হ'ল আপনার ব্রাউজারে টুইট করা বার্তাটি নির্বাচন করতে সক্ষম হওয়া উচিত, এটি ক্লিপবোর্ডে অনুলিপি করতে এবং আপনার ডিকোডারের একটি পাঠ্য ইনপুট ক্ষেত্রে এটি আটকানো যাতে এটি প্রদর্শিত হয়। অবশ্যই আপনি বার্তাটি একটি টেক্সট ফাইল হিসাবে সংরক্ষণ করতে এবং এটিকে আবার পড়তে বা কোনও সরঞ্জাম লিখতে পারেন যা টুইটার এপিআই অ্যাক্সেস করে এবং কোনও বার্তা ফিল্টার করে যা কোনও চিত্রের কোডের মতো দেখায় (বিশেষ চিহ্নিতকারী কেউ? উইঙ্ক উইঙ্ক )। তবে নিয়মটি হ'ল বার্তাটি আপনাকে ডিকোড করার অনুমতি দেওয়ার আগে টুইটারের মধ্য দিয়ে যেতে হয়েছিল।

350 বাইটের জন্য শুভকামনা - আমি সন্দেহ করি যে আপনি সেগুলি ব্যবহার করতে সক্ষম হবেন।


1
হ্যাঁ, আমি একটি স্কোরিং রুব্রিক যুক্ত করেছি যা নির্দেশ করে যে চরিত্রের সেটগুলিতে কঠোর বিধিনিষেধগুলি পছন্দ করা হয় তবে প্রয়োজনীয় নয় required আমি এমন একটি নিয়ম রাখতে চাই যাতে বার্তাগুলি অনাবৃত না হয়ে বার্তাগুলি অতিক্রম করতে হয় তবে এটি কী কাজ করে তার সুনির্দিষ্ট বিবরণ বের করতে অনেক পরীক্ষা এবং ত্রুটি লাগবে এবং আমি সৃজনশীল ব্যবহারের অনুমতি দেওয়ার জন্য কিছুটা ছাড়তে চেয়েছিলাম কোড স্থান। সুতরাং, আমার চ্যালেঞ্জের একমাত্র প্রয়োজন হ'ল 140 বৈধ ইউনিকোড অক্ষর। যাইহোক, থামার জন্য ধন্যবাদ! আমি আপনার সমাধানটি সত্যই পছন্দ করি এবং এটি দেখতে চাই যে কিবিটজারগুলির মধ্যে এটির কোনও উন্নতি করতে পারে।
ব্রায়ান ক্যাম্পবেল

12

মনোক্রোম বা গ্রেস্কেল চিত্র পোস্ট করা সেই চিত্রের আকারটিকে উন্নত করা উচিত যা আপনি সেই জায়গার মধ্যে এনকোড করতে পারবেন যেহেতু আপনি রঙের বিষয়ে চিন্তা করেন না।

সম্ভবত প্রতিটি পৃথক চিত্রের একরঙা সংস্করণ বজায় রেখে তিনটি চিত্র আপলোড করার চ্যালেঞ্জটি বাড়িয়ে দেওয়া হয়েছে যা পুনরায় সংযুক্ত হয়ে আপনাকে পুরো রঙের চিত্র দেয়।

উপরের দিকে কিছু সংকোচনের যোগ করুন এবং এটি কার্যকর হিসাবে দেখা শুরু করতে পারে ...

নিস !!! আপনারা এখন আমার আগ্রহ প্রকাশ করেছেন p সারা দিন কোনও কাজ করা হবে না ...


9
এস / পিক /
পিকিড

1
আমি তিনটি চিত্রের ধারণা পছন্দ করি, টুইটারে এই জাতীয় ধারণাটি বাস্তবায়ন করা উচিত এবং ফলাফলটি বেশ ভাল হবে।
মাকিস

9

এই চ্যালেঞ্জের এনকোডিং / ডিকোডিং অংশ সম্পর্কিত। বেস 16b.org উচ্চতর ইউনিকোড প্লেনে নিরাপদে এবং দক্ষতার সাথে বাইনারি ডেটা এনকোড করার জন্য একটি স্ট্যান্ডার্ড পদ্ধতি নির্দিষ্ট করার জন্য আমার প্রচেষ্টা।

কিছু বৈশিষ্ট্য:

  • শুধুমাত্র ইউনিকোডের ব্যক্তিগত ব্যবহারকারীর ক্ষেত্রগুলি ব্যবহার করে
  • অক্ষর প্রতি 17 বিট পর্যন্ত এনকোড; বেস 64 এর চেয়ে প্রায় তিনগুণ বেশি দক্ষ
  • এনকোড / ডিকোডের জাভাস্ক্রিপ্ট প্রয়োগের একটি রেফারেন্স সরবরাহ করা হয়েছে
  • টুইটার এবং ওয়ার্ডপ্রেস সহ কয়েকটি নমুনা এনকোডিং অন্তর্ভুক্ত রয়েছে

দুঃখিত, আসল প্রতিযোগিতার জন্য এই উত্তরটি অনেক দেরিতে এসেছে। আমি এই পোস্টটির বাইরে স্বাধীনভাবে এই প্রকল্পটি শুরু করেছি, যা আমি এটির অর্ধ-পথ আবিষ্কার করেছি।


8

একগুচ্ছ রেফারেন্স চিত্রগুলি সংরক্ষণ করার ধারণাটি আকর্ষণীয়। 25Mb স্যাম্পল ইমেজ বলার জন্য এটি কী ভুল হবে, এবং এনকোডারটি সেগুলির বিট ব্যবহার করে কোনও চিত্র রচনা করার চেষ্টা করতে পারে? এই জাতীয় বিয়োগকারক পাইপের সাহায্যে, উভয় প্রান্তে প্রয়োজনীয় যন্ত্রাংশটি কম্পিউটারের মধ্য দিয়ে যাওয়া ডেটা ভলিউমের চেয়ে অনেক বড় হতে চলেছে, তাই কোডের 25Mb, এবং 1Mb কোড এবং চিত্রের 24Mb এর মধ্যে পার্থক্য কী?

(নোটিকাগুলি ইতিমধ্যে লাইব্রেরিতে থাকা চিত্রগুলিতে ইনপুট সীমাবদ্ধ রাখার বিষয়টি বাতিল করে দেখুন - আমি এটি প্রস্তাব দিচ্ছি না)।


1
এটি সূক্ষ্ম হবে, যতক্ষণ না আপনার উভয় প্রান্তে নির্দিষ্ট পরিমাণের ডেটা থাকবে। অবশ্যই, আপনাকে দেখানোর দরকার হবে যে এটি কোনও চিত্র পরিসংখ্যানগত প্রাকৃতিক ভাষা প্রক্রিয়া সমস্যার মতোই প্রশিক্ষণ সংস্থায় নেই এমন চিত্রগুলির সাথে কাজ করে। আমি এমন কিছু দেখতে চাই যা চিত্রের এনকোডিংয়ের ক্ষেত্রে একটি পরিসংখ্যানিক দৃষ্টিভঙ্গি গ্রহণ করে।
ব্রায়ান ক্যাম্পবেল

16
আমি, একের জন্য, সোনা হিসাবে কেবল বোবা ফেট ফ্যান আর্ট ব্যবহার করে মোনা লিসা পুনরায় কাজ করতে দেখতে চাই।
নোসারেডা

আমি সম্মত - ফোটোমোসাইক পদ্ধতিটি নিয়মের মধ্যে রয়েছে বলে মনে হচ্ছে এবং কাউকে ছুরিকাঘাত করা দেখে চিত্তাকর্ষক হবে।
অ্যানড্রু

8

বোকা ধারণা, তবে sha1(my_image)কোনও চিত্রের "নিখুঁত" উপস্থাপনের ফলে ঘটতে পারে (সংঘর্ষগুলি উপেক্ষা করে)। সুস্পষ্ট সমস্যা হ'ল ডিকোডিং প্রক্রিয়াটির জন্য নিরঙ্কুশ পরিমাণে ব্রুট-জোর করা প্রয়োজন ..

1-বিট একরঙাটি কিছুটা সহজ হবে .. প্রতিটি পিক্সেল 1 বা 0 হয়ে যায়, তাই আপনার 100 * 100 পিক্সেলের চিত্রের জন্য 1000 বিট ডেটা থাকবে। যেহেতু SHA1 হ্যাশটি 41 টি অক্ষর, তাই আমরা একটি বার্তায় তিনটি ফিট করতে পারি, কেবলমাত্র 3333 বিটের 2 সেট এবং 3334 এর একটি সেটকে জোর করে চাপাতে হয় (যদিও এটি সম্ভবত এখনও অদ্বিতীয়)

এটি ঠিক ব্যবহারিক নয় practical এমনকি নির্ধারিত দৈর্ঘ্যের 1-বিট 100 * 100px চিত্রটি এখানে রয়েছে .. ধরে নিয়েছি, আমি বিভ্রান্তি করছি না, 49995000 সংমিশ্রণগুলি বা 16661667 তিনটি ভাগে ভাগ করা হয়েছে।

def fact(maxu):
        ttl=1
        for i in range(1,maxu+1):
                ttl=ttl*i
        return ttl

def combi(setsize, length):
    return fact(length) / (fact(setsize)*fact(length-setsize))

print (combi(2, 3333)*2) + combi(2, 3334)
# 16661667L
print combi(2, 10000)
# 49995000L

10
Sha1 (my_image) এর সমস্যাটি হ'ল আপনি যদি নিজের সময়টিকে জোর করে ব্যয় করেন, তবে আসল চিত্রটি খুঁজে পাওয়ার আগে আপনি সম্ভবত মানুষকে অনেক সংঘর্ষের সন্ধান করতে পারেন; এবং অবশ্যই নিষ্ঠুরভাবে sha1 জোরপূর্বক কম্পিউটেশনালভাবে অক্ষম।
ব্রায়ান ক্যাম্পবেল

5
SHA1 সংক্ষেপণের চেয়ে আরও ভাল: আমার "ফ্লিকার" সংক্ষেপণ অ্যালগরিদম! পদক্ষেপ 1: ফ্লিকারে চিত্র আপলোড করুন। পদক্ষেপ 2: এটিতে একটি লিঙ্ক টুইটারে পোস্ট করুন। Tadda! মাত্র 15 বাইট ব্যবহার!
নিক্সর

2
নিক্সার: না, নিয়ম ৩.৪: "ডিকোডিং প্রক্রিয়াটির উপরে উল্লিখিত আউটপুট ব্যতীত অন্য এনকোডিং প্রক্রিয়াটির অন্য কোনও আউটপুট অ্যাক্সেস থাকতে পারে না, অর্থাৎ আপনি কোথাও চিত্রটি আপলোড করতে পারবেন না এবং ডিকোডিং প্রক্রিয়াটির জন্য URL আউটপুট দিতে পারবেন না ডাউনলোড করুন, বা এর মতো নির্বোধ কিছু। "
ডিবিআর

6
আমি জানি, আমি ব্যঙ্গাত্মক ছিল।
নিক্সর


0

আইডিয়া: আপনি একটি প্যালেট হিসাবে একটি ফন্ট ব্যবহার করতে পারেন? একটি ভেক্টরকে ভেক্টর সেটগুলির সংমিশ্রণ (প্রতিটি চরিত্রটি মূলত ভেক্টরগুলির একটি সেট) এর সংমিশ্রণ দিয়ে বর্ণনা করার চেষ্টা করে একটি ধারাবাহিক ভেক্টরগুলিতে একটি চিত্র ভাঙার চেষ্টা করুন। এটি ফন্টটি অভিধান হিসাবে ব্যবহার করছে। আমি উদাহরণস্বরূপ একটি উল্লম্ব রেখার জন্য একটি এবং একটি - একটি অনুভূমিক রেখার জন্য ব্যবহার করতে পারি? শুধু একটি ধারণা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.