2011-08-28 52 views
1

我正在尋找簡單圖像分析的方法,軟件或庫。簡單圖像分析

輸入圖像將是一個白色的背景和一些隨機的小黑點。

我需要生成一個表示這些點座標的.txt文件。也就是說,如果圖像中有三個點,輸出將是一個文本文件,它包含三個座標(x1,y1),(x2,y2)和(x3,y3)的表示。

我在網上搜索了幾個小時,沒有找到合適的東西,我發現的只是圖像處理的複雜程序。

我聽說很容易在MATLAB中爲這個任務編寫代碼,但我對MATLAB不熟悉。

這可以用C++,Java或C#輕鬆完成嗎?

任何好的庫?

回答

1

這在任何語言都很簡單。根據您輸入的形式,您可能需要查看所有內容(假設它是一個簡單的矩陣 - 只需有兩個嵌套循環,一個用於x座標,一個用於y座標),每當遇到黑點時 - 只需輸出當前的索引,即點的x和y座標。對於圖書館來說,除了某些東西來解碼輸入到這種矩陣形式(例如JPEG解碼器)以外的任何東西都是過度殺傷的。

+0

謝謝,任何建議一個好的JPEG解碼器?我打算用C++來做。 – Xee

+0

http://www.subquantumtech.com/jpeg/看起來很簡單 - 我自己並沒有使用它(我更喜歡matlab/python)。 – Ofir

0

我不認爲你會需要圖像處理庫這種問題(有人糾正我,如果我錯了),因爲這些庫可能會專注於圖像處理和不識別。您將需要的是您所支持的圖像格式知識(它們如何存儲,如何解釋等)以及基本的C文件系統功能。

例如,如果您期待JPG文件格式,您將簡單地計算每條掃描線的填充,並逐個掃描每條掃描線,並逐行掃描每條掃描線。你必須使用兩個計數器,一個用於行,另一個用於列。如果像素不是白色的,那麼你有你的座標

0

這是一個應該很容易做的事情,沒有任何外部軟件;像

for(y in [0..height]) { 
    for(x in [0..width]) { 
     if(pixels[y][x].color == BLACK) 
      print("(%d, %d)", x, y); 
    } 
} 

會工作。

+0

這很簡單,如果我知道如何在c/C++中讀取圖像,但我不知道如何。並且這些點不是真正的圓點,它們是圓形的,但這不是問題,我可以找到圓的中心並將其生成到文本文件中,但是我又需要用於讀取圖像和掃描它的API。 – Xee

+0

你使用什麼類型的圖像? – Dave

0

CImg library shold幫助你。從CImg FAQ

1.1。什麼是CImg圖書館?

CImg庫是一個用於圖像處理的開源C++工具包。

它主要由在(大)單頭文件CImg.h提供 組C++類和功能,可以在自己的源一起使用, 的加載/保存,管理/處理和顯示一般圖像。它實際上是 一個非常簡單和令人愉快的編碼圖像處理工具的工具包 in C++:只需包含頭文件CImg.h,並且您已準備好在您的C++程序中處理圖像 。

+0

我認爲這就像使用LAW火箭殺死一隻蒼蠅:)(我在搜索時發現了這個圖書館),但無論如何要感謝。 – Xee

+0

無論如何,您將需要從文件中讀取圖像。爲什麼不使用已經寫好的代碼來加載圖像?而不是重新發明輪子。 – ks1322

0

位圖文件格式很容易閱讀。

http://en.wikipedia.org/wiki/BMP_file_format

你可以只流字節到使用該信息的數組。我寫了幾個BMP閱讀器;這是一件微不足道的事情。另外,雖然我不能保證它的易用性,但我之前從未使用它,我聽說EasyBMP也能正常工作。