I tried to generate a binary image based on a random number. I observed something I haven&#39;t understood. What I did was quite simple. I generated a uniform random number between 0 and 1. If the random number is smaller than 0.5, then the image intensity value was set to zero, otherwise 1000. I tested the idea by generating a 2D image. What I found was that when the image sizes (both x and y) were set to 2^N (N= 1, 2, 3, 4....), the generated image was fine. With other image sizes, there were two interesting observations: (1) the generated image was not a binary image, ie, the image intensities were not 0 and 1000 but there were some intermediate values; (2) the sizes of the generated image were not the sizes I specified. For instance, if I specified a 3X3 region, but the generated image would have 4X4 sizes. I don&#39;t know what I did wrong here. Any help or suggestions would be appreciated!&nbsp;<div>
<br></div><div><br></div><div>Here is the code I used to generate the image.</div><div><br></div><div><div>#include &quot;itkImage.h&quot;</div><div><br></div><div>#include &quot;itkImageFileReader.h&quot;</div><div>#include &quot;itkImageFileWriter.h&quot;</div>
<div><br></div><div>#include &lt;fstream&gt;</div><div>//#include &lt;cstdlib&gt;</div><div>//#include &lt;ctime&gt;</div><div><br></div><div>#include &quot;rng.h&quot;</div><div><br></div><div>//using namespace std;</div>
<div><br></div><div>//---------------------------------------------------------------------------------------</div><div>int main( &nbsp; )</div><div>{</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>const &nbsp; unsigned int &nbsp; Dimension = 2;</div>
<div>&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>typedef unsigned short &nbsp;PixelType;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>typedef itk::Image&lt; PixelType, Dimension &gt;<span class="Apple-tab-span" style="white-space:pre">                                                </span> &nbsp;ImageType;</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::Pointer image = ImageType::New();</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::IndexType start;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>start[0] = 0; start[1] = 0; //start[2] = 0;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::SizeType size;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>size[0] = 33; size[1] = 33; //size[2] = 1;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::RegionType region;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>region.SetSize( size ); region.SetIndex( start );</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>image-&gt;SetRegions( region );</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>image-&gt;Allocate();&nbsp;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>/*</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::SpacingType spacing;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>spacing[0] = 1.0; spacing[1] = 1.0; spacing[2] = 0.0;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>image-&gt;SetSpacing( spacing );</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ImageType::PointType origin;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>origin[0] = 0.0; origin[1] = 0.0; origin[2] = 0.0;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>image-&gt;SetOrigin( origin );</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>*/</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>RNG rdm;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>int counter=0;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>for ( int i = 0; i &lt; size[0]; i++) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>for ( int j = 0; j &lt; size[1]; j++ ) {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>//for ( int k = 0; k &lt; size[2]; k++ ) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span></div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>ImageType::IndexType pixelIndex;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>pixelIndex[0] = i;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>pixelIndex[1] = j;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>//pixelIndex[2] = k;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>double prob = rdm.uniform();</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>//std::cout &lt;&lt; &quot;probability = &quot; &lt;&lt; prob &lt;&lt; std::endl;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>if (prob &lt;= 0.5) {&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>ImageType::PixelType pixelValue = itk::NumericTraits &lt; PixelType &gt;::Zero;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>image-&gt;SetPixel( pixelIndex, pixelValue );</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>counter++;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else {&nbsp;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>ImageType::PixelType pixelValue = 1000;</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>image-&gt;SetPixel( pixelIndex, pixelValue );</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>//}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>for ( int i = 0; i &lt; size[0]; i++) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>for ( int j = 0; j &lt; size[1]; j++ ) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>//for ( int k = 0; &nbsp;k &lt; size[2]; k++ ) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span></div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>ImageType::IndexType pixelIndex;</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>pixelIndex[0] = i;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>pixelIndex[1] = j;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>//pixelIndex[2] = k;</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>ImageType::PixelType outPixel = image-&gt;GetPixel(pixelIndex);&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>//std::cout &lt;&lt; &quot;pixel value = &quot; &lt;&lt; outPixel &lt;&lt; std::endl;</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>//}</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>std::cout &lt;&lt; counter &lt;&lt; &quot; pixels of &quot; &lt;&lt; size[0]*size[1] &lt;&lt; &quot; have zero values.&quot; &lt;&lt; std::endl;</div>
<div><br></div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>typedef itk::ImageFileWriter&lt; &nbsp;ImageType &gt;<span class="Apple-tab-span" style="white-space:pre">                                                </span> &nbsp;WriterType;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>WriterType::Pointer imgWriter = WriterType::New();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>imgWriter-&gt;SetInput( image );</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>imgWriter-&gt;SetFileName( &quot;test.vtk&quot; );</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>imgWriter-&gt;Update();</div><div>
<br></div><div>&nbsp;</div><div><br></div><div><br></div><div><br></div><div>&nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>return EXIT_SUCCESS;</div><div>}</div></div>