[ITK-dev] Scales Estimator

Baohua Wu baowu99 at gmail.com
Fri May 23 11:07:22 EDT 2014


Brad,

I might miss something since there has been a lot of code changes after 
I worked on it years ago. Here is my understanding after reviewing some 
code about sampling strategy.

RegistrationParameterScalesEstimator< TMetric >
::SetScalesSamplingStrategy()
{
   if( this->m_VirtualDomainPointSet )
     {
     this->SetSamplingStrategy(VirtualDomainPointSetSampling);
     }
   else if( this->TransformHasLocalSupportForScalesEstimation() )
     {
     this->SetSamplingStrategy(CentralRegionSampling);
     }
   else if (this->CheckGeneralAffineTransform())
     {
     this->SetSamplingStrategy(CornerSampling);
     }
   else
     {
     this->SetSamplingStrategy(RandomSampling);
     this->SetNumberOfRandomSamples( SizeOfSmallDomain );
     }
}

1) Currently SetSamplingStrategy is already protected, but 
SetScalesSamplingStrategy is public. Should SetScalesSamplingStrategy 
should be protected as well? Probably yes if it is always called internally.

2) I think FromShiftBased may use CentralRegionSampling. As the code 
above shows, it depends on the properties of the transform.

3) Your parameters looks right. Please keep in mind that 
m_CentralRegionRadius for voxel indices, and m_SmallParameterVariation 
is for a small parameter step in computing transform changes. 
m_SmallParameterVariation will be normalized in most cases.

Thank you!

Bao

On 5/22/2014 9:08 AM, brian avants wrote:
> i believe these questions might best be answered by michael stauffer
> and baohua wu, both cc'd.
>
> brian
>
>
>
>
> On Thu, May 22, 2014 at 8:41 AM, Bradley Lowekamp
> <blowekamp at mail.nih.gov> wrote:
>> Nick,
>>
>> We are working on ITKv4 Registration for SimpleITK. I am adding some methods for the Scales Estimators. This is what I currently have:
>>
>>      Self& SetOptimizerScales( const std::vector<double> &scales);
>>      Self& SetOptimizerScalesFromJacobian(unsigned int centralRegionRadius = 5 );
>>      Self& SetOptimizerScalesFromIndexShift(unsigned int centralRegionRadius = 5,
>>                                             double smallParameterVariation =  0.01 );
>>      Self& SetOptimizerScalesFromPhysicalShift(unsigned int centralRegionRadius = 5,
>>                                                double smallParameterVariation =  0.01 );
>>
>>
>> I have a couple questions:
>>
>> 1) Despite the some public methods to set the SamplingStrategy, this is really set by the implementation of the estimator is not not configurable for any estimator? ( Should these methods[1][2] actually be protected?)
>> 2) I can't seem to determine if the FromShiftBased estimators actually use the centralRegionRadius, is that actually used?
>> 3) Those parameters look right? missing anything?
>>
>> Thanks,
>> Brad
>>
>> [1] http://www.itk.org/Doxygen/html/classitk_1_1RegistrationParameterScalesEstimator.html#a28bda2ed3551af2cacb30b6920180881
>> [2] http://www.itk.org/Doxygen/html/classitk_1_1RegistrationParameterScalesEstimator.html#aa7f519d80e0cabe7d25de1ae6f287cc4
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.itk.org/mailman/listinfo/insight-developers
>



More information about the Insight-developers mailing list