বোকেহ অনুকরণ করতে আমি কোন অ্যালগরিদম ব্যবহার করতে পারি?


12

আমি এমন একটি স্ক্রিপ্ট লেখার চেষ্টা করছি যা প্রতিটি পিক্সেলের মাধ্যমে একটি ফটোগুলিতে লুপ করে এবং পুরো চিত্রটিতে একটি বোকেহ প্রয়োগ করে।

আমি এই লিঙ্কটি বন্ধ করে একটি স্ক্রিপ্ট তৈরি করেছি , তবে এটি হ্যাক বলে মনে হচ্ছে।

আমার কাছে তিনটি ইনপুট চিত্র রয়েছে: একটি কালো এবং সাদা গভীরতার মানচিত্র, একটি ফটোগ্রাফ এবং একটি বোকেহ "ব্রাশ" চিত্র (যা বর্তমানে ষড়ভুজ)। ছবিটির প্রতিটি পিক্সেলের জন্য আমি বোকেহ ব্রাশটি স্ট্যাম্প করি যাতে এটি পিক্সেল এবং সেই পিক্সেলের রঙে থাকে।

দেখে মনে হচ্ছে ... ছোট বোকেহ ব্রাশগুলিতে ঠিক আছে, তবে আমি একবার বোকেহ ব্রাশের আকারটি বাড়িয়ে দিলে এটি গাউসিয়ান ব্লারের মতো দেখতে শেষ হয়। এখানে আমার অ্যালগোরিদমের সাথে অস্পষ্ট বারের ছবি রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

অন্ধকার প্রান্তগুলি মনে রাখবেন না, আমি এটি ঠিক করতে পারি।

আপনি এটিকে গাউসের থেকে আলাদা বলতে বাছাই করতে পারেন তবে এটি এখনও চূড়ান্ত প্রান্ত সহ বোকেহ নামে অভিহিত হতে পারে তার থেকে অনেক দূরে:

এখানে চিত্র বর্ণনা লিখুন

আমি বুঝতে পারি কেন আমার অ্যালগোরিদম এটি করে কেন ... আমি কীভাবে আরও সঠিকভাবে একটি বোকেহ অনুকরণ করতে পারি?



@ আমি এই পার্থক্যগুলি বুঝতে পেরেছি এবং বোকেহ সাধারণত লেন্সের দ্বারা এবং গাউসিয়ান পোস্ট-প্রসেসিংয়ের কারণে ঘটে থাকে তবে আমি বোকেহকে অনুকরণ করতে চাই।
সত্তা

@ সত্ত্বা: আমি কীভাবে একটি গভীর গভীরতার মানচিত্রের নমুনা চিত্রগুলি সন্ধান করব? আপনার সঠিক? আমি নিজে চেষ্টা করে দেখতে চাই (ফাইনালের পরে) সম্ভবত আমি কয়েক সপ্তাহ পরে উত্তর নিয়ে আসতে হবে। আপনার যদি সর্বজনীন হয় তবে আমি কি এর সাথে একটি লিঙ্ক রাখতে পারি?
মার্টিজন আদালত

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

উত্তর:


20

আমি মনে করি মূল সমস্যাটি গতিশীল পরিসীমাগুলির মধ্যে একটি, আপনার অ্যালগোরিদম সম্ভবত সঠিক তবে আপনি ভুল ধরণের ডেটা নিয়ে কাজ করছেন।

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

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

একটি বাস্তব চিত্র চেইনে আপনার যা রয়েছে তা হ'ল:

bokeh (from the lens) -> digitisation (clipping) -> gamma correction & dynamic range compression

আপনি কি করছেন

sharp image -> digitisation (clipping) -> gamma correction & dynamic range compression -> bokeh simulation

আপনি সঠিক ফলাফল পাবেন না কারণ আপনি লিনিয়ার ডেটা নিয়ে কাজ করছেন না।

