2012-04-18 61 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.如果你的內存出錯了。