在 IDL 中读取多个图像

Reading multiple images in IDL

我正在用 IDL 编写一个程序,它需要从一个目录中读取 n 幅图像(每幅 m 像素),将它们转换为灰度图,将每幅图像连接成一个向量,然后形成一个 m * n 矩阵数据。

到目前为止,我已经设法读取单个图像并将其转换为灰度矢量,但我不知道如何将其扩展到读取多个图像文件。

任何人都可以建议我如何调整我的代码来做到这一点吗? (图像文件的大小都相同,并以方便的文件名存储在同一目录中 - 即 testpicture1、testpicture2 等)

谢谢

    pro readimage

    image = READ_IMAGE('Z:\My Documents\testpicture.jpg')

    redChannel = REFORM(image[0, *, *])
    greenChannel = REFORM(image[1, * , *])
    blueChannel = REFORM(image[2, *, *])

    grayscaleImage  = BYTE(0.299*FLOAT(redChannel) + $
        0.587*FLOAT(greenChannel) + 0.114*FLOAT(blueChannel))

    imageVec = grayscaleImage[*]

    end

使用FILE_SEARCH查找给定名称的图像的名称和数量:

filenames = FILE_SEARCH('Z:\My Documents\testpicture*.jpg', count=nfiles)

您可能还想声明一个数组来保存您的结果:

imageVec = bytarr(m, nfiles)

然后使用 FOR 循环遍历文件,执行您已经在做的事情:

for f = 0L, nfiles - 1L do begin
  ; stuff you are already doing
  imageVec[*, f] = grayscaleImage[*]
endfor