আপনি যা করতে পারেন তা হ'ল ডেটা লিনিয়ার করার চেষ্টা করা, ক্লিপিংয়ের জন্য হারিয়ে যাওয়া যে কোনও গতিশীল রেঞ্জ প্রতিস্থাপন করা, আপনার বোকেহ সিমুলেশন সম্পাদন করা এবং তারপরে ননলাইনার ক্রিয়াকলাপগুলি আবার করা!

এখানে একটি উদাহরণ। আমি একটি এইচডিআর ইমেজটি দিয়ে শুরু করেছি যা একটি উচ্চ নৈরৈখিক ফলাফল প্রদান করে স্বরযুক্ত হয়েছে tone বোকেহ সিমুলেশন সহ চেষ্টা করার জন্য এটি সবচেয়ে খারাপ চিত্র image

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

আরও ভাল ফলাফল পাওয়ার জন্য, চূড়ান্ত বক্ররেখার জন্য আমি চেষ্টা করেছি এবং টোনম্যাপিংয়ের আগে চিত্রটি মোটামুটি এটি কী হবে তা ফিরিয়ে আনতে, যেখানে হাইলাইটগুলি অনেক বেশি, বাকি চিত্রের চেয়ে অনেক উজ্জ্বল। আমি স্তরের সরঞ্জাম দিয়ে এটি করেছি, কেন্দ্রের ইনপুটটিকে ডানদিকে দীর্ঘ প্রান্তে ঠেলাচ্ছি, 1.0 থেকে প্রায় 0.2 পর্যন্ত। আমি তখন আগের মতো ঠিক লেন্স ব্লার টুলটি প্রয়োগ করেছি। অবশেষে আমি প্রথম বক্রের সাথে বিপরীত দিকে চরম বাঁক প্রয়োগ করেছি। নিখুঁত থেকে দীর্ঘ পথ পর্যন্ত ফলাফলটি অনেকটা বাস্তব লেন্স বোকেহের মতো দেখাচ্ছে:

 

আপনি যদি কোডটিতে এটি করছেন, তবে প্রতিটি মানকে ঘনক্ষন করে দেখুন, তারপরে আপনার বোকেহ সিমুলেশন রুটিন প্রয়োগ করুন, তারপরে প্রতিটি মানের কিউব রুটটি নিন। আপনি একটি উন্নতি দেখতে হবে। এটি কিছু টুইট করতে পারে।

tl; dr এমনকি আপনি বোকেহের একটি নিখুঁত গাণিতিক মডেল প্রয়োগ করেছেন, এটি আবদ্ধ লিনিয়ার ডেটাতে প্রয়োগ করা আবশ্যক। আপনি যদি ভারী পরিবর্তনকৃত ডেটাতে একই গণনা প্রয়োগ করেন (এমনকি ক্যামেরার কোনও মানক জেপিজি একটি গাণিতিক দৃষ্টিকোণ থেকে ভারীভাবে সংশোধিত হয়) আপনি খুব আলাদা ফলাফল পাবেন।


12

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

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

এছাড়াও আপনি উল্লেখ থাকার গভীরতায় মানচিত্র, কিন্তু কোন শব্দ ব্যবহার করুন। আপনার বোকেহ মাস্কের আকার পিক্সেল গভীরতা এবং ফোকাল সমতল গভীরতার পার্থক্যের সাথে সম্পর্কিত হতে হবে - আরও একটি পিক্সেল ফোকাস সমতল থেকে হয় (উভয় দিক দিয়ে), এর মুখোশটি বৃহত্তর হওয়া উচিত। ফোকাল প্লেনে, মুখোশের আকারটি 1 × 1 পিক্সেল হওয়া উচিত।


প্রদত্ত ক্রিয়াকলাপগুলি সমস্ত সংযোজনযোগ্য হয় তবে আপনি অন্ধকার অঞ্চলের সমস্যাটি ছড়িয়ে পড়তে পারবেন না। এটি সত্য যে ধারালো চেনাশোনাগুলি পেতে আপনার একটি তীক্ষ্ণ মুখোশ প্রয়োজন তবে বড় সমস্যাটি হ'ল তার বোকেহ অপারেশনটি অ-লিনিয়ার ডেটাতে প্রয়োগ করা হচ্ছে।
ম্যাট গ্রুম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.