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;

       }

    

   }

}

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

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


 

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

46646. Методика изучения темы «ПЗ, ПС химических элементов Д.И. Менделеева» 24.04 KB
  элтов это не только один из важнейших законов природы это и методическая основа изучения химии. средство изучения химии.время любой систематический курс химии имеет в своей основе ПЗ. В программе по химии приводятся требования к знаниям относящиеся к образовательной стороне обучения.
46647. Исламская республика 24.33 KB
  Политические партии. Это партии входившие в Национальный фронт партии марксистского типа а также партии использовавшие исламские лозунги. Активное участие в свержении шахского режима приняли такие левые партии как Организация моджахедов иранского народа Моджахедине Хальк Организация партизанфедаев Федаяне хальк иранского народа Народная партия Ирана Туде. Поддержали революцию некоторые буржуазнодемократические партии Национального фронта члены которых вошли в состав Временного революционного правительства партия Движение за...
46648. Сжимаемость, температурное расширение, испаряемость 24.34 KB
  Сжимаемость свойство вещества изменять свой объём при изменении внешнего давления или другими словами при изменении напряжений в веществе. Если давление в гидросистеме не превышает давления на которое настроен вспомогательный клапан последний закрыт давления в торцовых полостях переливного золотника 5 одинаковы и золотник прижат пружиной 9 к своему конусному седлу вследствие этого напорная и сливная линии разъединены. Изза потери давления в малом отверстии 7 давление в полости 10 уменьшится и золотник 5 переместится вверх сжимая...
46649. Методы и средства обеспечения безопасности установок и систем повышенной опасности 24.43 KB
  Методы и средства обеспечения безопасности установок и систем повышенной опасности. Основные методы обеспечения безопасности установок. Госгортехнадзор РФ утверждает обязательные для предприятий организаций и АО далее предприятий всех форм собственности межотраслевые правила по устройству и безопасной эксплуатации этих установок [19. В них содержатся требования безопасности которые должны быть выполнены как при проектировании и изготовлении так и при монтаже эксплуатации и ремонте данных установок.
46650. Дополнительное профессиональное образование 24.45 KB
  Представляет собой систему средств обеспечивающих прогностическую оценку взаимосоответствия человека и профессии в тех видах деятельности которые осуществляются в нормативно заданных опасных условиях гигиенических микроклиматических технических социальнопсихологических требующих от человека повышенной ответственности здоровья высокой работоспособности и точности исполнения задания устойчивой эмоциональноволевой регуляции. Вот почему на каждом уроке как правило учителя дают учащимся домашние задания. Обычно эти задания включают в...
46651. Статус української мови як державної 24.5 KB
  Українська мова в Україні має статус державної. Це закріплено у десятій статті Конституції України. Державна мова - мова, яка користується у конкретній державі законодавчим статусом обов'язкової для вживання в офіційних сферах життя. Державна мова обслуговує державні і суспільні органи, організації, заклади культури і освіти. Вона повинна побутувати у всіх сферах життя