在IDL中读取多个图像

时间:2015-01-22 21:35:16

标签: image idl-programming-language

我在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

1 个答案:

答案 0 :(得分:2)

使用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