matlab:读取图像的子部分

时间:2012-04-18 08:58:01

标签: image matlab image-processing

我有一系列大图像,我想加载到matlab中,然后也应用一些处理。由于图像尺寸的原因,读取它们需要很长时间,并且可以非常快速地填充计算机内存。

但是,我只对图像的中间部分感兴趣,这个区域大约有100 x 100像素左右。

有没有办法只读取图像的那一部分,从而节省时间和内存?

目前我正在使用:

ROIx = 450:550;
ROIy = 650:750;
image = double( imread( filename ) );
image = image(ROIx, ROIy);

但是,imread()会加载整个图像,这需要很长时间。有没有办法只阅读我感兴趣的部分?

(一个程序是通过并将每个图像裁剪成一个较小的图像并重新保存。但我不想裁剪图像。)

谢谢, labjunky

2 个答案:

答案 0 :(得分:2)

Matlab 2012a表示您可以从JPEG2000和TIFF图像中读取部分图像。查看imread的文档,检查选项'PixelRegion'以读取TIFF。

答案 1 :(得分:0)

您需要使用类似fopen的内容来打开文件并手动阅读部分内容。当然,您需要处理大量的编码/解码。或者反过来更多的是增加你的系统swap space.如果你出现内存错误。