画像処理のためにparforループを使用したいと思います。私は1枚の画像と複数の画像を重ねて操作します。メモリの使用量を低く抑えるために、すべてのイメージをメモリに格納しないようにしたい。すべての画像を一緒にロードすることなく画像処理にPARFORループを使用する方法
Iはセル構造で始まる変数Imagepaths {} {}セル構造でセル内の異なる画像用 パスが含ま。 function1はすべての個別の画像で動作し、function2は画像のスタックで動作し、それらを1つの新しい画像に結合します。
たとえば、Imagepaths {} {}には12セルが含まれます。各セルには、画像のパスを含む1×5セルが含まれています。 function2は、このような1x5の画像スタックで動作します。
次のコードは最初に使用しようとしましたが、変数Images {}はPARFORループでエラーを返します。
parfor l = 1:numel(Imagepaths)
for k = 1:numel(Imagepaths{l})
Image = imread(Imagepaths{l}{k});
Images{k} = function1(Image)
end
Image2{l} = function2(Images)
end
私は以下の解決策がありましたが、すべての画像が保存されるため、多くのメモリが必要になるという欠点があります。
parfor l = 1:numel(Imagepaths)
for k = 1:numel(Imagepaths{l})
Image = imread(Imagepaths{l}{k});
Images{l}{k} = function1(Image)
end
end
parfor l = 1:numel(Imagepaths)
Image2{l} = function2(Images{l})
end
誰かが、すべての画像を保存するための解決方法について言及できますか。元のコードで
お返事ありがとうございます。実際、あなたのソリューションは、「イメージ」を一時的に強制するだけで、「パーフォ」を得るのに十分です。しかし、 "tmp"を使用することは、多くのことではありませんが、別のコアに不必要な情報を送信することもあります。 –