From: Eskil Jönsson on
Just a little quick question. I'm using DiffMinChange to obtain bigger steps. Would this reason be included in your 'wrong reason' category.

My problem is that I compare multiple images (I'm comparing body scans from different time periods) and when I try to register these scans without increasing the DiffMinChange my function does not find a propper search direction.
But when I increase it to almost 1 (=1 pixel) it works much better. It is however not as stable as I would want it to be.

//Eskil

> You should almost never want to touch
> 'diffminchange' and 'diffmaxchange'.
> I'll argue that most who do try to
> use these parameters are doing so for
> the wrong reasons.
From: John D'Errico on
"Eskil Jönsson" <eskil_j(a)hotmail.com> wrote in message <hopsum$soc$1(a)fred.mathworks.com>...
> Just a little quick question. I'm using DiffMinChange to obtain bigger steps. Would this reason be included in your 'wrong reason' category.
>
> My problem is that I compare multiple images (I'm comparing body scans from different time periods) and when I try to register these scans without increasing the DiffMinChange my function does not find a propper search direction.
> But when I increase it to almost 1 (=1 pixel) it works much better. It is however not as stable as I would want it to be.
>
> //Eskil
>
> > You should almost never want to touch
> > 'diffminchange' and 'diffmaxchange'.
> > I'll argue that most who do try to
> > use these parameters are doing so for
> > the wrong reasons.

Yes, this is one of those wrong reasons.

You are trying to convince the optimizer to not realize
this is a discrete problem when it really is one.

These optimizers use diffminchange to estimate the
gradient of the objective (a sum of squares) with
respect to the parameters. If the parameters are
really discrete things, then it cannot differentiate
with respect to them.

John
From: Eskil Jönsson on
"John D'Errico" <woodchips(a)rochester.rr.com> wrote in message <hoq18a$51s$1(a)fred.mathworks.com>...
> "Eskil Jönsson" <eskil_j(a)hotmail.com> wrote in message <hopsum$soc$1(a)fred.mathworks.com>...
> > Just a little quick question. I'm using DiffMinChange to obtain bigger steps. Would this reason be included in your 'wrong reason' category.
> >
> > My problem is that I compare multiple images (I'm comparing body scans from different time periods) and when I try to register these scans without increasing the DiffMinChange my function does not find a propper search direction.
> > But when I increase it to almost 1 (=1 pixel) it works much better. It is however not as stable as I would want it to be.
> >
> > //Eskil
> >
> > > You should almost never want to touch
> > > 'diffminchange' and 'diffmaxchange'.
> > > I'll argue that most who do try to
> > > use these parameters are doing so for
> > > the wrong reasons.
>
> Yes, this is one of those wrong reasons.
>
> You are trying to convince the optimizer to not realize
> this is a discrete problem when it really is one.
>
> These optimizers use diffminchange to estimate the
> gradient of the objective (a sum of squares) with
> respect to the parameters. If the parameters are
> really discrete things, then it cannot differentiate
> with respect to them.
>
> John

Well not really. It is a discrete problem from the start, but I'm using tformarray (transform multiple images) inside my fminunc-function to make an interpollation (I guess) between the different 'layers' of the 3d volume so none discrete value are very much acceptable.
Current setting is:
DiffMineChange: 0.1
DiffMaxChange: 5

//Eskil