将ImageJ XY坐标文件读入matlab

6ju8rftf  于 7个月前  发布在  Matlab
关注(0)|答案(2)|浏览(91)

我试图使用下面的代码读取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
非常感谢

mbskvtky

mbskvtky1#

下面请找到一个ImageJ宏,它保存了二进制值图像的轮廓坐标:

requires("1.54g");
run("Input/Output...", "jpeg=80 gif=-1 file=.txt");
run("Create Selection");
getSelectionCoordinates(xpoints, ypoints);
Array.show(xpoints, ypoints);
saveAs("text");
exit();

字符串

xj3cbfub

xj3cbfub2#

我必须承认,我没有使用 MATLAB 的经验,但让我解释一下 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

相关问题