图像中心点的正弦图——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('正弦图')

效果

我选择用各种图形去实现这件事
在这里插入图片描述
在这里插入图片描述
这图贼诡异,莫名多出一堆曲线。。。
在这里插入图片描述
这个也是。。。

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