<font size="2"><font face="verdana,sans-serif">I solved it by transforming it into a function. If someone runs into a similar issue, the function is below:<br></font></font><div><font class="Apple-style-span" face="verdana, sans-serif"><br>

</font></div><div><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">//define type of &quot;pointer to function&quot; (does the actual combination)</span></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">typedef float (*CombineFunction)(std::vector&lt;float&gt;); </font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">InternalImageType::Pointer combineClassifiers</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    (std::vector&lt;InternalImageType::Pointer&gt; classifiers,</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    CombineFunction combinationMethod)</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">{</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    InternalImageType::Pointer output=InternalImageType::New();</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    output-&gt;CopyInformation(classifiers[0]);</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    output-&gt;SetRegions(output-&gt;GetLargestPossibleRegion());</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    output-&gt;Allocate();</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    itk::ImageRegionIterator&lt;InternalImageType&gt; out(output, output-&gt;GetLargestPossibleRegion());</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    unsigned i=0,nIn=classifiers.size();</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    std::vector&lt;float&gt; probabilities(nIn); //individual classifier results</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    InternalImageType::PointType p;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    InternalImageType::IndexType ind0, indN;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    while(!out.IsAtEnd())</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    {</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        ind0=out.GetIndex();</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        probabilities[0]=classifiers[0]-&gt;GetPixel(ind0);</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        output-&gt;TransformIndexToPhysicalPoint(ind0, p);</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        for (i=1; i&lt;nIn; i++) //collect from input images into std::vector</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        {            </font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">            classifiers[i]-&gt;TransformPhysicalPointToIndex(p, indN);</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">            probabilities[i]=classifiers[i]-&gt;GetPixel(indN);</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        }</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        </font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        out.Set(combinationMethod(probabilities)); //calculate output using chosen method</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">        ++out;</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    }</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    return output;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">}</font></div></div><div><font class="Apple-style-span" face="verdana, sans-serif"><br></font><div class="gmail_quote">2011/8/9 Dženan Zukić <span dir="ltr">&lt;<a href="mailto:dzenanz@gmail.com">dzenanz@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><font face="verdana, sans-serif">Hi guys,</font><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">I am trying to create a filter with n+m inputs and 1 output. n inputs have full size (the whole image), while the remaining m inputs are only a certain sub-region of that image (schematic attached).</font></div>


<div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">I have written all the code, and it works well for the case of 4 same-sized inputs. But when 3 cropped inputs are added, I hit and exception in</font></div>


<div><span style="font-family:verdana, sans-serif">d:\sdk\itk4\modules\core\common\include\itkImageToImageFilter.hxx, line 253</span></div><div><font face="verdana, sans-serif"><div>
Inputs do not occupy the same physical space!</div><div>InputImage Origin: [26.107, -141.741, 231.561], InputImage4 Origin: [26.4835, -27.7276, 75.3783]</div><div><br></div><div>The main reason I wrote this logic as a filter is that it is easily parallelizable and I wanted to take advantage of the filter multithreading infrastructure.</div>


<div><br></div><div>Of course, I want to produce the output the same size (and position) as the smaller images, sampling larger images by voxel position, not index.</div><div><br></div><div>Is there some workaround for this limitation or should I just abandon multithreading and write normal sequential function?</div>


</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">Regards,</font></div><div><font face="verdana, sans-serif">Dženan</font></div>
</blockquote></div><br></div>