51217

Фильтрация изображения от импульсных помех

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

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

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

Русский

2014-02-07

145.44 KB

19 чел.

Министерство образования Республики Беларусь

Учреждение образования  

”Брестский государственный технический университет”

Кафедра ЭВМ и С

Отчёт

По лабораторной работе №3

"Фильтрация изображения от импульсных помех"

Выполнил:

студент группы Э-41

Якубчик А.Н.

 

Проверил:

         Кузьмицкий Н.Н.  

      

Брест 2013г.

Цель:

Составить программу, выполняющую фильтрацию изображения от импульсных помех.

  1.  Необходимые характеристики:
    1.  изображение хранится во внешнем файле;
    2.  программно в изображение вносятся помехи (точки, линии, ...);
    3.  программа должна выводить исходное и отфильтрованное изображения, должна присутствовать возможность выбора уровня зашумления, порога фильтра, размера окна.
  2.  Варианты (тип фильтра) 
    1.  медианный фильтр. крестообразное окно различного(!) размера, возможность изменения центра.

Текст программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace lab3

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       int Width;

       int Height;

       Bitmap picture;

       private void button1_Click(object sender, EventArgs e)

       {

           openFileDialog1.Filter = "bmp|*.bmp";

           openFileDialog1.ShowDialog();

           picture = (Bitmap)Image.FromFile(openFileDialog1.FileName);

           pictureBox1.Image = picture;

           pictureBox1.Show();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           double l;

           l = Convert.ToDouble(textBox6.Text);

           Random rand = new Random();

           for (int i = 0; i < l; i++)

           {

               picture.SetPixel(rand.Next(picture.Width), rand.Next(picture.Height), Color.White);

           }

           pictureBox2.Image = picture;

           pictureBox2.Invalidate();

       }

       private void button3_Click(object sender, EventArgs e)

       {

           

           Color color;

            Width = Convert.ToInt32(textBox1.Text);

             Height = Convert.ToInt32(textBox2.Text);

           int X = Convert.ToInt32(textBox3.Text);

           int Y = Convert.ToInt32(textBox4.Text);

           int H1 = (Height - 1) / 2;

           int W1 = (Width - 1) / 2;

           int[] temp = new int[(Height+Width-1)];

           ///int[][] temp1=new int[Width][Height];

           progressBar1.Step = 1;

           

           

           progressBar1.Maximum = picture.Width*picture.Height;

           for(int i=Y;i<picture.Height-H1;i++)

               for (int j = X; j < picture.Width-W1; j++)

               {

                   color = picture.GetPixel(j, i);

                   temp[0]=Convert.ToInt32(color.R);

                   int k=1;

                   while(k<=H1)

                   {

                       color = picture.GetPixel(j + k, i);

                       temp[k] = Convert.ToInt32(color.R);

                       k++;

                   }

                   k= 1;

                   while (k <= H1)

                   {

                       color = picture.GetPixel(j - k, i);

                       temp[H1 + k] = Convert.ToInt32(color.R);

                       k++;

                   }

                   k = 1;

                   while (k <= W1)

                   {

                       color = picture.GetPixel(j, i + k);

                       temp[2 * H1 + k] = Convert.ToInt32(color.R);

                       k++;

                   }

                   k = 1;

                   while (k <= W1)

                   {

                       color = picture.GetPixel(j, i - k);

                       temp[W1+H1+H1 + k] = Convert.ToInt32(color.R);

                       k++;

                   }

                   Sort(temp);

                   int color1 = temp[((Height + Width) / 2)-1];

                   picture.SetPixel(j, i, Color.FromArgb(color1, color1, color1));

                   progressBar1.PerformStep();

               }

           pictureBox2.Image = picture;

           progressBar1.Value = 0;

       }

       void Sort(int[] a)

       {

           int top = Height+Width-2;

           while (top != 0)

           {

               for (int i = 0; i < top; i++)

               {

                   if (a[i] > a[i + 1])

                   {

                       int temp;

                       temp = a[i];

                       a[i] = a[i + 1];

                       a[i + 1] = temp;

                   }

               }

               top--;

           }

       }

       private void button4_Click(object sender, EventArgs e)

       {

           Color color;

           int r, g, b = 0;

           double r1, g1, b1;

           int sum;

           for (int i = 0; i < picture.Height; i++)

               for (int j = 0; j < picture.Width; j++)

               {

                   color = picture.GetPixel(j, i);

                   r = color.R;

                   g = color.G;

                   b = color.B;

                   r1 = Convert.ToDouble(r);

                   r1 = r1 * 0.2989;

                   r = Convert.ToInt32(r1);

                   g1 = Convert.ToDouble(g);

                   g1 = g1 * 0.587;

                   g = Convert.ToInt32(g1);

                   b1 = Convert.ToDouble(b);

                   b1 = b1 * 0.114;

                   b = Convert.ToInt32(b1);

                   sum = r + g + b;

                   picture.SetPixel(j, i, Color.FromArgb(sum, sum, sum));

               }

           pictureBox2.Image = picture;

       }

    

   }

}

