我正在处理30,000 x 30,000像素的TIFF图像,并希望一次平均11个这些图像。
如果可能的话,我宁愿使用python来做,并且想知道什么是最好的方法?
我应该使用OpenCV
还是可以仅使用numpy
完成?
平均每个RGBA通道是否会独立提高性能?
还是应该将图像分成较小的图像并独立处理,然后将结果拼接在一起?
像这样用openCV直接处理它会导致内存错误:
im0 = cv2.imread( '5014.tif' )
im1 = cv2.imread( '5114.tif' )
im2 = cv2.imread( '5214.tif' )
im3 = cv2.imread( '5314.tif' )
im4 = cv2.imread( '5414.tif' )
cv2.imwrite( 'avg.tif', .01*im0 -.002*im1 -.002*im2 -.002*im3 -.002*im4 )
最佳答案
您的“堆栈”具有“形状” (30000, 30000, 4, 11)
。我不会担心以任何方式手动遍历这最后两个维度-我会担心您遇到的内存不足。
我不知道OpenCV语法,但是如果您可以读取一张图像而没有内存问题,请执行以下操作:
image_filenames = ['5014.tif', '5114.tif', ...]
N = float(len(image_filenames))
output = # empty array of image dimensions
for image_filename in image_filenames:
# read in this image
# add image / N to output
# save the output
关于python - 如何在python/OpenCV中执行平均图像的序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27000663/