Алгоритм поворота изображения

В TypeScript все работает иначе, чем в JavaScript, если вы передадите аргумент любого другого типа, отличного от того, который указан в сигнатуре функции, вы получите ошибку во время компиляции, и, следовательно, вы обязаны точно следовать типу аргументов функции.

19
задан gnat 17 September 2011 в 10:28
поделиться

8 ответов

Одна из лучших страниц, описывающих алгоритмы поворота изображения, которые я нашел в Интернете, связывается с Dan Bloomberg превосходный leptonica библиотека. В то время как сама leptonica библиотека записана в C и не поможет Вам, его странице на алгоритмах поворота изображения:

http://www.leptonica.org/rotation.html

определенно стоит чтения. Вы, скорее всего, захотите реализовать что-то как Вращение алгоритмом Отображения области, который он описывает во второй части страницы.

22
ответ дан 30 November 2019 в 04:21
поделиться

Общее решение: Для каждого пикселя в конечном изображении, возьмите пиксель в исходном изображении с координатами целевого пикселя, повернутого в противоположном направлении.

Улучшение к решению: вращение обычно не будет давать точные пиксельные координаты. Сделайте взвешенное среднее исходного пикселя с его соседями, согласно проценту, это перекрывает их.

Более быстрое решение для двухуровневых изображений: Преобразовывают изображение в "выполнения" последовательных приоритетных пикселей. Тогда поверните конечные точки этих строк и вовлеките их в место назначения.

Обычно это произведет небольшие разрывы из-за целочисленного округления, поэтому когда одна или обе конечных точки будут на расстоянии больше чем в 10% от целого числа, патча путем проведения ДВУХ линий для единственной исходной строки, использования целочисленных координат, округленных вверх и вниз.

, Если одна конечная точка в 10% и другой, не, эти две строки сформируются 'V' форма. Если оба будут выключены больше чем на 10%, то эти две строки сформируются 'X' форма.

Это может быть сделано относительно оси X или оси Y. Используйте тот с самым маленьким углом между осью и углом вращения. (Т.е. если угол вращения между 45 и-45, используйте ось X.)

Еще более быстрое решение для двухуровневых изображений: , Если существует меньше фоновых пикселей, чем приоритетные пиксели, заполните место назначения передним планом и следуйте вышеупомянутому алгоритму с фоновыми пикселями.

7
ответ дан 30 November 2019 в 04:21
поделиться

Форумы Nokia имеют статью и код Вращающиеся Изображения в Java ME

3
ответ дан 30 November 2019 в 04:21
поделиться

LWUIT может сделать это, и это - открытый исходный код. Я предлагаю, чтобы Вы нашли код там.

1
ответ дан 30 November 2019 в 04:21
поделиться
0
ответ дан 30 November 2019 в 04:21
поделиться

Graphics2D и AffineTransform помогут Вам сделать точно, что Вы хотите. А именно, Graphics2D.drawImage (Изображение, AffineTransform) и AffineTransform.getRotateInstance. Можно также сделать масштабирование, перевод и сдвиг с этим. Оба класса были во времени выполнения по крайней мере начиная с 1,4, вероятно, ранее.

-3
ответ дан 30 November 2019 в 04:21
поделиться

You can try http://www.j2mearmyknife.com/ . It features a lot of cool visual effects, including image rotation.

0
ответ дан 30 November 2019 в 04:21
поделиться
  public Image rotateImage(Image img, float degrees){
   BufferedImage sourceBI = new BufferedImage(img.getWidth(null),img.getHeight(null),BufferedImage.TYPE_INT_ARGB);
   sourceBI.getGraphics().drawImage(img,0,0,null);
   AffineTransform at = new AffineTransform();
   at.rotate(degrees*Math.PI/180, sourceBI.getWidth()/2, sourceBI.getHeight()/2);
   BufferedImageOp bio = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
   return bio.filter(sourceBI, null);
  }
-3
ответ дан 30 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: