gpt4 book ai didi

java - ImageJ 中一幅图中的 vector (Java)

转载 作者:行者123 更新时间:2023-12-01 09:59:54 25 4
gpt4 key购买 nike

我在 ImageJ 中编写了一个插件,我需要一些想法。我有一个插件可以为堆栈中的每个图像生成绘图。因此,如果堆栈中有 4 个图像,它将从 vector 生成 4 个图。但我需要一张有 4 条曲线的图。请帮我。 `

这是代码。

public void run(String arg){    
openImage();
if (cancel==false){
options();
}
if (cancel==false){
for (int k=0;k<imp.getStackSize();k++){
imp.setSlice(k+1);
generateESFArray("ESF Plot",imp,roi);
generateLSFArray("LSF Plot",ESFArray);
calculateMax();

ESFArrayF=alignArray(ESFArray);

if (cancel==false){
LSFArrayF=alignArray(LSFArray);

}
if (cancel==false){
ESFVector=averageVector(ESFArrayF);
}

if (cancel==false){
LSFVector=averageVector(LSFArrayF);
int aura = (LSFVector.length * 2);
LSFDVector = new double [aura];
int j = 0;
int aura2 = (LSFVector.length);

for(i=0;i<(LSFDVector.length-3); i++){

if(i % 2 == 0) {
LSFDVector[i]= LSFVector[j];
j=j+1;
}else {
LSFDVector[i]= ((0.375*LSFVector[(j-1)]) + (0.75*LSFVector[(j)]) - (0.125*LSFVector[(j+1)]));

}

}

LSFDVector[i] = ((LSFVector[j-1] + LSFVector[j])*0.5);
LSFDVector[i+1] = LSFVector[j];
LSFDVector[i+2] = LSFVector[j];


int indexMax = 0;
double valorMax = LSFDVector[0];
for(int i=0;i<LSFDVector.length;i++){
if(valorMax < LSFDVector[i]){
indexMax = i;
valorMax = LSFDVector[i];
}
}

i=indexMax;
LSFDVector[i-1]=((LSFDVector[i-2] + LSFDVector[i])*0.5);

MTFVector=fftConversion(LSFDVector, "MTF");


Max=obtenerMax();
SPPVector=fftConversion(Max,"SPP");
LSFArrayF=alignArray(LSFArray);


if (MTFButton.isSelected()){
generatePlot (MTFVector,"MTF");
...
}

void generatePlot(double[] Vector, String plot){

double[]xValues;
String ejeX="pixel";
String ejeY="";
String allTitle="";
ImageProcessor imgProc;

xValues=calculateXValues(Vector,plot);

//plot titles
if (plot=="ESF"){
ejeY="Grey Value";
...

allTitle=plot + "_" + title;
plotResult = new Plot(allTitle, ejeX, ejeY, xValues, Vector);

//plot limits
if (plot=="ESF"){
plotResult.setLimits(1,Vector.length,0,yMax);
}

plotResult.draw();
plotResult.show();

}
`

最佳答案

ij.gui.Plot class有一个 addPoints 方法,允许您将多个数据系列添加到绘图中。 Groovy下面的脚本说明了它的用法。只需将代码粘贴到 ImageJ 的 script editor 中即可,选择语言 > Groovy 并按运行来尝试。

import ij.gui.Plot

plot = new Plot("Multiple Line Plot", "x values", "y values", (double[])[0,1,2,3,4], (double[])[0.1,0.3,0.5,0.6,0.7])
plot.addPoints((double[])[0,1,2,3,4], (double[])[0.2,0.15,0.1,0.05,0.05], Plot.LINE)
plot.setLimits(0, 4, 0, 1)
plot.draw()
plot.show()

有关 ImageJ API 使用的任何进一步问题,您可能会在 ImageJ forum 上获得更好的帮助。 .

关于java - ImageJ 中一幅图中的 vector (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com