निरंतर समय / स्थान / आवृत्ति में परिभाषित सिग्नल प्रोसेसिंग एल्गोरिदम आमतौर पर एक असतत ग्रिड पर सिग्नल का नमूना करके और इंटीग्रल को रकम (और अंतर में डेरिवेटिव) में परिवर्तित करके कार्यान्वित किया जाता है। स्थानिक फिल्टर एक कनवल्शन कर्नेल (पड़ोसियों के भारित योग) के साथ सजा के माध्यम से कार्यान्वित किए जाते हैं।
नमूना समय-डोमेन संकेतों को फ़िल्टर करने से संबंधित ज्ञान का एक विशाल निकाय है; समय-डोमेन फ़िल्टर या तो परिमित आवेग प्रतिक्रिया फ़िल्टर के रूप में कार्यान्वित किए जाते हैं , जहाँ वर्तमान आउटपुट नमूने की गणना पिछले N इनपुट नमूनों के भारित योग के रूप में की जाती है; या अनंत आवेग प्रतिक्रिया फिल्टर, जहां वर्तमान आउटपुट पिछले इनपुट और पिछले आउटपुट का भारित योग है । औपचारिक रूप से, असतत समय फ़िल्टर को z- परिवर्तन का उपयोग करके वर्णित किया जाता है, जो कि लाप्लास परिवर्तन के लिए असतत-समय एनालॉग है । द्विरेखीय बदलने नक्शे दूसरे से एक ( c2d
और d2c
Matlab में)।
आप मनमाने बिंदुओं पर कार्यों का मूल्यांकन कैसे करेंगे?
जब आपको उस बिंदु पर एक संकेत के मूल्य की आवश्यकता होती है जो सीधे आपके नमूना ग्रिड पर झूठ नहीं होता है, तो आप पास के बिंदुओं से इसके मूल्य को प्रक्षेपित करते हैं । इंटरपोलेशन निकटतम नमूना चुनने के रूप में सरल हो सकता है, निकटतम नमूनों के भारित औसत की गणना कर सकता है, या नमूना डेटा के लिए एक मनमाने ढंग से जटिल विश्लेषणात्मक फ़ंक्शन को फिटिंग कर सकता है और आवश्यक निर्देशांक पर इस फ़ंक्शन का मूल्यांकन कर सकता है। एक समान महीन ग्रिड पर प्रक्षेपित करना अपसरण है । यदि आपके मूल (निरंतर) सिग्नल में आधा नमूना ग्रिड की तुलना में विवरण (अर्थात आवृत्तियों) बारीक नहीं है, तो निरंतर फ़ंक्शन को नमूना किए गए संस्करण ( Nyquist-Shannon नमूना प्रमेय ) से पूरी तरह से फिर से बनाया जा सकता है । एक उदाहरण के लिए कि आप 2D में कैसे इंटरपोल कर सकते हैं, देखेंबिलिनियर प्रक्षेप ।
मतलाब में आप 1 डी या नियमित रूप से सैंपल 2 डी डेटा (क्रमशः), या अनियमित रूप से सैंपल 2 डी डेटा से इंटरपोलेट करने के लिए उपयोग interp1
या उपयोग कर सकते हैं । interp2
griddata
क्या आपके पास प्रत्येक लोमड़ी से गुजरने वाला एक लूप होगा और संबंधित सूत्र की गणना करेगा?
हाँ बिल्कुल।
मतलाब आपको स्पष्ट रूप से लूप के माध्यम से ऐसा करने से बचाता है क्योंकि इसे मेट्रिस और वैक्टर (यानी बहुआयामी सरणियों) पर संचालित करने के लिए डिज़ाइन किया गया है। मतलाब में इसे "वैश्वीकरण" कहा जाता है। निश्चित अभिन्न साथ अनुमान लगाया जा सकता sum
, cumsum
, trapz
, cumtrapz
, आदि
मैंने गोंजालेज और वुड्स द्वारा "डिजिटल इमेज प्रोसेसिंग" पुस्तक पढ़ी है, लेकिन मैं अभी भी नुकसान में हूं। मैंने न्यूमेरिकल रेसिपी बुक सीरीज़ के बारे में भी पढ़ा है। क्या यह सही तरीका होगा?
हां, न्यूमेरिकल रेसिपी एक शानदार शुरुआत होगी। यह बहुत ही व्यावहारिक है और इसमें अधिकांश संख्यात्मक विधियों को शामिल किया गया है जिनकी आपको आवश्यकता होगी। (आप पाएंगे कि मतलाब पहले से ही आपकी जरूरत की हर चीज को लागू करता है, लेकिन न्यूमेरिकल रेसिपीज शानदार पृष्ठभूमि प्रदान करेंगी।)
मैंने एक "एल्गोरिदम और डेटा संरचनाएं" वर्ग लिया है, लेकिन मैं वहां प्रस्तुत सामग्री और वैज्ञानिक एल्गोरिदम को लागू करने के बीच संबंध नहीं देखता हूं।
"अल्गोरिदम और डेटा संरचनाओं" पाठ्यक्रमों में इलाज की जाने वाली सामग्री सूचियों, सरणियों, पेड़ों जैसी संरचनाओं पर ध्यान केंद्रित करती है, जिसमें पूर्णांक या तार और संचालन जैसे ग्राफ और छंटाई और चयन जैसी समस्याएं होती हैं: ऐसी समस्याएं जिनके लिए आमतौर पर एक एकल सही परिणाम होता है। जब वैज्ञानिक एल्गोरिदम की बात आती है, तो यह कहानी का केवल आधा हिस्सा है। वास्तविक संख्या और विश्लेषणात्मक कार्यों का अनुमान लगाने के लिए अन्य आधे चिंता के तरीके। आप इसे "न्यूमेरिकल मेथड्स" (या "न्यूमेरिकल एनालिसिस" पर एक कोर्स में पाएंगे; इस तरह- स्लाइड के लिए नीचे स्क्रॉल करें): विशेष कार्यों का अनुमान कैसे लगाया जाए, इंटीग्रल्स और डेरिवेटिव्स का अनुमान कैसे लगाया जाए, आदि यहां मुख्य कार्यों में से एक आपके परिणाम की सटीकता का अनुमान लगाना है, और एक सामान्य पैटर्न एक रूटीन को पुनरावृत्त करना है जो एक सुधार करता है जब तक यह पर्याप्त रूप से सटीक नहीं है, तब तक अनुमान लगाएं। (आप खुद से पूछ सकते हैं कि मतलबी कैसे जानती हैं कि कुछ करना उतना ही सरल है जितना 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]');
किसी समय किरण के साथ घनत्व का अभिन्न अंग क्या था, अब एक विरूपित नमूना छवि के एक स्तंभ पर एक राशि है, जो बदले में एक समन्वित समन्वय प्रणाली पर मूल छवि को प्रक्षेपित करके पाया गया था।