2016-05-19 10 views
0

ループ内で数千のTIFファイル(サイズは3500x3500)を読む必要があります。tifファイルのサブセクションを読み込んでより高速に読み込むにはどうしたらいいですか?

そして、imreadが最大のボトルネックです。私は行のcolエクステントを持っているイメージの小さなセクションでのみ動作します。

インポートプロセスを大幅に改善するために、イメージのサブセクションをインポートすることはありますか?その他の提案はありますか?

これはコードのインポートセクションである:

for m = 1:length(pFileNames) 
    if ~exist(precipFileNames{m}, 'file') 
     continue; 
    end 
    pConus = imread(pFileNames{m}); 
end 

P.S.私はPixelRegionsを使用しようとしました。しかし、私はMatlabの2014持っている、と私はこのエラーを取得する:次に組み合わせ

vips extract_area INPUT.TIF OUTPUT.TIF left top width height 

Undefined function or variable 'PixelRegion'. 
+0

私の答えはあなたの問題を整理しましたか?もしそうなら、それをあなたの答えとして受け入れることを検討してください - 投票数の横にある緑色のチェックマーク/チェックマークをクリックしてください。そうでない場合は、私が、または他の誰かがあなたをさらに助けることができるように、何がうまくいかないと言ってください。ありがとう。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

答えて

3

は次のようにコマンドを使用して、各画像から希望のエリアを抽出するために、コマンドラインでのVIPの使用を検討してください私はSUG

parallel vips extract_area {} sub_{} left top width height ::: *.tif 

GNU持つことは、一度に4または8を行うには、このような何かをパラレルあなたが実験を開始する前にGESTあなたは...バックアップを作成

3,500x3500画素のサイズにして、GNUパラレル+のVIPコマンドを実行したすべての私は、ランダムなデータの千枚のTIF画像を作成し

ベンチマークのタイミング、 1,000個のTIFのそれぞれから100×100ピクセルの領域を抽出する。

妥当な仕様のiMacでは、1000個のサブ画像が抽出され、11秒でディスクに書き込まれました。

+0

ありがとうございます。これを試してみましょう... – maximusdooku

関連する問題