Сожмите изображение Используя 2D DCT

В этом примере показано, как сжать изображение с помощью 2D дискретного косинусного преобразования (DCT). Пример вычисляет 2D DCT 8 8 неперекрывающихся блоков входного изображения, отбрасывания (обнуляет) все кроме 10 из 64 коэффициентов DCT в каждом блоке, и затем восстанавливает изображение с помощью 2D обратного дискретного косинусного преобразования (IDCT) каждого блока.

Модель в качестве примера

Откройте модель Simulink®.

modelname = 'ex_blk2ddct.slx';
open_system(modelname)

Модель читает входное изображение с помощью блока Image From File и преобразует тип данных изображения к double использование блока Image Data Type Conversion.

Блок блоком процесса изображений

Блок Block Processing выполняет операции, заданные в этой подсистеме на каждом блоке входного изображения.

Подсистема сначала вычисляет 2D DCT блока входного изображения. Блок (Simulink) продукта затем умножает коэффициенты DCT на элементы маски, заданное использование блока Constant (Simulink), чтобы отбросить всех кроме 10 из 64 коэффициентов DCT. 2D блок IDCT затем восстанавливает обработанное изображение.

Симулируйте и отобразите результаты

Симулируйте модель. Блоки Video Viewer отображают изображения ввода и вывода. Заметьте, что, несмотря на некоторую потерю качества, выходное изображение является явно распознаваемым даже после отбрасывания почти 85% коэффициентов DCT входного изображения.

sim(modelname);

Для просмотра документации необходимо авторизоваться на сайте