В этом примере показано, как сжать изображение с помощью 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);