সি ++ বা এমএটিএলবিতে প্রযুক্তিগত কাগজ অ্যালগরিদমগুলি কার্যকর করা


14

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

আরও সুনির্দিষ্টভাবে, আমি ওয়াং এট আল ( আইইইই ট্রান্স মেড মেড ইমেজিং। 1993; 12 (3): 486-96 ) দ্বারা "একটি সাধারণ শঙ্কু-রম পুনর্নির্মাণ অ্যালগরিদম" কাগজটি দেখছিলাম , এবং আমি ভাবছিলাম যে আমি কীভাবে শুরু করব? তাদের অ্যালগরিদম বাস্তবায়ন? সমীকরণ 10 আপনাকে পুনর্গঠিত চিত্রের সূত্র দেয়। আপনি কিভাবে এটি কোড করবেন? আপনি কি প্রতিটি ভক্সেলের মধ্য দিয়ে যেতে এবং সংশ্লিষ্ট সূত্রটি গণনা করতে পারবেন? আপনি কীভাবে এই সূত্রে ফাংশন ফাংশন কোড করবেন? আপনি কীভাবে নির্বিচারে বিন্দুতে কার্যকারিতা মূল্যায়ন করবেন?

আমি গনজালেজ ও উডসের "ডিজিটাল ইমেজ প্রসেসিং" বইটি পড়েছি তবে আমি এখনও ক্ষতিতে আছি। আমি সংখ্যার রেসিপি বইয়ের সিরিজ সম্পর্কেও পড়েছি। এটা কি সঠিক উপায় হবে?

গবেষণা কাগজপত্র থেকে আপনার অভিজ্ঞতা প্রোগ্রামিং অ্যালগোরিদম কি কি? কোন টিপস বা পরামর্শ?


1
সুযোগ পেলে আমি কাগজটি একবার দেখে নিই। তবে আমি বিশ্বাস করি প্রদত্ত গ্রাফিকের মধ্যে এটিই XYZ পয়েন্ট points আপনি একটি শীর্ষস্থানীয় সংজ্ঞা দিন এবং তারপরে সেখান থেকে কাজ করুন।

2
সাধারণত, কেউ নমুনা গ্রহণের মাধ্যমে সংকেতকে বিবেচনা করে এবং তারপরে অখণ্ডগুলিকে অঙ্কগুলিতে রূপান্তর করে।
নিবোট

সুতরাং আমি নমুনা তৈরি এবং ইন্টিগ্রালগুলিকে অঙ্কে রূপান্তরিত করার বিষয়ে পড়েছি, তবে প্রতিটি নমুনা বিন্দুতে ইন্টিগ্রান্ডকে কীভাবে মূল্যায়ন করবেন যদি ইন্টিগ্রান্ডের ফাংশনগুলি ম্যাট্রিক হিসাবে সংরক্ষণ করা হয়?

1
দামিয়ান, আপনি কি দেখেছেন কীভাবে ব্যাকপ্রজেক্টের মাধ্যমে রেডন ট্রান্সফর্মটি উল্টানো হয়? এটি একটি সামান্য সরল উদাহরণ যা আমি আপনাকে ব্যাখ্যা করতে পারতাম যদি এটি আপনার আগ্রহী হয়। এটি পোস্ট কাগজে বর্ণিত শঙ্কু নমুনার চেয়ে প্লেন ওয়েভ ব্যবহার করে টমোগ্রাফির জন্য ব্যবহৃত হয়। en.wikipedia.org/wiki/Radon_transform
nibot

1
@ মিঃ-ক্রিট, পরিবর্তে ডিএসপি.এসইতে স্থানান্তরিত করা সম্ভব?
নিবোট

উত্তর:


15

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

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

আপনি কীভাবে নির্বিচারে বিন্দুতে কার্যকারিতা মূল্যায়ন করবেন?

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

মতলবতে আপনি 1D বা নিয়মিত নমুনাযুক্ত 2D ডেটা (যথাক্রমে) ব্যবহার করতে interp1বা interp2ফাঁক দিতে বা griddataঅনিয়মিতভাবে নমুনাযুক্ত 2D ডেটা থেকে ইন্টারপোলেট করতে পারেন।

আপনি কি প্রতিটি ভক্সেলের মধ্য দিয়ে যেতে এবং সংশ্লিষ্ট সূত্রটি গণনা করতে পারবেন?

হ্যাঁ অবশ্যই.

মতলব আপনাকে স্পষ্টভাবে লুপের মাধ্যমে এটি করা থেকে বাঁচায় কারণ এটি ম্যাট্রিক এবং ভেক্টরগুলিতে (যেমন বহুমাত্রিক অ্যারে) পরিচালনা করার জন্য ডিজাইন করা হয়েছে। মতলব এটিকে "ভেক্টরাইজেশন" বলা হয়। নির্দিষ্ট ইন্টেগ্রাল সঙ্গে আনুমানিক যাবে sum, cumsum, trapz, cumtrapz, ইত্যাদি

আমি গনজালেজ ও উডসের "ডিজিটাল ইমেজ প্রসেসিং" বইটি পড়েছি তবে আমি এখনও ক্ষতিতে আছি। আমি সংখ্যার রেসিপি বইয়ের সিরিজ সম্পর্কেও পড়েছি। এটা কি সঠিক উপায় হবে?

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

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

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


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

আপনি নিজের imrotateপছন্দ মত লিখতে পারেন, ব্যবহার করতে পারেন interp2

%%# Home-made Radon Tranform

%# load a density map (image).  
A = phantom;

n_pixels = size(A, 1);  %# image width (assume square)

%# At what rotation angles do we want to take projections?
n_thetas = 101;
thetas = linspace(0, 180, n_thetas);

result = zeros(n_thetas, n_pixels);

%# Loop over angles
for ii=1:length(thetas)
    theta = thetas(ii);
    rotated_image = imrotate(A, theta, 'crop');
    result(ii, :) = sum(rotated_image);
end

%# display the result
imagesc(thetas, 1:n_pixels, result.');
xlabel('projection angle [degrees]');

যা একসময় রশ্মির সাথে ঘনত্বের অবিচ্ছেদ্য ছিল তা এখন একটি বিচ্ছিন্নভাবে নমুনাযুক্ত ইমেজের কলামের সমষ্টি, যা পরিবর্তিত স্থানাঙ্ক ব্যবস্থার মাধ্যমে মূল চিত্রটি সংক্ষেপে দেখা গিয়েছিল।


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

হাই দামিয়ান, আমি আপনার মন্তব্যে সম্বোধন করতে আমার উত্তর সম্পাদনা করেছি। আমি মনে করি আপনি কোর্সে যা চেয়েছিলেন তা সন্ধান করতে পারবেন বা সংখ্যাসূচক পদ্ধতি / সংখ্যা বিশ্লেষণের বইটি পাবেন।
নিবোট

পুরো উত্তর!
ভিক্টর সোরোকিন

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

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

3

নিবটের দুর্দান্ত ব্যাখ্যায় যোগ করা , আরও কয়েকটি পয়েন্ট।

  • এমএটিএলবি, অ্যাকটাভ বা সায়পি / নুমপির মতো সংখ্যার কম্পিউটিং পরিবেশগুলি সি ++ এর মতো জেনেরিক প্রোগ্রামিং ভাষায় নিজের দ্বারা এটি করার চেয়ে আপনি প্রচুর প্রচেষ্টা বাঁচাতে পারবেন। doubleঅ্যারে এবং লুপগুলির সাথে জাগলিং কেবলমাত্র আপনার নখদর্পণে ইন্টিগ্রালগুলির মতো জটিল সংখ্যা এবং ক্রিয়াকলাপের মতো ডেটা ধরণের সাথে তুলনা করে না। (এটি নিশ্চিতভাবে করণীয়, এবং ভাল সি ++ কোডটি দ্রুত গ্রন্থাগার বিমূর্তি এবং টেমপ্লেটগুলির সাথে এটি যথাযথভাবে পরিষ্কার এবং পরিষ্কার হতে পারে, তবে উদাহরণস্বরূপ ম্যাটল্যাব দিয়ে শুরু করা অবশ্যই সহজ))

  • ম্যাটল্যাবের কাছে যেমন "টুলকিটস" রয়েছে যেমন ইমেজ প্রসেসিং এবং ডিজিটাল সিগন্যাল প্রসেসিং যা আপনার কাজের উপর নির্ভর করে অনেক সাহায্য করতে পারে।

  • মিত্রার ডিজিটাল সিগন্যাল প্রসেসিং (ম্যাটল্যাবে!) আলাদা সময়, ফিল্টার, ট্রান্সফর্ম ইত্যাদির মূল বিষয়গুলি শিখার জন্য একটি ভাল বই যা কোনও শালীন প্রযুক্তিগত অ্যালগরিদমগুলি করার জন্য বেশ বেশি বাধ্যতামূলক জ্ঞান।

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

1
উপরের উত্তরে যোগ করতে, সি ++ টুলকিটগুলি যেমন আর্মাদিলো মাতলাব কোডকে দ্রুত সি ++ কোডে রূপান্তর করতে পারে। আরমাদিলোর সিনট্যাক্স মতলবের সাথে সমান। আপনি আরমাদিলোর ম্যাক্স ইন্টারফেসের মাধ্যমে ম্যাচ ম্যাচল্যাব এবং সি ++ কোডও মিশ্রণ করতে পারেন।
mtall

2

সংখ্যা পদ্ধতি। এটি সাধারণত একটি উচ্চ-বিভাগের বিশ্ববিদ্যালয় কোর্স এবং পাঠ্যপুস্তক।

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

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

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