Translate

2019年9月11日水曜日

findMaxima (MaximumFinder)で解析範囲を指定する-2

findMaxima(...)の中身を見てみる。
まず、
Rectangle roi = ip.getRoi();
とあり、その後の処理(local maximaの探すところ)では、
for (int y=roi.y; y<roi.y+roi.height; y++) {         //find local minimum/maximum now

            for (int x=roi.x; x<roi.x+roi.width; x++) {      //ImageStatistics won't work if we have no ImagePlus

...

となっている。明らかに矩形のROIとしてしか取り出していない。
次に呼び出されるメソッドは、
getSortedMaxPoints(ip, typeP, excludeEdgesNow, isEDM, globalMin, globalMax, threshold)
であるが、このメソッドの中も
Rectangle roi = ip.getRoi();
となっていて、やはり矩形のROIとしてしか取り出していない。

さて、Maximaの探索には、さらに次のメソッド
analyzeAndMarkMaxima(ip, typeP, maxPoints, excludeEdgesNow, isEDM, globalMin, tolerance, strict, outputType, maxSortingError);
で行われている。このメソッドの中をみると、
        if (imp!=null)

            roi = imp.getRoi();

なんと、ipではなくimp (ImagePlus)からROIを取り出している。マジか!
さらにソースを斜め読みしていくと、
                            if (roi==null || roi.contains(x, y))

                                xyCoordinates.addPoint(x, y);
となっていた。これは、検出したMaximaがroiの中に含まれるかどうか判定している個所と考えられる。

0 件のコメント:

コメントを投稿