51347

Основы сжатия. 2D Дискретное косинусное преобразование

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы: Написать программу осуществляющую прямое и обратное двумерное ДКП Дискретное Косинусное преобразование над выбранным изображением. Общий вид программы следующий: Здесь мы видим следующие элементы управления: Загрузить изображение загружает изображение и выводит в Imge Прямое 2DДКП преобразование Делает прямое преобразование и сохраняет в фаил Обратное 2DДКП преобразование Делает обратное преобразование из файла полученного ранее Код программы:...

Русский

2014-02-09

150.5 KB

27 чел.

Лабораторная работа 5.

Основы сжатия. 2D Дискретное косинусное преобразование


Выполнил: Шуклецов М.А.

 ФРТ, гр. 2106

Цель работы: Написать программу, осуществляющую прямое и обратное двумерное ДКП (Дискретное Косинусное преобразование) над выбранным изображением. Промежуточный массив данных сохранить во временный файл dct2d.data. После обратного преобразования результат вывести на экран.

Общий вид программы следующий:

Здесь мы видим следующие элементы управления:

«Загрузить изображение» - загружает изображение и выводит в Image

«Прямое 2D-ДКП преобразование» - Делает прямое преобразование и сохраняет в фаил

«Обратное 2D-ДКП преобразование» - Делает обратное преобразование из файла, полученного ранее

Код программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "cos_functions.h"    //Подключение внешних функций

#include "dct.h"

#include "extern.h"

#include "matrix_and_images.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

double CosMatrix[8][8];     //Объявление матрицы 8х8 для прямого ДКП

double CosMatrix_T[8][8];    //Объявление матрицы 8х8 для обратного ДКП

int dct_size = 8;      //Объявление размера для ДКП

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (OpenPictureDialog1->Execute())

       {

          try{

          Image_2D_Source->Picture->LoadFromFile(OpenPictureDialog1->FileName);

             }

           catch (EInvalidGraphic &Ex){

        ShowMessage("Ошибка загрузки изображения");

          }

       }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

DCT_2D_Full("sourse", Image_2D_Source->Picture->Bitmap->Handle, dct_size);  

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

IDCT_2D_Full("sourse", Image_2D_Dest);

}

//---------------------------------------------------------------------------

Вывод: Мы использовали заимствованную функцию, которая совершает ДКП при этом при прямом проходе создает временный фаил ”source” с размерами получаемыми через ярлык Image_2D_Source->Picture->Bitmap->Handle и размерами шага рамки в 8 пикселей. При обратном проходе берется вышеописанный фаил и изображение выводиться во 2 рамке.


 

А также другие работы, которые могут Вас заинтересовать

69096. Елементи керування: перемикачі і прапорці 54.5 KB
  Написати програму розрахунку вартості замовлення друку фотографій. Написати програму розрахунку вартості автомобіля в залежності від комплектації. Написати програму обчислення поточного дня з початку року вашого дня народження.
69097. Елементи керування: Списки 60 KB
  Для цього у вікні коду проекту виділимо ім’я змінної об’єкту, потім в головному меню виберемо пункт Refactor і підпункт Rename. У вікні, що відкрилося, вкажемо нове ім’я. Тоді будуть показані всі місця, що вимагають перейменування об’єкту, як це видно з рисунку. Натисніть кнопку Apply.
69099. Архитектура БД ORACLE 3.15 MB
  Система управления базами данных, СУБД (Database Management System DBMS), является одним из важнейших компьютерных инструментов в современных организациях. В большинстве компаний СУБД используют для записи транзакций и ведения бухгалтерского учета.
69100. Моделирование реляционной БД 703.5 KB
  Описание систем в виде объектов и взаимоотношений Модель реляционной базы данных Нормальные формы Введение В материалах предыдущей лекции были рассмотрены основные понятия связанные с архитектурой БД ORCLE. В частности: Определение СУБД; Основное назначение БД; Категории файлов данных.
69101. Базы знаний. Введение в интеллектуальные системы 211 KB
  Существенный вклад в становление новой науки внесли ее пионеры: Маккарти автор первого языка программирования для задач ИИ ЛИСПа Минский автор идеи фрейма и фреймовой модели представления знаний Ньюэлл Саймон Шоу Хант и другие.
69102. Локалізація імен. Різновиди параметрів. Процес виклику підпрограм 89.5 KB
  Один з ефективних способів створення великих програм, технологія низхідного проектування, полягає в їх конструюванні за принципом «розділяй і пануй»: програма розглядається як набір маленьких фрагментів, кожний з яких виконує певну логічно завершену дію, може бути виконаний декілька...
69103. Рекурсія. Рекурсивні означення та підпрограми 104.5 KB
  Кожний ідентифікатор у програмі характеризується областю дії імені або областю видимості. Область видимості ідентифікатора - це область программ, в якій можна посилатися на даний ідентифікатор. У мові Раsсаl припускається довільна послідовність і кількість розділів, в яких іменуються ті чи інші об’єкти.
69104. Ініціалізація графічного режиму 52 KB
  Відеоадаптер персонального комп’ютера може працювати в одному із двох режимів - текстовому або графічному. У текстовому режимі на екрані дисплея відображаються лише символи. У графічному режимі мінімальним елементом зображення на екрані дисплея є піксел, або графічна точка.