2012-04-18 88 views
1

的阅读款我有大的图片我想加载到MATLAB,然后应用一些处理过的序列。由于图像的大小,读取它们需要很长时间,并且非常快速地填充计算机内存。MATLAB:图像

不过,我只在图像的中间部分,由100个像素左右,约100的区域感兴趣。

有没有办法只能在图像,从而节省时间和记忆的那部分读出?

目前我使用:

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

然而,imread()加载的整体形象,而这需要很长的时间。有没有办法只阅读我感兴趣的部分?

(一个过程是要经过每个图像裁剪成较小的一个,并重新保存它。但我宁愿不要裁剪图像)。

感谢, labjunky

+0

没有指定既不是文件格式,位深度也不色彩模式(灰度,RGB,其它的呢?)。这些数据对寻找替代解决方案会很有帮助。 – nrz 2012-04-18 09:03:02

+0

它们是灰度,1024×1392像素,16位tiff图像。 – labjunky 2012-04-18 09:31:08

+0

我不认为Matlab有这样做的任何简单的方法。根据格式的不同,您可以使用[内存映射](http://www.mathworks.co.uk/help/techdoc/ref/memmapfile.html)编写自己的图像加载器,以随机访问文件。尽管你需要对格式有非常深入的理解。 – Richante 2012-04-18 09:40:26

回答

2

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

0

您需要使用类似fopen在部分手动打开文件,并读取其中的内容。当然你需要处理大量的编码/解码。或者换一种方式来增加你的系统的性能swap space.如果你的内存出错了。