-1

画像のグレースケールを表すこの 2 次元配列を操作しようとしています... 2x2 ブロックを平均し、各値を 2x2 グリッドの平均で置き換えることにより、画像をピクセル化したい... たとえば、入力は配列です

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

次に、最初の 2x2 サブアレイ (左上から) を見ることから始めます。

   2,  4
   3,  3

このサブ配列の平均を見つけます ((2+4+3+3)/4 = 3)。返された配列では、最初の 2x2 サブ配列は次のようになります。

   3,  3
   3,  3

次に、次の 2x2 ブロックを見ていきます

   31,  31
   21,  41

平均 31 で、出力の次の 2x2 ブロックは

   31,  31
   31,  31

どのアプローチがこの問題を最もよく解決するのか疑問に思っています。解決方法がよくわかりません...よろしくお願いします

4

1 に答える 1

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 には多次元配列がありません。代わりに、配列の配列があります。多次元配列要素へのアクセスは、(1 次元) 配列へのアクセスよりも少し遅くなる可能性があります。Matrix値を単一の配列として保持し、行列座標から添字を計算する独自のクラスをいつでも作成できます。パフォーマンスの観点から、これが価値があるかどうかはわかりません。また、Java で使用できるマトリックス パッケージも多数あります。Java マトリックス パッケージを Web 検索すると、質の高いヒットが多数見つかります。それらはすべて、あなたがやろうとしていることに対しておそらくやり過ぎです。

于 2013-03-01T18:12:45.213 に答える