2013-03-01 3 views
-1

Я пытаюсь работать с этим двухмерным массивом, представляющим оттенки серого изображения ... Я хочу, чтобы пикселировать изображение путем усреднения 2x2 блоков и замены каждого значения на среднее значение сетки 2x2 ... например, если вход является массив2D-манипуляция массивом в Java

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)? –

ответ

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 matrix packages вызывает много хороших хитов. Все они, вероятно, переборщит за то, что вы пытаетесь сделать.

Смежные вопросы