Вопрос

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

Это было полезно?

Решение

Посмотрите на http://www.aforgenet.com/framework/ . Это полная среда обработки изображений в C #, которую я использую в проекте. Я только что проверил их помощь, и у них есть функция, которая делает то, что вы хотите -

// create filter - rotate for 30 degrees keeping original image size
RotateBicubic filter = new RotateBicubic( 30, true );
// apply the filter
Bitmap newImage = filter.Apply( image );

Это библиотека LGPL, поэтому, если лицензирование является проблемой, если вы ссылаетесь на их двоичные файлы, у вас не будет проблем. Есть и другие библиотеки.

Если вы решите написать это самостоятельно, будьте осторожны со скоростью, так как C # делает сокращение чисел не очень хорошо. Но есть способы обойти это.

Другие советы

Вот хорошая статья проекта кода, в которой обсуждается то, что вы хотите:

http://www.codeproject.com/KB/GDI-plus /matrix_transformation.aspx

Вращение цифрового изображения в плоскости сводится к множеству умножений матрицы 2Х2.Здесь нет никакого математического анализа!Вам не нужна целая платформа обработки изображений для поворота квадратного изображения - если только это действительно не зависит от производительности с точки зрения качества и скорости изображения.

Зайдите и прочтите первую половину статьи в Википедии. Статья на матрице вращения, и это должно дать вам хороший старт.

В двух словах, определите свое начало координат (возможно, центр изображения, если вы хотите повернуть вокруг него), затем вычислите в пиксельном пространстве координату пикселя, который вы хотели бы повернуть, и умножьте на вашу матрицу вращения (см. Статью).).Как только вы выполните умножение, у вас будут новые координаты пикселя в пиксельном пространстве.Запишите этот пиксель в другой буфер изображения, и вы будете выключены и вращаться.Повторяю.Обратите внимание, что как только вы узнаете свой угол поворота, вам нужно будет вычислить матрицу поворота только один раз!

Получайте удовольствие,

Пол

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top