图像中心点的正弦图——matlab实现
概念
首先,我说说为什么想做一个图像中心点的正弦图。
当我们照CT的时候,考虑一个二维平面,如果物体永远放置在扫描仪的正中心,那么这个二维物体这正中心,一定是最中间的那个光子探测器探测到的。所以,无论光子以如何的角度投射这个物体(二维),如果我们只讨论中心位置的话,那只用考虑中间那个探测器的值就行了。
(好吧,我承认我这么写是为了偷懒。但是只有实现了最理想的情况,才能向复杂的方向去发展)
实现过程
这里我使用了matlab自带的rotate函数和自己写的方法分别实现了这个正弦图,并画在了一张图上。
我认为,对于中心这个点,投射仪器旋转
θ
θ
θ照射中心位置,等同于图形旋转
−
θ
-θ
−θ度然后进行正投影。
代码如下:
img = imread('picture');%读图
gImg = rgb2gray(img); %这里用的是灰度图
Injectc = zeros(180,1);
rInject = zeros(180,1);
for i = 0:179
ra = radon(gImg,i);
[n,~] = size(ra);
cent = round(n/2);
rInject(i+1) = ra(cent);
end
x = 1:180;
subplot(1,2,1);
imshow(gImg);
title('原图')
subplot(1,2,2);
plot(x,rInject);
hold on;
for i = 0:179
rImg = imrotate(gImg, -i);
[m,~] = size(rImg);
cen = round(m/2);
Injectc(i+1)=sum(rImg(:,cen));
end
plot(x,Injectc);
legend('由radon函数生成','自写函数生成')
title('正弦图')
效果
我选择用各种图形去实现这件事
这图贼诡异,莫名多出一堆曲线。。。
这个也是。。。