Radon變換入門matlab CT原理

2021-06-02 09:17:51 字數 3479 閱讀 3470

簡介

影象投影,就是說將影象在某一方向上做線性積分(或理解為累加求和)。如果將影象看成二維函式f(x, y),則其投影就是在特定方向上的線性積分,比如f(x, y)在垂直方向上的線性積分就是其在x軸上的投影;f(x, y)在水平方向上的線積分就是其在y軸上的投影。通過這些投影,可以獲取影象在指定方向上的突出特性,這在影象模式識別等處理中可能會用到。

radon變換(拉東變換),就是將數字影象矩陣在某一指定角度射線方向上做投影變換。這就是說可以沿著任意角度theta來做radon變換。

例項

% 實驗radon變換

% by lyqmath

% dalian university of technology

% school of mathematical sciences

clc; clear all; close all;

i = zeros(256, 256);

[r, c] = size(i);

i(floor(1/5*r:4/5*r), floor(3/5*c:4/5*c)) = 1;

figure;

subplot(2, 2, 1); imshow(i); title('原影象');

[r, xt] = radon(i, [0 45 90]); % 在0、45、90度方向做radon變換

subplot(2, 2, 2);

plot(xt, r(:, 1));

title('水平方向的radon變換曲線');

subplot(2, 2, 3);

plot(xt, r(:, 2));

title('45度方向的radon變換曲線');

subplot(2, 2, 4);

plot(xt, r(:, 3));

title('垂直方向的radon變換曲線');

複製**

結果

總結

由於radon變換將影象變換到按角度投影區域,和有名的hough類似,可以應用與檢測直線。個人認為,通過將影象矩陣在多角度做積分投影,再對得到的資料做統計分析,可以確定出影象的一些基本性質。

***************===附********************==

i = zeros(100,100);

i(25:75, 25:75) = 1;

imshow(i)

[r,xp] = radon(i,[0 45]);

figure; plot(xp,r(:,1)); title('r_ (x\prime)')

theta = 0:180;

[r,xp] = radon(i,theta);

imagesc(theta,xp,r);

title('r_ (x\prime)');

xlabel('\theta (degrees)');

ylabel('x\prime');

set(gca,'xtick',0:20:180);

colormap(hot);

colorbar

結果:

原圖

變換後********************=逆變換********************=

i = zeros(100,100);

i(25:75, 25:75) = 1;

p=i;

imshow(p)

theta1=0:10:170;[r1,xp]=radon(p,theta1);   %存在18個角度投影

theta2=0:5:175;[r2,xp]=radon(p,theta2);    %存在36個角度投影

theta3=0:2:178;[r3,xp]=radon(p,theta3);    %存在90個角度投影

figure,imagesc(theta3,xp,r3);colormap(hot);colorbar;

xlabel('\theta');ylabel('x\prime');  %  定義座標軸

i1、i2、i3結果

*************************=反變換********************

theta1=0:10:170;[r1,xp]=radon(p,theta1);   %存在18個角度投影

theta2=0:5:175;[r2,xp]=radon(p,theta2);    %存在36個角度投影

theta3=0:1:179;[r3,xp]=radon(p,theta3);    %存在90個角度投影

figure,imagesc(theta3,xp,r3);colormap(hot);colorbar;

xlabel('\theta');ylabel('x\prime');  %  定義座標軸

i1=iradon(r1,10); % 開始反變換,還原影象

i2=iradon(r2,5);

i3=iradon(r3,1);

figure,imshow(i1),title('i1');

figure,imshow(i2),title('i2');

figure,imshow(i3),title('i3');

k=input('your thresh(0,1):')

thres1=max(i3(:))*k         %maybe 0.5 is perfect

figure,imshow(i3>thres1),title('i4');

結果:

原圖、i1、i2、i3、i4(0.5threshold)

***************===這也是螺旋ct成像原理了 by hi9394***************

Cuda實現Radon變換

有關radon變換的演算法的詳情,寫在這裡 用cuda實現radon變換,可以類似c語言程式操作。這裡可以簡單的使用乙個block,每個block包含numangles個thread 在下面的 中是181個thread include include math.h include cuda runt...

Radon變換理論介紹

radon變換的本質是將原來的函式做了乙個空間轉換,即,將原來的xy平面內的點對映到ab平面上,那麼原來在xy平面上的一條直線的所有的點在ab平面上都位於同一點。記錄ab平面上的點的積累厚度,便可知xy平面上的線的存在性。這便是大家所公認的radon變換的實質所在。上述聽起來很在理也很簡單,但卻少了...

小波變換 小波變換入門 haar小波

小波可以認為是乙個帶通濾波器,只允許頻率和小波基函式頻率相近的訊號通過。小波變換的基本思想是用一組小波函式和基函式表示乙個函式或者訊號。首先,以haar小波變換過程為例來理解小波變換。例 求只有4個畫素 9 7 3 5 的影象的哈爾小波變換係數。計算步驟如下 步驟2 求差值 differencing...