อัลกอริธึมการประมวลสัญญาณที่กำหนดในเวลา / พื้นที่ / ความถี่อย่างต่อเนื่องโดยทั่วไปแล้วจะดำเนินการโดยการสุ่มตัวอย่างสัญญาณบนกริดแยกและแปลงอินทิกรัลเป็นผลรวม (และอนุพันธ์เป็นความแตกต่าง) ตัวกรองเชิงพื้นที่ถูกนำมาใช้ผ่านการแปลงด้วยเคอร์เนล convolution (เช่นผลรวมถ่วงน้ำหนักของเพื่อนบ้าน)
มีองค์ความรู้ขนาดใหญ่เกี่ยวกับการกรองสัญญาณโดเมนเวลาตัวอย่าง; ตัวกรองโดเมนเวลาถูกนำมาใช้เป็นตัวกรองการตอบสนองต่อแรงกระตุ้น จำกัดซึ่งตัวอย่างเอาต์พุตปัจจุบันถูกคำนวณเป็นผลรวมถ่วงน้ำหนักของตัวอย่างอินพุต N ก่อนหน้านี้ หรืออนันต์ฟิลเตอร์กระตุ้นการตอบสนองที่ส่งออกในปัจจุบันเป็นผลรวมน้ำหนักของปัจจัยการผลิตก่อนหน้านี้และก่อนหน้านี้เอาท์พุท อย่างเป็นทางการกรองเวลาที่ไม่ต่อเนื่องจะมีการอธิบายโดยใช้Z-แปลงซึ่งเป็นเวลาที่ไม่ต่อเนื่องอะนาล็อกไปLaplace transform bilinear เปลี่ยนแผนที่หนึ่งไปยังอีก ( c2d
และd2c
ใน Matlab)
คุณประเมินฟังก์ชั่น ณ จุดใด ๆ
เมื่อคุณต้องการค่าของสัญญาณ ณ จุดที่ไม่ได้อยู่บนกริดตัวอย่างของคุณโดยตรงคุณจะแทรกค่าของมันจากจุดใกล้เคียง การแก้ไขสามารถทำได้ง่ายเพียงแค่เลือกตัวอย่างที่ใกล้ที่สุดคำนวณค่าเฉลี่ยถ่วงน้ำหนักของตัวอย่างที่ใกล้ที่สุดหรือปรับฟังก์ชั่นการวิเคราะห์ที่ซับซ้อนตามอำเภอใจกับข้อมูลตัวอย่างและประเมินฟังก์ชันนี้ในพิกัดที่ต้องการ interpolating บนตารางเครื่องแบบปลีกย่อยเป็นupsampling หากสัญญาณดั้งเดิม (ต่อเนื่อง) ของคุณไม่มีรายละเอียด (เช่นความถี่) ปลีกย่อยกว่าครึ่งตารางการสุ่มตัวอย่างดังนั้นฟังก์ชันต่อเนื่องสามารถสร้างขึ้นใหม่ได้อย่างสมบูรณ์แบบจากเวอร์ชั่นตัวอย่าง ( ทฤษฎีการสุ่มตัวอย่าง Nyquist-Shannon ) สำหรับตัวอย่างของวิธีที่คุณสามารถแก้ไขใน 2D ดูการแก้ไขสองทาง
ใน Matlab คุณสามารถใช้interp1
หรือinterp2
เพื่อทำการประมาณ 1D หรือสุ่มตัวอย่างข้อมูล 2D (ตามลำดับ) หรือgriddata
เพื่อทำการสอดแทรกจากข้อมูล 2D ตัวอย่างที่ไม่สม่ำเสมอ
คุณจะมีการวนรอบสำหรับแต่ละ voxel และคำนวณสูตรที่สอดคล้องกันหรือไม่
ใช่แล้ว
Matlab ช่วยให้คุณไม่ต้องทำสิ่งนี้ผ่านทาง for-loops อย่างชัดเจนเพราะมันถูกออกแบบมาให้ทำงานกับเมทริกซ์และเวกเตอร์ (เช่นอาร์เรย์หลายมิติ) ใน Matlab สิ่งนี้เรียกว่า "vectorization" integrals ชัดเจนสามารถประมาณด้วยsum
, cumsum
, trapz
, cumtrapz
ฯลฯ
ฉันอ่านหนังสือ "การประมวลผลภาพดิจิทัล" โดย Gonzalez and Woods แต่ฉันยังคงเสีย ฉันได้อ่านเกี่ยวกับหนังสือชุดตัวเลขสูตรอาหารแล้ว นั่นจะเป็นวิธีที่ถูกต้องไหม?
ใช่สูตรอาหารที่เป็นตัวเลขจะเป็นการเริ่มต้นที่ดี มันใช้งานได้จริงและครอบคลุมวิธีการทางตัวเลขส่วนใหญ่ที่คุณต้องการ (คุณจะพบว่า Matlab ใช้ทุกอย่างที่คุณต้องการอยู่แล้ว แต่ สูตรตัวเลขจะให้พื้นหลังที่ยอดเยี่ยม)
ฉันใช้คลาส "อัลกอริธึมและโครงสร้างข้อมูล" แต่ฉันไม่เห็นความสัมพันธ์ระหว่างวัสดุที่นำเสนอที่นั่นกับการใช้อัลกอริทึมทางวิทยาศาสตร์
วัสดุที่ได้รับการจัดการในหลักสูตร "อัลกอริธึมและโครงสร้างข้อมูล" มีแนวโน้มที่จะมุ่งเน้นไปที่โครงสร้างเช่นรายการอาร์เรย์ต้นไม้และกราฟที่มีจำนวนเต็มหรือสตริงและการดำเนินการเช่นการเรียงลำดับและการเลือก: ปัญหาซึ่งโดยทั่วไปแล้ว เมื่อพูดถึงอัลกอริธึมทางวิทยาศาสตร์นี่เป็นเพียงครึ่งหนึ่งของเรื่องราว อีกครึ่งหนึ่งเกี่ยวข้องกับวิธีการประมาณจำนวนจริงและฟังก์ชันการวิเคราะห์ คุณจะพบสิ่งนี้ในหลักสูตรที่ "วิธีการเชิงตัวเลข" (หรือ "การวิเคราะห์เชิงตัวเลข" เช่นนี้- เลื่อนลงสำหรับสไลด์): วิธีการประเมินฟังก์ชั่นพิเศษ, วิธีการประมาณอินทิกรัลและอนุพันธ์ ฯลฯ ที่นี่หนึ่งในภารกิจหลักคือการประเมินความถูกต้องของผลลัพธ์ของคุณและรูปแบบทั่วไปหนึ่งแบบคือ ประมาณจนกว่าจะมีความแม่นยำเพียงพอ (คุณอาจถามตัวเองว่า Matlab รู้วิธีทำอะไรง่าย ๆ แค่ประมาณค่าsin(x)
สำหรับบางคนx
)
ตัวอย่างง่ายๆนี่คือสคริปต์สั้น ๆ ที่คำนวณการแปลงเรดอนของรูปภาพใน Matlab การแปลงเรดอนใช้การประมาณของภาพเหนือชุดของมุมการฉาย แทนที่จะพยายามคำนวณการฉายตามมุมโดยพลการฉันจึงหมุนภาพทั้งหมดโดยใช้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]');
สิ่งที่ครั้งหนึ่งเคยเป็นส่วนหนึ่งของความหนาแน่นตามแนวรังสีตอนนี้กลายเป็นผลรวมของคอลัมน์ของภาพตัวอย่างที่แยกไม่ออกซึ่งพบได้จากการสอดแทรกภาพต้นฉบับบนระบบพิกัดที่ถูกแปลง