51344

Фильтрация

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

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

Цель работы: Написать программу, осуществляющую фильтрацию изображения по заданной в программе маске (с возможностью редактирования пользователем). Изображение открывается через диалог открытия файла с расширением .bmp.

Русский

2014-02-09

459 KB

14 чел.

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

Фильтрация

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

 ФРТ, гр. 2106

Цель работы: Написать программу, осуществляющую фильтрацию изображения по заданной в программе маске (с возможностью редактирования пользователем). Изображение открывается через диалог открытия файла с расширением *.bmp.

При выполнении лабораторной работы, я за исходное изображение взял:

 

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

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

«Матрица фильтрации» – та матрица, на которую умножается специальным алгоритмом

рамка 3х3 изображения передвигающаяся по изображению.

«Фильтрация» - Кнопка, совершающая описанное выше действие.

«Вернуть изображение» - кнопка, созданная для удобства загрузки изображения и дальнейшего повторения операции.

«Выбрать файл» - через OpenDialog мы выбираем изображение, путь к которому отображается в окне Edit.

Алгоритм фильтрации:

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

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

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

Graphics::TBitmap* pBitmap1 = new Graphics::TBitmap();

byte arrayY[800][600], *ptr;     //создание аххива под изображение

static inline byte CLAMP(int x)     //функция обрезания полученных

{ return ((x > 255) ? 255 : ((x < 0) ? 0 : x)); }   //значении цвета в пределах 0…255

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

void __fastcall TForm1::FormCreate(TObject *Sender)  //заполнение матрицы произвольными 

{        //числами

int i,j;

randomize();

for(i=0; i<3;i++)

  {

       for(j=0; j<3;j++)

       {

       StringGrid1->Cells[i][j] = IntToStr(random(10)-4);

       }

  }

       

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)  //Кнопка «Выбрать файл»

{

if(OpenDialog1->Execute())

{

  Edit1->Text=OpenDialog1->FileName;

  pBitmap1->LoadFromFile(Edit1->Text);

}

 Image1->Left=0;

Image1->Top=0;

Image1->Width=pBitmap1->Width;

Image1->Height=pBitmap1->Height;

Image1->Picture->Assign(pBitmap1);

int x, y;

for(y=0; y < pBitmap1->Height; y++)  //цикл считывания изображения в заранее

 {      //созданный массив

   ptr=(Byte*)pBitmap1->ScanLine[y];  

   for(x=0; x < pBitmap1->Width; x++)

       {

       arrayY[x][y] = *(ptr + x);   //запись соответствующего значения в матрицу

       }

 }

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int x, y;

for (y=1 ; y<(pBitmap1->Width)-1; y++)

{

for (x=1; x<(pBitmap1->Height)-1; x++)

 {arrayY[x][y]=arrayY[x-1][y-1]*StrToInt(StringGrid1->Cells[0][0])+ //Собственно сам алгоритм

 arrayY[x][y-1]*StrToInt(StringGrid1->Cells[1][0])+   //представленный выше 

 arrayY[x+1][y-1]*StrToInt(StringGrid1->Cells[2][0])+   

 arrayY[x-1][y]*StrToInt(StringGrid1->Cells[0][1])+   

 arrayY[x-1][y+1]*StrToInt(StringGrid1->Cells[0][2])+

 arrayY[x+1][y+1]*StrToInt(StringGrid1->Cells[2][2])+    

 arrayY[x][y+1]*StrToInt(StringGrid1->Cells[1][2])+

 arrayY[x+1][y]*StrToInt(StringGrid1->Cells[2][1])+

 arrayY[x][y]*StrToInt(StringGrid1->Cells[1][1]);

 arrayY[x][y] = CLAMP(arrayY[x][y]);     //функция описана выше

 }

}

for(y=0; y < pBitmap1->Height; y++)   //цикл перезаписывающий изображение

 {       //из полученной матрицы чисел

   ptr=(Byte*)pBitmap1->ScanLine[y];

   for(x=0; x < pBitmap1->Width; x++)

    {

       *(ptr + x) = arrayY[x][y];

       }

    }

 Image1->Picture->Assign(pBitmap1);   //вывод изображения из памяти в Image1

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)  //кнопка «Вернуть изображение»

