Рубрика «матрицы» - 3

Не так давно в процессе разработки редактора 2D-графики возникла задача разложить матрицу аффинного преобразования на плоскости, на произведение матриц простых преобразований с тем, чтобы отобразить их пользователю и предложить какую-то более-менее адекватную интерпретацию того, что произошло с объектом на канвасе. Честно говоря, эта задача вызвала у меня определенные трудности. Университет я закончил уже давно, и мне было непонятно, а возможно ли это сделать в принципе, учитывая, что исходная матрица могла быть результатом произвольной последовательности сдвигов, масштабов, поворотов, и переносов, причем каждое преобразование могло иметь свой произвольный центр. И, во-вторых, непонятно было, как найти семь параметров, имея всего шесть коэффициентов матрицы. Ключом к решению этой задачи оказалась статья "Разложение матрицы центроаффинного преобразования для нормализации изображения"¹, в которой рассматривается такая же задача, но без учета преобразования переноса и для преобразований относительно центра координат. Далее я фактически просто адаптирую результаты этой статьи с учетом переноса и для произвольного центра преобразований.Читать полностью »

Предисловие: Я пишу на Python более 6 лет и могу назвать себя профессионалом в этом языке. Недавно я даже написал о нем книгу. Однако последние 8 месяцев я переключился на D и уже 4 месяца активно участвую в разработке этого языка по части расширения стандартной библиотеки Phobos. Так же я участвовал в код-ревью модуля std.ndslice о котором и пойдет речь.

std.ndslice так же как и Numpy предназначен для работы с многомерными массивами. Однако в отличие от Numpy ndslice имет крайне низкий оверхэд так как базируется на ranges (диапазонах), которые используются в штатной библиотеке повсеместно. Ranges позволяют избежать лишние процедуры копирования, а так же позволяют красиво организовать ленивые вычисления.

В этой статье мне хотелось бы рассказать о том какие преимущества std.ndslice дает по сравнению с Numpy.
Читать полностью »

Прибыль Sony с апреля по июнь 2015 года составила 664 миллиона долларов, превысив в три раза прибыль за аналогичный период 2014 года. Компания уверенно лидирует на рынке игровых приставок восьмого поколения, показывает успешные продажи CMOS-матриц, но теряет деньги на собственных смартфонах и Sony Pictures.

image
Читать полностью »

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

Sony открывает компанию для оказания геодезических и инспекционных услуг с помощью дронов - 1
Sony/ZMP
Читать полностью »

Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):

Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

Дело в том, что перед выполнением программы интерпретатор Python компилирует все её части в специальный байт-код. Используя метод, описанный хабрапользователем SkidanovAlex, данный декоратор анализирует получившийся байт-код функции и пытается оптимизировать применяющийся там алгоритм. Далее вы увидите, что эта оптимизация может ускорять программу не в определённое количество раз, а асимптотически. Так, чем больше будет количество итераций в цикле, тем в большее количество раз ускорится оптимизированная функция по сравнению с исходной.

Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
Читать полностью »

Canon разработала сенсор для съёмки видео FullHD, способный снимать почти в полной темноте Canon разработала сенсор для съёмки видео FullHD, способный снимать почти в полной темноте

Полноразмерная 35-миллиметровая CMOS-матрица предназначена исключительно для записи видео. За счёт этого на ней не очень много пикселей, а их размеры гораздо больше, чем в Full-Frame сенсоре фотоаппарата. Соотношение сторон матрицы 16:9, так что, строго говоря, это не стандартные 35мм, но её площадь позволяет использовать объективы с байонетом Canon EF.

При создании сенсора были использованы новые технологии шумоподавления. Это позволило добиться выдающихся результатов — камера с таким сенсором может снимать довольно качественное цветное видео при освещённости в 0.01 — 0.05 люкс.

Камера с таким сенсором способна отчётливо и в цвете заснять лицо человека, освещённое огоньком тлеющей ароматической палочки. Изображение, снятое в лунную ночь, выглядит так, как будто его снимали днём. Человек невооружённым глазом способен рассмотреть в ночном небе звёзды до 6 звёздной величины, а с помощью нового сенсора можно заснять звёзды величиной до 8,5.
Читать полностью »

Numbers.js добавляет к стандартным математическим возможностям JavaScript немного продвинутой математики — интегралы, операции над матрицами и комплексными числами, статистические функции, факторизацию и некоторые другие функции. Кроме того, библиотека определяет базовые арифметические операции над массивами — сложение, вычитание и умножение элементов, поиск минимума и максимума, случайное перемешивание массива и позволяет в явном виде задавать необходимую точность вычислений, что помогает избежать ошибок округления.
Читать полностью »

Недавно на хабре появилась неплохая статья про вычисление N-ного числа фибоначи за O(log N) арифметических операций. Разумный вопрос, всплывший в комментариях, был: «зачем это может пригодиться на практике». Само по себе вычисление N-ого числа фибоначи может и не очень интересно, однако подход с матрицами, использованный в статье, на практике может применяться для гораздо более широкого круга задач.

В ходе этой статьи мы разберем как написать интерпретатор, который может выполнять простые операции (присвоение, сложение, вычитание и урезанное умножение) над ограниченным количеством переменных с вложенными циклами с произвольным количеством итераций за доли секунды (конечно, если промежуточные значения при вычислениях будут оставаться в разумных пределах). Например, вот такой код, поданный на вход интерпретатору:

loop 1000000000
  loop 1000000000
    loop 1000000000
      a += 1
      b += a
    end
  end
end
end

Незамедлительно выведет a = 1000000000000000000000000000, b = 500000000000000000000000000500000000000000000000000000, несмотря на то, что если бы программа выполнялась наивно, интерпретатору необходимо было бы выполнить октиллион операций.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js