আপনার প্রশ্নের 'পাথ অপটিমাইজেশন সমস্যা' হিসাবে মডেলিং করে এখানে আপনার সমস্যার বিকল্প সমাধান। যদিও এটি সাধারণ বাইনারিাইজেশন এবং তারপরে কার্ভিফিটিং সমাধানের চেয়ে জটিল তবে এটি অনুশীলনে আরও দৃust়।
খুব উচ্চ স্তর থেকে, আমাদের এই চিত্রটি গ্রাফ হিসাবে বিবেচনা করা উচিত, যেখানে
প্রতিটি চিত্র পিক্সেল এই গ্রাফ একটি নোড
প্রতিটি নোড কিছু অন্যান্য নোডের সাথে সংযুক্ত থাকে, যা প্রতিবেশী হিসাবে পরিচিত, এবং এই সংযোগ সংজ্ঞাটি প্রায়শই এই গ্রাফের টপোলজি হিসাবে উল্লেখ করা হয়।
প্রতিটি নোডের একটি ওজন রয়েছে (বৈশিষ্ট্য, ব্যয়, শক্তি, বা আপনি যেটাকে কল করতে চান), এটি প্রত্যাশা করে যে এই নোডটি একটি অনুকূল কেন্দ্রীয়-লাইনে আমরা খুঁজছি।
যতক্ষণ আমরা এই সম্ভাবনাটি মডেল করতে পারি, ততক্ষণ আপনার 'সীমান্তের কেন্দ্ররেখাগুলি' সন্ধানের সমস্যাটি গ্রাফের স্থানীয় অনুকূল পাথগুলি খুঁজে পেতে সমস্যা হয়ে দাঁড়ায় , যা কার্যকরভাবে ডায়নামিক প্রোগ্রামিং দ্বারা সমাধান করা যায়, যেমন ভিটার্বি অ্যালগরিদম।
এই পদ্ধতির অবলম্বন করার কয়েকটি কৌশল এখানে রয়েছে:
আপনার সমস্ত ফলাফল অবিচ্ছিন্ন থাকবে (প্রান্তিক পদ্ধতির বিপরীতে যা একটি কেন্দ্রের লাইনকে টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরা টুকরো
যেমন একটি গ্রাফ নির্মাণ করতে অনেক স্বাধীনতা, আপনি বিভিন্ন বৈশিষ্ট্য এবং গ্রাফ টপোলজি নির্বাচন করতে পারেন।
আপনার ফলাফলগুলি পাথ অপ্টিমাইজেশনের অর্থে অনুকূল
আপনার সমাধান শব্দের বিরুদ্ধে আরও দৃ be় হবে, যতক্ষণ না শব্দ যতক্ষণ না সমস্ত পিক্সেলের মধ্যে সমানভাবে বিতরণ করা যায়, সেই অনুকূল পথগুলি স্থিতিশীল থাকে।
এখানে উপরের ধারণাটির একটি সংক্ষিপ্ত প্রদর্শন রয়েছে। যেহেতু কোন প্রারম্ভিক এবং শেষ নোডগুলি কী তা নির্দিষ্ট করে দেওয়ার জন্য আমি কোনও পূর্ববর্তী জ্ঞান ব্যবহার করি না, তাই আমি প্রতিটি সম্ভাব্য নোডকে সহজভাবে সাজাই।
অস্পষ্ট সমাপ্তির জন্য, এটি প্রতিটি সম্ভাব্য শেষ নোডের জন্য সর্বোত্তম পথের সন্ধানের কারণে ঘটে is ফলস্বরূপ, যদিও অন্ধকার অঞ্চলে অবস্থিত কয়েকটি নোডের জন্য, হাইলাইট করা পথটি এখনও এটির স্থানীয় অনুকূল।
অস্পষ্ট পথের জন্য আপনি এটি সন্ধানের পরে এটি মসৃণ করতে পারবেন বা কাঁচা তীব্রতার পরিবর্তে কিছু স্মুথড বৈশিষ্ট্য ব্যবহার করতে পারেন।
শুরু এবং শেষ নোডগুলি পরিবর্তন করে আংশিক পাথগুলি পুনরুদ্ধার করা সম্ভব।
এই অনাকাঙ্ক্ষিত স্থানীয় অনুকূল পাথগুলি ছাঁটাই করা কঠিন হবে না। কারণ আমাদের মধ্যে ভিটারবি ডিকোডিংয়ের পরে সমস্ত পাথের সম্ভাবনা রয়েছে এবং আপনি বিভিন্ন পূর্ববর্তী জ্ঞান ব্যবহার করতে পারেন (যেমন আমরা দেখতে পাই এটি সত্য যে একই উত্সটি ভাগ করে নেওয়ার জন্য আমাদের কেবল একটি সর্বোত্তম পথ প্রয়োজন))
আরও তথ্যের জন্য, আপনি কাগজ উল্লেখ করতে পারেন।
Wu, Y.; Zha, S.; Cao, H.; Liu, D., & Natarajan, P. (2014, February). A Markov Chain Line Segmentation Method for Text Recognition. In IS&T/SPIE 26th Annual Symposium on Electronic Imaging (DRR), pp. 90210C-90210C.
উপরের গ্রাফটি তৈরি করতে পাইথন কোডের একটি সংক্ষিপ্ত অংশ রয়েছে।
import cv2
import numpy as np
from matplotlib import pyplot
# define your image path
image_path = ;
# read in an image
img = cv2.imread( image_path, 0 );
rgb = cv2.imread( image_path, -1 );
# some feature to reflect how likely a node is in an optimal path
img = cv2.equalizeHist( img ); # equalization
img = img - img.mean(); # substract DC
img_pmax = img.max(); # get brightest intensity
img_nmin = img.min(); # get darkest intensity
# express our preknowledge
img[ img > 0 ] *= +1.0 / img_pmax;
img[ img = 1 :
prev_idx = vt_path[ -1 ].astype('int');
vt_path.append( path_buffer[ prev_idx, time ] );
time -= 1;
vt_path.reverse();
vt_path = np.asarray( vt_path ).T;
# plot found optimal paths for every 7 of them
pyplot.imshow( rgb, 'jet' ),
for row in range( 0, h, 7 ) :
pyplot.hold(True), pyplot.plot( vt_path[row,:], c=np.random.rand(3,1), lw = 2 );
pyplot.xlim( ( 0, w ) );
pyplot.ylim( ( h, 0 ) );