উচ্চতর গ্রেডিয়েন্ট মান সহ চিত্রের অঞ্চলগুলি সনাক্ত করতে সাধারণত প্রান্ত সনাক্তকরণ ফোটে।
আমাদের ক্ষেত্রে আমরা ক্র্যাডিয়েন্টটি গ্রেডিয়েন্টটিকে চিত্রের ফাংশনটির অনুভূত হিসাবে দেখতে পাচ্ছি, সুতরাং গ্রেডিয়েন্টের প্রস্থতা আপনাকে স্থানীয়ভাবে কীভাবে আপনার চিত্রের পরিবর্তন হয় (পার্শ্ববর্তী পিক্সেল / টেক্সেলগুলির ক্ষেত্রে) একটি তথ্য দেয় ।
এখন, একটি প্রান্তটি যেমন আপনি বলছেন বিযুক্তির ইঙ্গিত, তাই এখন আমরা গ্রেডিয়েন্টটি সংজ্ঞায়িত করেছিলাম যে এই তথ্যটি আমাদের যা প্রয়োজন তা হল। একবার আমরা কোনও চিত্রের গ্রেডিয়েন্টটি সন্ধান করি, বাইনারি মান প্রান্ত / অ-প্রান্ত প্রাপ্ত করার জন্য এটিতে একটি প্রান্তিক প্রয়োগ করার বিষয়টি মাত্র।
আপনি এই গ্রেডিয়েন্টটি কীভাবে খুঁজে পাচ্ছেন তা সত্যিই আপনি যা জিজ্ঞাসা করছেন এবং আমি এখনও উত্তর দেইনি :)
প্রচুর উপায়! এখানে একটি দম্পতি :)
শেডার ফাংশনে অন্তর্নির্মিত
এইচএলএসএল এবং জিএসএসএল উভয়ই ডেরাইভেটিভ ফাংশন সরবরাহ করে। জিএলএসএলে আপনার ডিএফডিএক্স এবং ডিএফডি রয়েছে যা আপনাকে যথাক্রমে x এবং y দিকের গ্রেডিয়েন্ট তথ্য দেয়। সাধারণত এই ফাংশনগুলি 2x2 টুকরা একটি ব্লকে মূল্যায়ন করা হয়।
যতক্ষণ না আপনি একটি একক দিক আগ্রহী, একটি ভালো উপায় একটি কম্প্যাক্ট ফলে ইঙ্গিত কিভাবে শক্তিশালী অঞ্চলে গ্রেডিয়েন্ট হয় আছে fwidth যে আপনি অন্য কিছুই কিন্তু dFdy এবং dFdy পরম মান এর সমষ্টি দেয়।
আপনি নির্দিষ্ট চ্যানেলের চেয়ে সামগ্রিক চিত্রের প্রান্তে আগ্রহী হওয়ার সম্ভাবনা রয়েছে, তাই আপনি নিজের চিত্রের ফাংশনটি লুমায় রূপান্তর করতে চাইতে পারেন। এটি মাথায় রেখে, যখন এটি শনাক্তকরণের বিষয়টি আসে তখন আপনার শেডার এর মতো কিছু অন্তর্ভুক্ত করতে পারে:
float luminance = dot(yourFinalColour,vec3(0.2126, 0.7152, 0.0722));
float gradient = fwidth(luminance );
float isEdge = gradient > threshold;
একটি উচ্চ প্রান্তিকের সাহায্যে আপনি মোটা প্রান্তগুলি পাবেন এবং আপনি কিছু মিস করতে পারেন, বিপরীতভাবে, একটি নিম্ন প্রান্তের সাথে আপনি মিথ্যা প্রান্তগুলি সনাক্ত করতে পারেন। আপনার প্রয়োজনীয়তাকে আরও ভাল মানায় এমন প্রান্তিক সন্ধান করতে আপনাকে পরীক্ষা করতে হবে।
এই ফাংশনগুলি কেন কাজ করে তা উল্লেখ করার মতো কারণ তবে এখনই আমার পক্ষে সময় নেই, আমি সম্ভবত এই উত্তরটি পরে আপডেট করব :)
স্ক্রিন স্পেস পোস্ট-প্রক্রিয়া
আপনি এর চেয়ে কল্পিত হয়ে উঠতে পারেন, এখন চিত্র প্রক্রিয়াকরণে এজ সনাক্তকরণের ক্ষেত্র অপরিসীম। আমি আপনার প্রয়োজনীয়তা অনুসারে প্রান্ত সনাক্তকরণের জন্য বেশ কয়েকটি ভাল উপায় উদ্ধৃত করতে পারি, তবে আসুন এখনই এটি সহজ রাখুন, আপনার আগ্রহী হলে আমি আপনাকে আরও বিকল্পগুলি উদ্ধৃত করতে পারি!
সুতরাং ধারণাটি উপরেরটির মতোই হবে, এই পার্থক্যের সাথে আপনি আরও বিস্তৃত পাড়াটি দেখতে পারেন এবং আপনি চাইলে ঘৃণ্য নমুনাগুলির উপর ওজনের একটি সেট ব্যবহার করতে পারেন। সাধারণত, আপনি একটি কার্নেল দিয়ে আপনার চিত্রের উপর একটি কনভ্যুশল চালান যা ফলস্বরূপ আপনাকে একটি ভাল গ্রেডিয়েন্ট তথ্য দেয়।
খুব সাধারণ পছন্দ হ'ল সোবেল কার্নেল
যা যথাক্রমে আপনাকে x এবং y দিকনির্দেশে গ্রেডিয়েন্ট দেয়:
as হিসাবে আপনি একক মান গ্রেডিয়েন্টের বাইরে পেতে পারেনGradientMagnitude=(Gradientx)2+(Gradienty)2−−−−−−−−−−−−−−−−−−−−−−−√
তারপরে আপনি উপরে উল্লিখিতভাবে একইভাবে প্রান্তিক করতে পারেন।
এই কার্নেলটি আপনি দেখতে পাবেন যে কেন্দ্রীয় পিক্সেলকে আরও বেশি ওজন দেওয়া যায়, তাই কার্যকরভাবে গ্রেডিয়েন্টকে + কিছুটা স্মুথ করে তুলনা করা হয় যা allyতিহ্যগতভাবে সহায়তা করে (প্রায়শই চিত্রটি ছোট প্রান্তগুলি মুছে ফেলার জন্য গাউসিয়ান অস্পষ্ট)।
উপরেরটি বেশ ভালভাবে কাজ করে তবে আপনি স্মুথিং পছন্দ না করলে আপনি প্রিভিট কার্নেলগুলি ব্যবহার করতে পারেন:
(দ্রষ্টব্য আমি ভিড় করছি, শীঘ্রই চিত্রগুলির পরিবর্তে সঠিক বিন্যাসযুক্ত পাঠ্য লিখব!)
সত্যিকারের গ্রাফিক্সের চেয়ে চিত্র প্রসেস-ওয়াই পদ্ধতিতে প্রান্ত সনাক্তকরণের জন্য আরও প্রচুর কার্নেল এবং কৌশল রয়েছে, সুতরাং আমি ডিএফডিএক্স / ওয়াই ফাংশনগুলির সাথে আরও সুক্ষ্ম থাকব বলে সম্ভবত আরও সংশ্লেষিত (পাং উদ্দেশ্য নয়) পদ্ধতিগুলি বাদ দিয়েছি probably ।