【问题标题】:How to extract a line of pixels (roi) from video, combined lines in a single .tif image?如何从视频中提取一行像素(roi),在单个 .tiff 图像中合并行?
【发布时间】:2014-07-14 16:41:23
【问题描述】:

我是编程新手,我正在尝试使用 ImageJ 和 Jython 从视频中提取单行并将这些行组合成时间进程。我正在尝试创建一个 videokymogram(即http://www.kymography.com/supp_demo.html)!

我的尝试是这样的:

from ij import ImagePlus, IJ
from ij.process import FloatProcessor

img = IJ.getImage() 
roi = img.getRoi()
StackSize = 100  #img.getImageStackSize() 

pixels = roi.getPixels()
Length = len(pixels)
Width = 1

total_pixels = [[0] *len(pixels)] * StackSize
t_pixels = []


for j in range (1, StackSize):
    img.setSlice (j)
    roi = img.getRoi()
    pixels = roi.getPixels()
    for i in xrange (len(pixels)):
        pixels [i] = pixels [i] 
    total_pixels[j-1] = pixels 

fp = FloatProcessor (Length, StackSize,total_pixels)
imp = ImagePlus ("White Noise", fp) 
imp.show()

但是它返回: TypeError: ij.process.FloatProcessor(): 3rd arg can't be coerced to double[], int[], float[]

有关如何解决此问题的任何提示。我也许可以迭代一个附加像素变量的文本文件,但我不知道该怎么做。 欢迎任何帮助。 BTW,如果你想试试,你可以使用斐济的 Fly Brain 样本。

非常感谢

【问题讨论】:

    标签: python line jython imagej roi


    【解决方案1】:

    您得到的错误表明total_pixels 不是FloatProcessor 类的任何构造函数都需要的double[]、int[] 或float[] 类型的数组。

    在 Python 中构建 Java 数组的一种好方法是使用 jarray,这是用于 Java 数组的 Jython 模块,如 Fiji wiki 的 Jython Scripting 文档中所述。

    我修改了您的代码,还需要在 for 循环中进行一些修复:

    from ij import ImagePlus, IJ
    from ij.process import FloatProcessor
    from jarray import zeros
    
    img = IJ.getImage() 
    roi = img.getRoi()
    stackSize = img.getImageStackSize() 
    
    pixels = roi.getPixels()
    length = len(pixels)
    
    total_pixels = zeros(length * stackSize, 'f')
    
    for j in xrange (stackSize):
        img.setSlice (j+1)
        roi = img.getRoi()
        pixels = roi.getPixels()
        for i in xrange (length):
            total_pixels[j*length+i] = pixels [i]
    
    fp = FloatProcessor (length, stackSize, total_pixels)
    imp = ImagePlus ("White Noise", fp) 
    imp.show()
    

    FWIW,其他人使用 ImageJ 来处理 kymographs:你可以找到 tutorial on the Fiji wiki 以及一些 plugins producing kymographs

    【讨论】:

    • 非常感谢您修复脚本。也感谢您的提示!
    • 嗨 Jan,我正在尝试根据 [ini.uzh.ch/~acardona/fiji-tutorial/index.html#s1] 将 kymograms 的新图像保存到一个文件夹中,使用:`imp = IJ.getImage() fs = FileSaver (imp) folder = " C:/Users/myfolder/Desktop/ImageJ_files" filepath = folder + "/" + "Videokymogram.tiff" fs.saveAsTiff(filepath)' 它会生成一个空图像,里面什么都没有。有可能修复它吗?再次感谢
    • 试试IJ.saveAsTiff(imp, path)(见javadoc for Filesaver.saveAsTiff)。如果这不起作用,只需打开一个包含更多详细信息的新问题。此外,咨询ImageJ mailing list 通常会有所帮助,因为 ImageJ 专家读者比 stackoverflow 上的读者多得多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多