【发布时间】:2015-09-09 22:44:53
【问题描述】:
我的编程经验有限,需要您的帮助。
我现在的情况是,我有一堆黑白 .tiff 图像(每个 10 Mb 的大约 400 个),我需要将其转换为 xyz 坐标加上灰度值,并将所有这些图像编译成具有 x、y、z、灰度的单个文本文件(z 坐标,这样:文件夹的第一张图像 z=0000,第二张图像 0001...与文件夹中的图像一样多的 z 坐标)。
我有一个脚本(我很不熟悉,但我认为它是用 Image Magick 完成的)它可以做到,但一次只能处理一个图像,并且只添加 x、y 坐标和一个值灰度,但没有 z。
脚本,从我在这里发布的上一个版本修改而来(因为现在它使用灰度并且只存储我需要的值)是:
## The exact format of the TXT image is defined by the convert command, then 'tail' is used to junk the header,
## 'tr' to character replace every non-number character with a single space, so that the later 'while' can read
## it easily, junking any comment numbers that may have been left.
convert -depth 8 -colorspace RGB $1 txt:- |
tail -n +2 | tr -cs '0-9.\n' ' ' |
while read x y Gray junk;
do
if [ "$Gray" -eq 0 ]; then
echo "$x,$y $Gray"
done
为了运行它,我把它放在了 linux 终端中:
chmod +x img.sh
然后(我选择了与图像相同的名称,但使用 .txt 作为文件名):
./img.sh pic0000.tif > pic0000.txt
我也尝试将其更改为一次完成所有操作,替换行:
convert -depth 8 -colorspace RGB $1 txt:- |
与
convert -depth 8 -colorspace RGB $* txt:- |
并将其放入终端
chmod +x ./img.sh
./img.sh *.tif > *.txt
现在它将所有文件与 x y 灰度放在一个中,但我无法添加 z 值。
顺便说一句,创建txt文件需要很长时间。
最终的 XYZ 文件的第一行必须是,例如:
0 0 0 value in greyscale
1 0 0 value in greyscale
...
and the last:
3095 2951 400 value in greyscale
你能给我任何线索、想法或解决方案吗?任何帮助将不胜感激。
【问题讨论】:
-
脚本是fortran吗?
-
如果你做了什么,也添加一些源代码?
-
您的雇主内部是否有任何 Fortran 专业知识?他们将紧急的编程工作交给没有编程经验的生物学家似乎是不合理的。
-
您好。我故意删除了关于截止日期的注释,因为它们有时会产生阻止人们回答的意想不到的效果 - 请记住,这里的帮助者是志愿者,他们在空闲时间回答,主要是为了好玩。我看到你已经回滚了。另请记住,截止日期/紧迫性的注释对于在截止日期过去后会看到您的问题的数百名读者来说并不是很有趣,这也是我们喜欢将它们删除的另一个原因。
-
您能否在您的帖子中添加 1. 将 Image0003 转换为 XY 文件的命令,2. XY 文件的前几行和最后几行,3. 文件名XY 文件,以及 4. XYZ 文件的对应行应该是什么?
标签: linux bash terminal tiff cartesian-coordinates