2D вращение и масштабирование массива пикселей - PullRequest
0 голосов
/ 24 декабря 2009

Я работаю над программой на C # для обработки изображений (задается как int [,]) ..

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

Как это можно сделать? (предпочтительно с 2 уравнениями, одно для х и одно для у)

Ответы [ 4 ]

2 голосов
/ 24 декабря 2009

В классе Matrix у вас есть обе функции Поворот (В) и Масштаб . Что еще ты узнаешь?

1 голос
/ 16 августа 2010

Вам нужно найти преобразование из результирующего массива в исходное изображение. Затем вы преобразуете точки в пункте назначения в точки на исходном изображении и копируете их. Сглаживание через передискретизацию также является опцией. Ваша матрица вращения также может применять масштабирование - просто умножьте матрицу на коэффициент масштабирования (это предполагает 2x2). Если вы используете матрицу 3x3 для вращения, масштабирования и перемещения, просто умножьте верхний левый 2x2 на коэффициент масштабирования.

Наконец, с риском смирения здесь есть ссылка на некоторый старый код DOS для TP6 / asm, который я написал для полноэкранного рото-масштабирования. Странный материал, который торчит в сети: http://www.hornet.org/cgi-bin/scene-search.cgi?search=Paul%20H.%20Kahler

1 голос
/ 24 декабря 2009

Посмотрите здесь . Это должно дать вам всю математику за вращением координат.

0 голосов
/ 24 декабря 2009

Все, что вам нужно сделать, можно сделать с Bitmap изображениями в GDI + (используя пространства имен System.Drawing...). Эти классы разработаны и оптимизированы для выполнения именно таких задач (манипуляции с изображениями). Есть ли какая-то конкретная причина, по которой вы не можете работать с Bitmap вместо int[,]? Вы могли бы даже написать очень простую подпрограмму для создания Bitmap из int[,], сделать все, что вам нужно, для Bitmap, а затем преобразовать его обратно в int[,] в конце.

...