网站增加导航栏,网站免费的不用下载,重庆市工程建筑造价信息网,做网站需要好多钱专栏地址#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】110. 投影和雷登变换 7. 投影重建图像
7.1 计算机断层…专栏地址『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】110. 投影和雷登变换 7. 投影重建图像
7.1 计算机断层成像Computed tomography
图像重建Image Reconstruction的基本思想就是通过探测物体的投影数据重建物体的实际内部构造。
断层成像就是要获得物体内部的截面图像。利用 X射线、超声波等射线穿透被遮挡物体的透视投影图可以计算恢复物体的断层图进而可以利用断层图或直接从二维透视投影图重建物体的形状和内部结构。其原理是射线在穿过不同组织时的吸收率不同在成像面上得到不同的投射强度由此反演求得内部分布的图像。
X 射线、CT 技术就是应用断层重建的医学诊断方法。计算机断层扫描CT已经发展成为一种非常成功和必不可少的医学诊断工具被认为是 X 射线发现以来医学影像领域最伟大的发明。
X 射线计算机断层成像的基本原理是使用 X 射线从多个不同方向和角度对物体进行扫描通过反投影算法获取物体内部结构的切片堆叠这些切片就可以得到人体的三维表示。
投影重建还应用于地矿探测接收不同地层和矿体反射的超声波 按照超声波在媒质的透射率和反射规律对透射投影图进行分析计算就可以恢复重建地下的矿体形状。
7.2 投影和雷登变换Radon transform
雷登变换是三维重建的数学基础。
一条直线 yaxbyaxbyaxb 的法线束为 xcosθysinθρx cos \theta y sin \theta \rho xcosθysinθρ 沿该直线对函数 f(x,y)f(x,y)f(x,y) 进行积分这个积分结果就是雷登变换后的函数 Rf\mathcal{R}fRf 在这条直线上的值 g(ρ,θ)∫−∞∞∫−∞∞f(x,y)δ(xcosθysinθ−ρ)dxdyg(\rho, \theta) \int ^{\infty}_{-\infty} \int ^{\infty}_{-\infty} f(x,y) \ \delta(x cos \theta y sin \theta - \rho) dxdy g(ρ,θ)∫−∞∞∫−∞∞f(x,y) δ(xcosθysinθ−ρ)dxdy 雷登变换的离散形式 g(ρ,θ)∑x0M−1∑y0N−1f(x,y)δ(xcosθysinθ−ρ)g(\rho, \theta) \sum ^{M-1}_{x0} \sum^{N-1}_{y0} f(x,y) \ \delta(x cos \theta y sin \theta - \rho) g(ρ,θ)x0∑M−1y0∑N−1f(x,y) δ(xcosθysinθ−ρ)
雷登变换将二维空间 xyxyxy 映射到了另一个二维空间 αs\alpha sαs称为直线空间。
雷登变换常被用于医学影像处理利用反雷登变换可以进行三维图像重建。 例程 9.23雷登变换正弦图 # # 9.23: 雷登变换正弦图from scipy import ndimagedef discreteRadonTransform(image, steps):channels image.shape[0]res np.zeros((channels, channels), dtypenp.float32)for s in range(steps):rotation ndimage.rotate(image, -s * 180/steps, reshapeFalse).astype(np.float32)res[:, s] sum(rotation)return res# # 读取原始图像plt.figure(figsize(9, 7))fileImg [Fig0534a.tif, Fig0534b.tif, Fig0534c.tif] # 原始图像 文件名for i in range(len(fileImg)):img cv2.imread(../images/fileImg[i], flags0) # flags0 读取为灰度图像imgRadon discreteRadonTransform(img, img.shape[0]) # Radon 变换print(img.shape, imgRadon.shape)plt.subplot(2, len(fileImg), i 1), plt.axis(off) # 绘制原始图像plt.title(origin image), plt.imshow(img, gray)plt.subplot(2, len(fileImg), i len(fileImg) 1), plt.axis(off) # 绘制 sinogram 图plt.title(Radon transform), plt.imshow(imgRadon, gray)plt.tight_layout()plt.show()本节完 版权声明 youcansxupt 原创作品转载必须标注原文链接(https://blog.csdn.net/youcans/article/details/123088031) Copyright 2022 youcans, XUPT Crated2022-2-25