2013-01-23 26 views
0

有沒有什麼方法通過使用Java代碼而不是Matlab等來在圖像(手,靜脈)中找到分叉點和脊端點?我可以通過Java的ImageJ庫來實現嗎?分叉和脊端點

+1

@RyanAmos我更喜歡[你有什麼嘗試?](http://www.whathaveyoutried.com/)(鏈接)。 –

+0

@安德魯湯普森哦看中。我將不得不從現在開始使用! –

回答

1

您在Minutiae Extraction from Fingerprint Images中找到的科學描述。 一些算法在OpenCV中實現請參閱分段部分。

OpenCV庫可以使用JNI鏈接到java。

+0

嗨stacker.I不太舒服OpenCv。我將在稍後使用該方法。我希望我能得到我的期望。感謝很多幫助我從這樣的事情中解脫出來。 – Amar

+0

鏈接已損壞,您可以提供其他一些資源嗎? –

+0

http://docs.opencv.org/search.html?q=Segmentation&check_keywords=yes&area=default @jay – stacker

1

有一個ImageJ的插件,可以幫助你做到這一點:

AnalyzeSkeleton (爲源見here

您可以提取分支點和端點與其SkeletonResult類的幫助。

0

非常感謝幫助我,我經歷了AnalyzeSkeleton並通過使用IJ得到了SekeletonResult Response的結果。爲此,我使用了IJ.run(imp,「Skeletonize」,「」);

// Initialize AnalyzeSkeleton_ 
    AnalyzeSkeleton_ skel = new AnalyzeSkeleton_(); 
skel.calculateShortestPath = true; 
skel.setup("", imp); 

// Perform analysis in silent mode 
// (work on a copy of the ImagePlus if you don't want it displayed) 
// run(int pruneIndex, boolean pruneEnds, boolean shortPath, ImagePlus origIP, boolean silent, boolean verbose) 
SkeletonResult skelResult = skel.run(AnalyzeSkeleton_.NONE, false, true, null, true, false); 

// Read the results 
Object shortestPaths[] = skelResult.getShortestPathList().toArray(); 
double branchLengths[] = skelResult.getAverageBranchLength(); 
int branchNumbers[] = skelResult.getBranches(); 

long totalLength = 0; 
for (int i = 0; i < branchNumbers.length; i++) { 
    totalLength += branchNumbers[i] * branchLengths[i]; 
} 

double cumulativeLengthOfShortestPaths = 0; 
for (int i = 0; i < shortestPaths.length; i++) { 
    cumulativeLengthOfShortestPaths +=(Double)shortestPaths[i]; 
} 
    System.out.println("totalLength "+totalLength); 
    System.out.println("cumulativeLengthOfShortestPaths "+cumulativeLengthOfShortestPaths); 
System.out.println("getNumOfTrees "+skelResult.getNumOfTrees()); 
System.out.println("getAverageBranchLength "+skelResult.getAverageBranchLength().length); 
System.out.println("getBranches "+skelResult.getBranches().length); 
System.out.println("getEndPoints "+skelResult.getEndPoints().length); 
System.out.println("getGraph "+skelResult.getGraph().length); 
System.out.println("getJunctions "+skelResult.getJunctions().length); 
System.out.println("getJunctionVoxels "+skelResult.getJunctionVoxels().length); 
System.out.println("getListOfEndPoints "+skelResult.getListOfEndPoints().size()); 
System.out.println("getListOfJunctionVoxels "+skelResult.getListOfJunctionVoxels().size()); 
System.out.println("getMaximumBranchLength "+skelResult.getMaximumBranchLength().length); 
System.out.println("getNumberOfVoxels "+skelResult.getNumberOfVoxels().length); 
System.out.println("getQuadruples "+skelResult.getQuadruples().length); this method .but I am not able to find which method in Skeleton Result class returns bifuraction point could you please help me little more thanks Amar 
+0

喜揚非常感謝幫助我out.one多一點幫助,我能夠通過上述實現的代碼來獲得SkeletonResult類responcs其中。但方法skeletonResult類回報Bifuraction和edning point.there是一個方法端點skeletonResult類,但每個圖像它返回只有1 – Amar

+0

我能得到的分叉點和脊點的數量從Java中的形象?或者我可以從SkeletonResult類中獲得它? –