重采样和插值的异同2019-11-15

重采样和插值

定义

一种影像数据处理方法。即影像数据重新组织过程中的灰度处理方法。影像采样是按一定间隔采集影像灰度数值的,当阈值不位于采样点上的原始函数的数值时,就需要利用已采样点进行内插,称为重采样 。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。

插值和重采样之间有一些关系。

重采样意味着改变一组采样的采样率。在图像的情况下,这些是在图像中的每个像素坐标处采样的像素值。在音频的情况下,这些是在每个时间点采样的幅度值。

重采样用于提高采样率(使图像变大)或减小采样率(使图像变小)。插值是计算采样点之间的值的过程。

所以,如果你重新取样的图像,你可以使用插值来做到这一点。有很多插值方法 - 最近邻,线性,立方体,lanczos等。每种方法都有不同的质量/性能。

如果你降低采样率,你可以得到别名。这是您尝试表示无法用新(较低)采样率表示的频率的地方。通常重采样还会包含滤波(不是插值)以避免混叠。

如果您将图像的大小加倍,那么每隔一个像素就会出现间隙。使用插值可以填补这些空白。 如果您增加或减少图像大小的一小部分,您可以在进行调整大小时查看源图像中处于分数像素位置的插值值。

克里金法通常用于内插地形而不是图像。

增加图像的分辨率不会改善它 - 您不会添加任何新信息。

使用simpleitk实现插值的方法

#设置一个Filter
resample = sitk.ResampleImageFilter()
#设置插值方式(1)
resample.SetInterpolator(sitk.sitkLinear)
#默认像素值(2)
resample.SetDefaultPixelValue( 0 );
#沿着x,y,z,的spacing(3)
#The sampling grid of the output space is specified with the spacing along each dimension and the origin.
newspacing = [0.5,0.5,0.5]
resample.SetOutputSpacing(newspacing)
#设置original(4)
resample.SetOutputOrigin(image.GetOrigin())
#设置方向(5)
resample.SetOutputDirection(image.GetDirection())
#有几个值(6)
size = [880,880,1014]#注意你这个设置的是Filter,有了original,spacing,number,就应该是新的吧
#经试验确实size是改变pixel value的当 【1000,1000,1000】时value是0.618怎么算到的?
#原来的是 512 * 512 * 203  之前的voxle spacing  是 0.859375 *  0.859375 * 2.49997
# 1000 10000 1000 这个是总的要求的属
# 所以这个应该是之前的 不是算得的
resample.SetSize(size)
#设置输入的数据 ??

#设置transform
#transform = sitk.Euler3DTransform()
#resample.SetTransform( transform )
resample.SetDefaultPixelValue(0)
new = resample.Execute(image)
print(new.GetSize())
data = sitk.GetArrayFromImage(new)

参考:https://blog.csdn.net/qq_36339966/article/details/86726817
https://blog.csdn.net/fanre/article/details/98503750

你可能感兴趣的:(重采样和插值的异同2019-11-15)