美文网首页
111. 雷登变换反投影重建图像

111. 雷登变换反投影重建图像

作者: 大龙10 | 来源:发表于2025-09-03 07:11 被阅读0次

7. 图像复原与重建索引

一、投影重建图像

  • 图像重建(Image Reconstruction)的基本思想,就是通过探测物体的投影数据,重建物体的实际内部构造。

二、雷登变换反投影重建图像(Radon transform back projection)

  • 空间点 X 通过摄像机 P 被作用到图像平面的图像点 m = PX , 获得采集到的图像数据,这种投影关系称为摄像机的正向投影 (forward projection) ,简称投影。

  • 反向投影是针对图像平面的基本几何元素而言的,图像平面点 m 的反投影是指在摄像机 P 的作用下具有像点 m 的所有空间点的集合。

  • 反投影一个点形成部分图像的过程,是将直线 L(\rho_j,\theta_k)复制到图像上,直线上每点的灰度值是 g(\rho_j,\theta_k)。遍历投影信号中的每个点,得到:


    对所有反投影图像积分,得到最终的图像

    其离散形式为:

    反投影的图像有时称为层图,可以理解为投影图像的一个近似。

三、例程

  • 9.25:雷登变换反投影重建图像
    # 9.24: 雷登变换反投影重建图像
    from scipy import ndimage
    def discreteRadonTransform(image, steps):  # 离散雷登变换
        channels = image.shape[0]
        resRadon = np.zeros((channels, channels), dtype=np.float32)
        for s in range(steps):
            rotation = ndimage.rotate(image, -s * 180/steps, reshape=False).astype(np.float32)
            resRadon[:, s] = sum(rotation)
        return resRadon

    def inverseRadonTransform(image, steps):  # 雷登变换反投影
        channels = image.shape[0]
        res = np.zeros((steps, channels, channels))
        for s in range(steps):
            expandDims = np.expand_dims(image[:, s], axis=0)
            repeat = expandDims.repeat(channels, axis=0)
            res[s] = ndimage.rotate(repeat, s * 180/steps, reshape=False).astype(np.float32)
        invRadon = np.sum(res, axis=0)
        return invRadon


    # 读取原始图像
    img1 = cv2.imread("../images/Fig0534a.tif", 0)  # flags=0 读取为灰度图像
    img2 = cv2.imread("../images/Fig0534c.tif", 0)

    # 雷登变换
    imgRadon1 = discreteRadonTransform(img1, img1.shape[0])  # Radon 变换
    imgRadon2 = discreteRadonTransform(img2, img2.shape[0])

    # 雷登变换反投影
    imgInvRadon1 = inverseRadonTransform(imgRadon1, imgRadon1.shape[0])
    imgInvRadon2 = inverseRadonTransform(imgRadon2, imgRadon2.shape[0])

    plt.figure(figsize=(9, 7))
    plt.subplot(231), plt.axis('off'), plt.title("origin image"), plt.imshow(img1, 'gray')  # 绘制原始图像
    plt.subplot(232), plt.axis('off'), plt.title("Radon transform"), plt.imshow(imgRadon1, 'gray')  # 绘制 sinogram 图
    plt.subplot(233), plt.axis('off'), plt.title("Inv-Radon transform"), plt.imshow(imgInvRadon1, 'gray')
    plt.subplot(234), plt.axis('off'), plt.title("origin image"), plt.imshow(img2, 'gray')
    plt.subplot(235), plt.axis('off'), plt.title("Radon transform"), plt.imshow(imgRadon2, 'gray')
    plt.subplot(236), plt.axis('off'), plt.title("Inv-Radon transform"), plt.imshow(imgInvRadon2, 'gray')
    plt.tight_layout()
    plt.show()

四、资料

youcans_的博客:
https://blog.csdn.net/youcans/article/details/123088322

相关文章

  • 复原c2018-11-13

    由投影重建图像:滤波反投影、FDK、TFDK三维重建算法理论基础

  • OpenCV+Python 频域分析

    参考: opencv-python官方文档《刚萨雷斯数字图像处理(MATLAB版)》 图像处理中的傅里叶变换 二维...

  • pytorch 图像预处理 transforms数据增强方法(二

    一、transforms图像变换 1.transforms图像变换之pad 2.transforms图像变换之co...

  • 图片处理-opencv-7.图像几何变换

    图像几何变换 1.图像仿射变换 图像仿射变换又称为图像仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一...

  • 图像的几何变换1

    图像的几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新生位置。几何变换不改变图像的像素值...

  • 图像的傅里叶变换

    参考: 傅里叶变换学习图像变换第四章 图像变换图像傅里叶变换频谱特性研究 傅里叶定理指出: 任何信号都可以表示成(...

  • OpenCV实现图像的几何变换

    图像的几何变换 几何变换主要包括缩放、平移、旋转、仿射变换、透视变换和图像裁剪等。执行这些几何变换的两个关键函数是...

  • 图片处理-opencv-9.图像的灰度变换

    图像灰度线性变换 图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提...

  • Opencv CUDA应用 图像峰值查找

    图像处理中,经常通过距离变换对粘连物体图像进行分割。而距离变换常常通过峰值查找确定物体图像对质心。查找单通道图像局...

  • 12.2 有限采样,图像重建和离散傅里叶变换

    12.2.1 有限采样 数据截断(truncation) 或者加窗,可以通过将采样得到数据与窗函数相乘。窗函数的边...

网友评论

      本文标题:111. 雷登变换反投影重建图像

      本文链接:https://www.haomeiwen.com/subject/kwbcajtx.html