51057

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

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

Коммуникация, связь, радиоэлектроника и цифровые приборы

Программа должна выводить исходное и отфильтрованное изображения, должна присутствовать возможность выбора уровня зашумления, порога фильтра, размера окна

Русский

2014-02-10

135.5 KB

4 чел.

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

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

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

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

Отчёт

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

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

Выполнил:

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

Тихонов А.В.

 

Проверил:

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

      

Брест 2013г.

Цель:

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

  1.  Необходимые характеристики:
    1.  изображение хранится во внешнем файле;
      1.  программно в изображение вносятся помехи (точки, линии, ...);
      2.  программа должна выводить исходное и отфильтрованное изображения, должна присутствовать возможность выбора уровня зашумления, порога фильтра, размера окна.
    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)

       {

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

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

               {

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

               }

           pictureBox2.Image = picture;

       }

       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();

               }

           pictureBox1.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));

               }

           pictureBox1.Image = picture;

       }

       

   }

}

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

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


 

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

17698. Формули Френеля 41.19 KB
  Формули Френеля Фомули Френеля визначають амплітуди й інтенсивності заломленої й відбитої хвилі при проходженні світла через плоску границю розділу двох середовищ із різними показниками заломлення. Формули Френеля справделиві в тому випадку коли границя розділу дв...
17699. Хвильове рівняння для металів 21.52 KB
  Хвильове рівняння для металів З рівн Максвела: та рівнянь: діелектр проникність електрична провідність хвильове рівняння = бо = Нехай вектор рівняння Гельмгольца для монохроматичної хвилі. Введемо
17700. Часова та просторова когерентність 72.96 KB
  Часова та просторова когерентність Для інтерференції хвиль необхідною умовою є їх когерентність: однакові частоти однакові поляризації лінійні постійна різниця фаз. Розрізняють два види інтерференції часову та просторову. Часова когерентність. Якщо τ час спос...
17701. Шкала електромагнітних хвиль 139.3 KB
  Шкала електромагнітних хвиль Радіохвилями називають електромагнітні хвилі довжина яких у вакуумі більша за. Оптичним випромінюванням світлом називають електромагнітні хвилі довжини яких у вакуумі лежать у діапазоні від до. До оптичного випромінювання від
17702. ДОСЛІДЖЕННЯ РОБОТИ БАЗОВОЇ СХЕМИ ДТЛ 339.5 KB
  Лабораторна робота №3 ДОСЛІДЖЕННЯ РОБОТИ БАЗОВОЇ СХЕМИ ДТЛ Мета роботи: Дослідження роботи базової схеми ДТЛ. 1. Теоретичні відомості. 1.1 Базова схема ДТЛ. Призначення елементів. Базова схема діоднотранзисторної логіки зображена на мал.41. мал. ...
17703. ОСНОВИ ТЕОРІЇ ДЕРЖАВИ І ПРАВА 483.5 KB
  ОСНОВИ ТЕОРІЇ ДЕРЖАВИ І ПРАВА 1. Походження сутність та ознаки держави Відомо що держава існувала не завжди а її утворенню передував первіснообщинний устрій який являв собою стародавній тип колективного виробництва і був результатом слабкості окремої людин...
17704. ОСНОВИ КОНСТИТУЦІЙНОГО ПРАВА УКРАЇНИ 554 KB
  ОСНОВИ КОНСТИТУЦІЙНОГО ПРАВА УКРАЇНИ 1. Поняття предмет і джерела конституційного права України Етимологія слова конституція походить від лат. constitutio устрій установлення. Але ще у Стародавній Греції Арістотелем було сформоване уявлення про конституці...
17705. ОСНОВИ АДМІНІСТРАТИВНОГО ПРАВА УКРАЇНИ 544 KB
  ОСНОВИ АДМІНІСТРАТИВНОГО ПРАВА УКРАЇНИ 1. Управління як обєкт адміністративного права Адміністративне право обєктивно взаємоповязане з таким соціальним явищем як управління. Сам термін від лат. аdministratio управління став універсальним засобом для хар...
17706. ОСНОВИ ФІНАНСОВОГО ПРАВА УКРАЇНИ 354 KB
  ОСНОВИ ФІНАНСОВОГО ПРАВА УКРАЇНИ 1. Фінансове право України: поняття предмет правового регулювання та система Самостійність та особливість фінансового права як галузі права зумовлена наявністю предмета та методу правового регулювання. Фінансове право Ук