{

 pBitmap1->LoadFromFile(Edit1->Text);

 Image1->Left=0;

Image1->Top=0;

Image1->Width=pBitmap1->Width;

Image1->Height=pBitmap1->Height;

Image1->Picture->Assign(pBitmap1);

}

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

Вывод: Мы посмотрели алгоритм наложения на изображение фильтров.


 

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

31329. Реставрация дома в Иркутской области 1.05 MB
  Подготовка и оклейка поверхности обоями 31 2. По всем показателям вид отделки лицевой поверхности керамическая плитка для пола аналогична фасадной керамической плитке. Назначение и виды штукатурных работ Штукатуркой называется отделочный слой на поверхности различных конструктивных элементов зданий стен перегородок перекрытий колонн и др. выравнивающий эти поверхности или придающий им определенную форму и фактуру.
31330. Модернизация электрооборудования продольношлифовального станка модели 3Б722 1.22 MB
  Присоединительные клеммы располагаются в закрытой коробке имеющей резьбовое отверстие или патрубок для ввода проводов: снятие двигателя и его установка не должны вызывать частичного или полного демонтажа механизмов станка; замена и изменение натяжения ремней должна быть простой. Выбор элементов монтажа С целью защиты проводников от механических повреждений и вредных воздействий машинного масла пыли и охлаждающей жидкости производится в стальных тонкостенных трубах...
31331. Робота з базами даних і можливість автоматизації роботи кулінарного сайту 268.5 KB
  Необхідність вдосконалення методів і прийомів визначення економічної ефективності і розрахунків пояснюється тим, що впровадження обчислювальної техніки - дорогий процес, і тому доцільність витрат на створення і впровадження інформаційної системи повинно бути серйозно обґрунтовано. На створення інформаційної системи потрібні одноразові витрати на її розробку і придбання необхідного комплексу технічних засобів. Економічна ефективність системи визначається з урахуванням одноразових витрат і поточних витрат.
31332. Проектирование локальной вычислительной сети ООО «РАСКО» 4.84 MB
  Локальные сети в сравнении с глобальными сетями внесли много нового в способы организации работы пользователей. Доступ к разделяемым ресурсам стал гораздо удобнее - пользователь мог просто просматривать списки имеющихся ресурсов, а не запоминать их идентификаторы или имена. После соединения с удаленным ресурсом можно было работать с ним с помощью уже знакомых пользователю по работе с локальными ресурсами команд.
31333. Информационные технологии решения комплекса задач подсистемы МТС АСУ предприятия ФГУП «НИИ Точных приборов» 11.23 MB
  Задача 1: Определение потребности МР на производство оборудования на год 50 3. Выбор сетевого оборудования. Обеспечение соответствия оборудования рабочего места требованиям эргономики. и медицинской радиоэлектронной техники; создание и использование по целевому назначению наземных специальных комплексов в интересах решения конверсионных задач дистанционного зондирования Земли; проведение аэросъемочных работ изготовление аналоговых цифровых электронных карт на основе материалов аэрокосмического зондирования...
31335. СПЕЦИФІКА ВИКОНАННЯ РЕНЕСАНСНОЇ ВОКАЛЬНОЇ МУЗИКИ В УМОВАХ ВІТЧИЗНЯНОЇ ХОРОВОЇ ПРАКТИКИ 3.14 MB
  ДАНЬШИНА Наталія Володимирівна СПЕЦИФІКА ВИКОНАННЯ РЕНЕСАНСНОЇ ВОКАЛЬНОЇ МУЗИКИ В УМОВАХ ВІТЧИЗНЯНОЇ ХОРОВОЇ ПРАКТИКИ 17. Інтерес до старовинної музики паростки якого можна побачити у так званих історичних концертах XIX століття активізувався на початку XX ст. Звернення насамперед саме до музики Бароко призвело до вкрай вкрай переконливого художнього репертуару: на засадах реконструкції відповідних епосі музичних інструментів та узлагодження з їх звучанням вокальної манери співаків дивовижно змінився...