Тестовый пример:

Вывод: Составил программу, выполняющую фильтрацию изображения от импульсных помех.


 

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

23173. Неоромантизм поезiї Олени Телiги 28.5 KB
  Але крiм бiльшої наближеностi до дiйсностi неоромантизм мав ще одну суттєву вiдмiннiсть вiд течiїпопередника: полiтичне зумовлення що розкидало естетично близьких митцiв по рiзних таборах революцiйної романтики що iдейно грунтувалася на своєрiдному месiанiзмi свiтової пролетарської революцiї та неоромантизму нацiональновизвольної боротьби що набув розквiту трохи пiзнiше: напередоднi й пiд час Другої свiтової вiйни. Телiгу до боротьби та залишилося в її творчостi назавжди. Скорiше це розмiрковування над ролями чоловiкiв i жiнок що...
23175. ОЛЕГ ОЛЬЖИЧ 34 KB
  Олег Ольжич народився 8 липня 1907 р. після заснування ОУН організації українських націоналістів Ольжич став одним з найактивніших її членів очолив культурний сектор організації а трохи пізніше став заступником голови проводу ОУН. у Львові вийшла збірка Ольжича Рінь.
23176. Cтруктура світогляду 38 KB
  У систему цінностей людини входять уявлення про добро і зло щастя і нещастя мету і сенс життя. Наприклад: життя це головна цінність людини безпека людини це теж велика цінність і т. Ціннісне відношення людини до світу і до самого себе формується в певну ієрархію цінностей на вершині якої розташовуються свого роду абсолютні цінності зафіксовані в тих або інших суспільних ідеалах. які регулюють повсякденне життя як окремої людини так і всього суспільства.
23177. Історичні типи світогляду 39 KB
  Історичні типи світогляду Підкреслимо що світогляд не просто узагальнене уявлення про світ а форма суспільної самосвідомості людини вузловими категоріями якої виступають поняття світ і людина . Через ці поняття суб'єкт світогляду усвідомлює своє призначення у світі і формує життєві установки. Світогляд за самою своєю суттю є універсальним і практич ним оскільки орієнтує на вирішення найважливіших проблем людського існування виражає імперативи поведінки людини та сенс її життя. В цьому і полягає функціональне призначення світогляду.
23178. Класична онтологія та її фундаментальні проблеми 40.5 KB
  Класична онтологія та її фундаментальні проблеми Онтологія розділ філософії що вивчає проблеми буття. ТермінОнтологія був запропонований Р. Вольфом явно розділили семантику термінівонтологія іметафізика. Формально онтологія складається з понять термінів організованих в таксономія їх описів і правил виводу.
23179. Технология Token Ring 81.5 KB
  Сети Token Ring, так же как и сети Ethernet, характеризует разделяемая среда передачи данных, которая в данном случае состоит из отрезков кабеля, соединяющих все станции сети в кольцо. Кольцо рассматривается как общий разделяемый ресурс, и для доступа к нему требуется не случайный алгоритм
23180. Філософський зміст категорії матерія 37 KB
  Якщо для філософів стародавнього світу матерія це матеріал з якого складаються тіла предмети а кожний предметтіло складається з матерії та форми як духовного першопочатку то для Р.Ньютон додає до Декартового визначення матерії як субстанції ще три атрибути: протяжність непроникність непорушна цілісність тілаінертність пасивність нездатність самостійно змінювати швидкість згідно із законами динаміки; вага зумовлена дією закону всесвітньої гравітації. Причому інертність та вага потім об'єднуються ним у поняття маси яка виступає...
23181. Рух, як спосіб простір та час як форми існування матерії 37 KB
  Рухяк спосіб простір та час як форми існування матерії Простір і час це філософські категорії за допомогою яких позначаються основні форми існування матерії. Філософію цікавить насамперед питання про відношення простору і часу до матерії тобто чи є вони реальними чи це тільки абстракціїфеномени свідомості. Сучасна наука розглядає простір і час як форми існування матерії. Матеріалізм підкреслює об'єктивний характер простору і часу невіддільність від руху матерії: матерія рухається у просторі і часі.