1

我编写了一个可以获取图像的线投影(强度分布)的代码,我想将此线投影(强度分布)转换/导出到 excel 表,然后对所有 Y 坐标进行排序。例如,除了所有Y坐标的最大值和最小值,我想知道最大的5个坐标值和最小的坐标值。有没有什么代码可以达到这个功能?谢谢,

image line_projection
Realimage imgexmp
imgexmp := GetFrontImage()
number samples = 256, xscale, yscale, xsize, ysize
GetSize( imgexmp, xsize, ysize )
line_projection := CreateFloatImage( "line projection", Xsize, 1 )
line_projection = 0
line_projection[icol,0] += imgexmp
line_projection /= samples
ShowImage( line_projection )
4

2 回答 2

0

查找值的“排序”列表

如果您需要对大型值列表(即大图像)进行排序,则以下内容可能不够。但是,如果您的目标是用相对较少的 X 获得“x 最高”值,那么以下代码就可以了:

number nFind = 10
image test := GetFrontImage().ImageClone()
Result( "\n\n" + nFind + " highest values:\n" )
number x,y,v
For( number i=0; i<nFind; i++ )
{
    v = max(test,x,y)
    Result( "\t" + v + " at " + x + "\n" )
    test[x,y] = - Infinity()
}

使用副本并随后通过更改该像素值“删除”最大值。该max命令很快——即使对于大图像也是如此——但for-loop单个像素的迭代和设置很慢。因此,如果数据很大,这个脚本对于完整的“排序”数据来说太慢了,但它可以快速获得 n 个“最高”值。

于 2016-02-24T08:38:12.637 回答
0

这是一个非编码答案:

如果您在 DigitalMicrograph 中有 LinePlot 显示,您可以简单地将其复制粘贴到 Excel 中以获取数字。

即最前面的 LinePlot 图像,按 CTRL + C 复制
(确保上面没有 ROI)。
切换到 Excel 并按 CTRL + V。
完成。
在此处输入图像描述==>在此处输入图像描述

于 2016-02-24T08:30:18.717 回答