将 ImageJ XY 坐标文件读入 matlab

问题描述 投票:0回答:1

我正在尝试使用下面的代码读取 ImageJ XY 坐标文件(附件),但我得到了一个奇怪的输出。知道我做错了什么吗?

clc;
clear;
close all;
imgMatrix = readmatrix("E:/fd1.txt"); 
imgMatrix(:,3) = []
x=imgMatrix(:,1);y=imgMatrix(:,2);
BW = poly2mask(x,y,ceil(max(y)) ,ceil(max(x)));
imshow(BW);

原图:

输出图像:

fd1.txt 文件: https://mega.nz/file/vE0SxDgb#rQuWCsH8H2fYvuzGTSMgjyMMdyZGfQYMhLJ3zdXcJB4

非常感谢

matlab imagej
1个回答
0
投票

我必须承认,我没有使用 MathLab 的经验,但让我解释一下 ImageJ 使用的格式,如果您按照“分析>>工具>>保存 XY 坐标...”导出值。

如果像所讨论的情况一样,8 位灰度值图像的背景是黑色(零),我将首先反转图像(重要!)并将“保存 XY 坐标”对话框中的背景值设置为零,并选中“反转 y 坐标关闭”。

在下文中,我将提供一个 ImageJ 宏,它通过从必须使用后缀“.tsv”而不是“.txt”保存的数据重建图像来间接解释数据的结构。首先在ImageJ中打开这个数据文件,然后运行宏:

requires("1.54g")
x=Table.getColumn("C1");
y=Table.getColumn("C2");
v=Table.getColumn("C3");
Array.getStatistics(x,mi,xMax);
Array.getStatistics(y,mi,yMax);
newImage("Reconstruction","8-bit black",xMax+1,yMax+1,1);
for (i=0;i<x.length;i++)
      setPixel(x[i],y[i],v[i]);
run("Invert");
exit();

HTH

© www.soinside.com 2019 - 2024. All rights reserved.