嗨,大家好,我是一個圖像處理技術的嬰兒在java中,我決定開發一個項目的圖像處理,所以我需要什麼是算法都遵循,哪一個更容易開發請有人引導我它可能是非常適合我.....以及哪種技術最適合圖像處理java或Matlab?指導我...如何在java中執行圖像分割?
2
A
回答
0
MATLAB對圖像處理更好。最好的方法是找到特殊的圖像處理工具(或庫)。
1
您可以使用Java Advanced Imaging (JAI)庫在java中執行圖像處理。你必須自己決定Java還是MATLAB對你更好。
2
對於JAVA中的圖像分割,您還可以考慮使用開源IMMI工具(http://spl.utko.feec.vutbr.cz/en/)。與Matlab相比,它(在我看來)更簡單易用,並且簡單地啓用圖像挖掘。
1
圖像分割算法取決於分割後需要的輸出類型。每個算法執行不同的分段。我認爲該地區的增長或Flood Fill是有利於這一目的。 您可以使用Java/JAI和JavaCV進行此圖像處理任務。
1
我認爲最適合您的圖像處理工具取決於您正在使用的項目類型。
如果您正在研究一個需要生產力,快速驗證和寫入報告的研究項目,Matlab和類似的工具是最好的選擇。另一方面,如果你正在開發一個軟件產品,Java,C++,C,Objective-C等是更多的指示。 Matlab解決方案不易於生產交付和維護。
既然您問過如何在Java中進行圖像分割,我將使用Java和Marvin Image Processing Framework提供一個示例。正如@Asif Sharif所建議的那樣,FloodFill細分是一個很好的策略,我使用它!
運作方式:
- 負載輸入圖像。
- 將綠色像素更改爲白色像素。
- 應用強度閾值來分離前景和背景。
- 將形態學關閉應用於同一對象的分組部分
- 使用FloodFill分段獲取分段。
- 在原始圖像中繪製線段座標。
SOURCE:
import static marvin.MarvinPluginCollection.*;
public class SimpleSegmentation {
public SimpleSegmentation(){
// 1. Load image
MarvinImage original = MarvinImageIO.loadImage("./res/robocup.jpg");
MarvinImage image = original.clone();
// 2. Change green pixels to white
filterGreen(image);
// 3. Use threshold to separate foreground and background.
MarvinImage bin = MarvinColorModelConverter.rgbToBinary(image, 127);
// 4. Morphological closing to group separated parts of the same object
morphologicalClosing(bin.clone(), bin, MarvinMath.getTrueMatrix(30, 30));
// 5. Use Floodfill segmention to get image segments
image = MarvinColorModelConverter.binaryToRgb(bin);
MarvinSegment[] segments = floodfillSegmentation(image);
// 6. Show the segments in the original image
for(int i=1; i<segments.length; i++){
MarvinSegment seg = segments[i];
original.drawRect(seg.x1, seg.y1, seg.width, seg.height, Color.yellow);
original.drawRect(seg.x1+1, seg.y1+1, seg.width, seg.height, Color.yellow);
}
MarvinImageIO.saveImage(original, "./res/robocup_segmented.png");
}
private void filterGreen(MarvinImage image){
int r,g,b;
for(int y=0; y<image.getHeight(); y++){
for(int x=0; x<image.getWidth(); x++){
r = image.getIntComponent0(x, y);
g = image.getIntComponent1(x, y);
b = image.getIntComponent2(x, y);
if(g > r*1.5 && g > b*1.5){
image.setIntColor(x, y, 255,255,255);
}}}
}
public static void main(String[] args) { new SimpleSegmentation(); }
}
相關問題
- 1. 如何在複雜的圖像上執行分割(如C++)
- 2. 如何在單個圖像上執行分水嶺分割和Blob分析?
- 3. 使用java分割圖像
- 4. C#中的圖像分割(行分割和字符分割)
- 5. 如何在java中進行分割?
- 6. 在Python中分割圖像
- 7. 如何在許多圖像中分割圖像?在R
- 8. 圖像分割成表:行
- 9. 如何在Tensorflow中進行可訓練的圖像分割?
- 10. 圖像分割
- 11. 圖像分割
- 12. 分割圖像分成行和列
- 13. 如何在matlab中查找圖像分割部分的厚度?
- 14. 圖像分割(MATLAB)
- 15. Matlab分割圖像
- 16. 如何用圖像中的假邊進行分割?
- 17. 如何在Java中分割單詞?
- 18. 如何在java中分割字符串?
- 19. 如何在java中分割數字?
- 20. 如何在java中分割字符串
- 21. 如何在Java中分割字符串?
- 22. 如何在java中分割字符串
- 23. 在matlab中按像素強度進行圖像分割
- 24. 如何用JavaScript分割圖像?
- 25. 我如何使用opencv4android分割圖像
- 26. 如何處理/操作分割圖像
- 27. 在固定塊中分割圖像
- 28. 在android中分割圖像爲瓷磚
- 29. 在C++中以塊分割jpeg圖像
- 30. 在python中使用OpenCV分割圖像
錯誤無法的分辨率:Ljavax/ImageIO的/ ImageIO的;幫幫我。 – Roadies 2016-09-30 12:59:19