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