Шифрование RGB изображения с помощью Фурье образа - lanit-tercom-school/grouplock GitHub Wiki

Идея: Пусть наше изображение представлено RGB матрицей. Тогда можно применить дискретное преобразование Фурье для получения Фурье-образа изображения. Дешифровка же будет заключаться в применении обратного дискретного преобразования Фурье.

Алгоритм: Пусть дано цифровое представление цветного изображения с помощью трех матриц(R, G, B), образующих трех- мерный массив (или матрицей, в которой каждый элемент - вектор размерности 3): C = cat(3, R, G, B) (конкатенация). Если матрицы имеют размер M ×N, то C содержит M ×N ×3 элементов. Каждый элемент определяется тремя индексами C[m, n, z], где z = 1, 2, 3 соответствует матрицам R, G, B:

C[m, n, 1] = R[m, n],

C[m, n, 2] = G[m, n],

C[m, n, 3] = B[m, n].

Здесь используются три матрицы, которые называют красным R (Red), зеленым G (Green) и синим G (Blue) цветовым каналом или цветовой компонентой. Ввиду некоммутативности конкатенации, порядок матриц является важным. Т.е. цветное изображение можно представить в виде трех матриц размера MxN (размеры изображения) (покажем для примера для компоненты R):

где каждая компонента имеет вид f(x,y), в которой x и y - пространственные координаты, а амплитуда f в любой точке - интенсивность\уровень цвета (в данном случае R - красного). Пусть f(x,y) при x = 0, 1, M-1 y = 0, 1, N-1 обозначает изображения размера MxN. Тогда двумерное дискретное преобразование Фурье:

Двумерное дискретное преобразование Фурье

Обратное двумерное дискретное преобразование Фурье:

Обратное двумерное преобразование Фурье

Пример Фурье-образа для черно-белого изображения:

Пример Фурье-образа для черно-белого изображения

Минусы: если человек знаком с данной темой (дискретное преобразование Фурье), то по изображению он сможет определить, что он видит Фурье-образ изображения и достаточно применить обратное преобразование Фурье для расшифровки.

Литература: