Hello, I created an algorithm which work on Image Patches. I go through matrix of an image and apply a function of a neighborhood predefined.
For some reason MATLAB won't allow me using the 'parfor' command.
Here is the code:
mInputFrames = padarray(mInputFrames, [searchWinEffRadius searchWinEffRadius], 'replicate');parfor iRowIdx = 1:videoFramesNumRows for jColIdx = 1:videoFramesNumCols paddedImageRowIdx = iRowIdx + searchWinEffRadius; paddedImageColIdx = jColIdx + searchWinEffRadius; vSearchWindowRowIdx = [(paddedImageRowIdx - searchWinEffRadius):(paddedImageRowIdx + searchWinEffRadius)]; vSearchWindowColIdx = [(paddedImageColIdx - searchWinEffRadius):(paddedImageColIdx + searchWinEffRadius)]; for kFrameIdx = 1:videoFramesNumFrames vPatches = ((kFrameIdx - 1) * singleFrameSearchWindowNumPixels) + ... [1:singleFrameSearchWindowNumPixels]; mCurrSearchWindow = mInputFrames(vSearchWindowRowIdx, vSearchWindowColIdx, kFrameIdx); mCurrSearchWindowPatches(:, vPatches) = Im2ColSliding(mCurrSearchWindow, [localWinSize, localWinSize]); end mOutputFrame(iRowIdx, jColIdx) = PatchFilter(mCurrSearchWindowPatches, refPixelRowIdx, refPixelColIdx, vGaussianKernel, weightsStd); end end
The error I'm getting: "The PARFOR loop cannot run due to the way variable 'mCurrSearchWindowPatches' is used.
The work on the loops is per pixel which is completely indepndent (In the result) from its neighborhood. What can I do to allow the parallelization to kick in?
Thank You.
Best Answer