我有一系列大图像,我想加载到matlab中,然后也应用一些处理。由于图像尺寸的原因,读取它们需要很长时间,并且可以非常快速地填充计算机内存。
但是,我只对图像的中间部分感兴趣,这个区域大约有100 x 100像素左右。
有没有办法只读取图像的那一部分,从而节省时间和内存?
目前我正在使用:
ROIx = 450:550;
ROIy = 650:750;
image = double( imread( filename ) );
image = image(ROIx, ROIy);
但是,imread()会加载整个图像,这需要很长时间。有没有办法只阅读我感兴趣的部分?
(一个程序是通过并将每个图像裁剪成一个较小的图像并重新保存。但我不想裁剪图像。)
谢谢, labjunky
答案 0 :(得分:2)
Matlab 2012a表示您可以从JPEG2000和TIFF图像中读取部分图像。查看imread的文档,检查选项'PixelRegion'以读取TIFF。
答案 1 :(得分:0)
您需要使用类似fopen的内容来打开文件并手动阅读部分内容。当然,您需要处理大量的编码/解码。或者反过来更多的是增加你的系统swap space.如果你出现内存错误。