我想沿着图像数据的x或y方向进行累加和。DM脚本中是否有任何功能,例如Matlib中的“ cumsum”?谢谢!
例如4x4像素的图像,像素值为
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
沿x方向的累积总和将导致:
1 1+2=3 1+2+3=6 1+2+3+4=10
2 5 9 14
3 7 12 18
4 9 15 22
有多种方法可以实现此目的,但是最快和最简单的方法可能是创建图像的“完全合并”版本。
image img := GetFrontImage()
number sizeX, sizeY
img.GetSize( sizeX, sizeY )
image vSum = Rebin( img, 1, sizeY )
image hSum = Rebin( img, sizeX, 1 )
vSum.SetName( "vertical sum" )
vSum.ShowImage()
hSum.SetName( "horizontal sum" )
hSum.ShowImage()
如果要得到2D图像,其中每个像素都将其所有像素的总和保持在左侧,则可以通过将偏移图像相加来做到这一点:
image img := GetFrontImage()
number sizeX, sizeY
img.GetSize( sizeX, sizeY )
image vCumSum := img.ImageClone()
for( number x = 1; x<sizeX ; x++ )
{
hCumSum += offset( img, -x, 0 )
}
hCumSum.SetName( "horizontal sum (cumulative)" )
hCumSum.ShowImage()
或者,您可以使用内在变量来创建表达式,如下所示:
image img := GetFrontImage()
image hCumSum := 0 * img.ImageClone()
hCumSum += img[icol,irow] + hCumSum[ icol - 1, irow ]
hCumSum.SetName( "horizontal sum (cumulative)" )
hCumSum.ShowImage()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句