У меня есть изображение или Pixelart из-за отсутствия лучшего слова, очень маленького размера. На самом деле это просто массив чисел примерно такого размера: new int[150][10]
. Я рисую линии и кривые на этом массиве, в основном один цвет на черном фоне. Он предназначен для управления светодиодной полосой позже. Поэтому сейчас я ищу метод сглаживания линий, кривых и фигур, которые я рисую. Я просто хочу ввести свой массив, вроде этого:
int[][] antiAlias(int[][] image) {
int[][] result = new int[image.length][image[0].length];
// do magic here
return result;
}
Я наткнулся на сглаживание Ву, но, насколько я могу судить, это только для рисования линий. Я был бы очень признателен, если бы кто-нибудь дал мне подсказку о том, какой алгоритм мне следует искать.
Я также читал, что эффект сглаживания может быть достигнут с помощью понижающей дискретизации. Поскольку для меня не составит труда создать линии и кривые в массиве с более высоким разрешением, это также может быть вариантом. Но я понятия не имею, как выполнить понижающую дискретизацию, и все, что я могу найти в Интернете об этом, всегда работает с Image
- Объекты и использует библиотеки, что, конечно, не вариант, так как я не использую фактическое изображение.
Я хотел бы, чтобы функция понижающей дискретизации была такой:
// scale should be power of 2 (I guess??)
int[][] downsample(int[][] image, int scale) {
int[][] result = new int[image.length / 2][image[0].length / 2];
// do magic here
if (scale > 2) return downsample(result, scale / 2);
return result;
}
Опять же, если у кого-нибудь есть хорошая идея для меня, какие алгоритмы я мог бы рассмотреть, я был бы очень признателен.