I concur with Brad and Hans. Adding Gaƫtan in CC.
Thanks, Matt On Tue, Jul 2, 2013 at 5:08 PM, Johnson, Hans J <[email protected]> wrote: > I agree with brad. The two should produce the same results, even tough it > may introduce a different numerical result in the > OtsuMultipleThresholdCalculator. > > -----Original Message----- > From: Bradley Lowekamp <[email protected]> > Date: Tuesday, July 2, 2013 12:01 PM > To: "Padfield, Dirk R (GE Global Research)" <[email protected]> > Cc: ITK <[email protected]>, "[email protected]" > <[email protected]> > Subject: Re: [Insight-developers] OtsuThresholdCalculator > versus OtsuMultipleThresholdsCalculator > > Dirk, > > I would vote to have the two produce the same results, and create a little > migration guide which notes the change. > > Regarding, the refactoring, is there any difference in the algorithm > complexity of the two? Any measurements of the performance difference > between the two? > > Brad > > On Jul 2, 2013, at 11:04 AM, "Padfield, Dirk R (GE Global Research)" > <[email protected]> wrote: > >> Hi Richard, >> >> Thank you for your response and insight. If anything would need to be >>changed, I would also lean towards changing the OtsuMultiple because I >>think we shouldn't change Otsu since I am sure many more people are using >>the Otsu because it is a standard thresholding algorithm. I will do some >>comparisons of the two against other implementations to see what I find. >> >> But the question still remains: is it okay to change the OtsuMultiple to >>give the same output as Otsu for one threshold? I am thinking in terms >>of those people who use OtsuMultiple whose results will then be slightly >>different. Here are the advantages and disadvantages for keeping things >>the same: >> >> Advantages: everyone's code still works as it did before >> Disadvantages: the two implementations are inconsistent with each other >>even though they are the same algorithm. The overlapping code cannot be >>merged (inheritance). And future enhancements will need to be made in >>both places. >> >> My vote is: change OtsuMultiple to be consistent with Otsu. >> >> What do others think? >> >> Dirk >> >> >> ________________________________ >> From: Richard Beare [[email protected]] >> Sent: Monday, July 01, 2013 5:40 PM >> To: Bradley Lowekamp >> Cc: Padfield, Dirk R (GE Global Research); <[email protected]> >>Developers >> Subject: Re: [Insight-developers] OtsuThresholdCalculator versus >>OtsuMultipleThresholdsCalculator >> >> Hi, >> I think the order was - I introduced new filters copied from ImageJ, >>then Gaetan started refactoring to use the histogram framework. We both >>did some work to make that correspond to old versions. I don't remember >>working on the MultipleThreshold version, but the code does look >>similar, so perhaps it was done somewhere along the way - will need to >>check the logs. >> >> I'm pretty sure that Otsu was producing the same results that it used to >>- I didn't compare to other implementations. Thus, if the original Otsu >>was correct then the current one should be too, which would suggest that >>the MultipleThresholds version should probably change. >> >> Not sure when I'll get a chance to look at this in detail. >> >> I don't have a current email for Gaetan to CC for confirmation. >> >> >> On Mon, Jul 1, 2013 at 11:02 PM, Bradley Lowekamp >><[email protected]<mailto:[email protected]>> wrote: >> Dirk, >> >> I believe Richard Beare did the refactoring of the thresholding >>framework an Insight Journal Article. He will likely know why it is this >>way better than anyone else. >> >> You also didn't say which implementation is correct. >> >> Brad >> >> >> On Jun 30, 2013, at 10:03 PM, "Padfield, Dirk R (GE Global Research)" >><[email protected]<mailto:[email protected]>> wrote: >> >>> Hi ITK Developers, >>> >>> I was just looking through the OtsuThresholdCalculator and >>>OtsuMultipleThresholdsCalculator to see whether I could refactor them so >>>that the Otsu inherits from the OtsuMultiple since the latter is a more >>>general case of the former. Currently, the code for these two filters >>>is totally different resulting in significant code duplication and a >>>need to keep both filters in sync. >>> >>> As a first step, I wrote a CMake test to check that the output of the >>>OtsuMultiple with 1 threshold is the same as the output of the Otsu. >>>Unfortunately, they are not! The two filters output thresholds that are >>>different by 1 histogram bin! This can be a quite extreme difference >>>when the numberOfHistogramBins is low, and it leads to different >>>thresholds even when the numberOfHistogramBins is reasonably high (say >>>256). I tracked it down to this code in the Calculators: >>> >>> The relevant code from Otsu: >>> const double tolerance = 0.00001; >>> if ( (varBetween - tolerance) > maxVarBetween ) >>> { >>> maxVarBetween = varBetween; >>> maxBinNumber = j; >>> } >>> } >>> this->GetOutput()->Set( static_cast<OutputType>( >>>histogram->GetMeasurement( maxBinNumber + 1, 0 ) ) ); >>> >>> The relevant code from MultipleOtsu: >>> if ( varBetween > maxVarBetween ) >>> { >>> maxVarBetween = varBetween; >>> maxVarThresholdIndexes = thresholdIndexes; >>> } >>> } >>> for ( j = 0; j < m_NumberOfThresholds; j++ ) >>> { >>> m_Output[j] = histogram->GetBinMax(0, maxVarThresholdIndexes[j]); >>> } >>> >>> The difference is that the Otsu adds one to the computed threshold >>>whereas the MultipleOtsu does not. This is problematic because users >>>would expect them to give the same result. >>> >>> My question is: how should we proceed? If we change one or the other, >>>people's code that use the changed one will give slightly different >>>answers. If we don't change them, the two filters will give different >>>outputs for the same input, and it will not be possible to refactor them >>>to share code. >>> >>> What are your thoughts? >>> >>> Thanks, >>> Dirk >>> _______________________________________________ >>> Powered by www.kitware.com<http://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 >> >> > > _______________________________________________ > 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 > > > > ________________________________ > Notice: This UI Health Care e-mail (including attachments) is covered by the > Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential > and may be legally privileged. If you are not the intended recipient, you > are hereby notified that any retention, dissemination, distribution, or > copying of this communication is strictly prohibited. Please reply to the > sender that you have received the message in error, then delete it. Thank > you. > ________________________________ > _______________________________________________ > 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 _______________________________________________ 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
