2013-03-01 107 views
-1

我正在嘗試使用這個二維數組,代表圖像的灰度...我想通過平均2×2塊來像素化圖像,並用2x2網格的平均值替換每個值...例如, 如果輸入數組在Java中的2D陣列操作

2, 4, 31, 31 
    3, 3, 21, 41 
    1, 2, 10, 20 
    3, 2, 20, 30 

,那麼你通過看第一個2×2子陣列(從左上角)

2, 4 
    3, 3 

啓動並求其平均值(2 + 4 + 3 + 3)/ 4 = 3)。在返回的數組中,第一2×2子陣列後會有

3, 3 
    3, 3 

然後我們期待在下一2×2塊

31, 31 
    21, 41 

與平均31,在輸出端上的下一個2×2塊將是

31, 31 
    31, 31 

我想知道什麼方法可以最好地解決這個問題。也不太清楚該如何解決呢?在此先感謝

+1

[你有什麼試過](http://whathaveyoutried.com)? – 2013-03-01 18:08:27

回答

2

您可以在Java中聲明一個多維數組很容易:

double matrix[][] = new double[size][size]; 

您可以使用標準的下標,然後針對各個元素。例如:

int row = 2; 
int col = 3; 
double val = matrix[row][col]; // etc. 
matrix[row][col] = 7; 

然而從技術上講,Java沒有多維數組。相反,它具有數組的數組。訪問多維數組元素可能比訪問(一維)數組慢一點。您始終可以編寫自己的Matrix類,該類將值保存爲單個數組,並根據矩陣座標計算下標。我不確定在性能方面是否值得。此外,Java還有很多可用的矩陣軟件包。一個網頁搜索java矩陣包出現了很多優質的點擊。他們都可能矯枉過正,你正在嘗試做什麼。