EELS面扫描转线扫描脚本适配DM 3.0及更高版本问题咨询
问题原因
DM 3.0及更高版本重构了EELS谱像(SI)的识别逻辑,不再仅通过原有两个元数据字段判定数据类型,新增了空间维度数、SI类型、维度标签等判定规则,因此原有脚本输出的三维数据会被默认判定为2D面扫谱像,触发错误的面扫处理流程。
适配修改方案
需要在原有脚本ImageCopyCalibrationFrom和设置元数据的代码段之间,新增以下适配代码:
// 为各维度设置明确标签,供DM识别维度用途 sum.ImageGetDimension(0).SetDimensionLabel("Distance") sum.ImageGetDimension(1).SetDimensionLabel("Unused") sum.ImageGetDimension(2).SetDimensionLabel("Energy loss") // 新增DM3+识别线扫所需的专属元数据 sum.SetStringNote("Meta Data:SI:Type", "Line Scan") sum.SetStringNote("Meta Data:SI:Spatial Dimensions", "1") // 强制默认显示为线扫谱图模式,避免调用面扫渲染逻辑 sum.ImageGetImageDisplay(0).LinePlotSetYAxisMode(2)
修改后完整脚本
image source source := getFrontImage() number sizeX,sizeY,sizeZ source.Get3Dsize(sizeX,sizeY,sizeZ) Result( "Original size:"+ sizeX +"; "+ sizeY+"; "+sizeZ+""+"\n" ) image sum number regionsizeX = 1 number regionsizeY = sizeY number row,col Result( "new size:"+ regionsizeX +"; "+ regionsizeY+"; "+row+""+row+" "+"\n" ) sum := RealImage("Line Scan of [0,0,"+regionSizeY+","+regionSizeX+"]",4,sizeX/regionSizeX,sizey/regionsizeY,sizeZ) sum = 0 for (row=0;row<regionsizeY;row++) for (col=0;col<regionSizeX;col++) { OpenAndSetProgressWindow("Doing sub-block","x = "+col," y = "+row) sum += Slice3(source,col,row,0,0,sizeX/regionSizeX,regionsizeX,1,sizeY/regionSizeY,regionSizeY,2,sizez,1) } OpenAndSetProgressWindow("","","") ImageCopyCalibrationFrom(sum, source) sum.setdisplaytype (1) // 以下为新增适配DM3+的代码 sum.ImageGetDimension(0).SetDimensionLabel("Distance") sum.ImageGetDimension(1).SetDimensionLabel("Unused") sum.ImageGetDimension(2).SetDimensionLabel("Energy loss") sum.SetStringNote("Meta Data:SI:Type", "Line Scan") sum.SetStringNote("Meta Data:SI:Spatial Dimensions", "1") sum.ImageGetImageDisplay(0).LinePlotSetYAxisMode(2) // 新增代码结束 sum.SetStringNote( "Meta Data:Format", "Spectrum image" ) sum.SetStringNote( "Meta Data:Signal", "EELS" ) showimage(sum)
内容的提问来源于stack exchange,提问作者together
相关产品推荐
相关产品推荐

