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;

       }

    

   }

}

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

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


 

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

81350. Звернення стягнення на грошові кошти боржника - юридичної особи 27.5 KB
  Готівка в національній та іноземній валюті яка знаходиться в касах або інших сховищах боржника юридичної особи підлягає невідкладному вилученню після її виявлення Державний виконавець звертає стягнення на кошти боржника юридичної особи що знаходяться в кредитних установах в тому числі в органах Державного казначейства в порядку передбаченому Законом. Якщо даних про наявність у боржника юридичної особи рахунків і вкладів у банках чи інших кредитних установах немає то державний виконавець одержує такі дані в податкових органах які...
81351. Звернення стягнення на інше майно боржника - юридичної особи 28.88 KB
  У разі відсутності в боржника юридичної особи коштів достатніх для покриття заборгованості стягнення звертається на інше майно належне боржникові юридичній особі на праві власності або закріплене за ним у тому числі на майно яке обліковується на окремому балансі філії представництва та іншого відокремленого підрозділу боржника юридичної особи за винятком майна виключеного з обороту або обмеженого в обороті незалежно від того хто фактично використовує це майно. На зазначене майно накладається арешт і воно реалізується в такій...
81352. Порядок звернення стягнення на майно при реорганізації та ліквідації боржника - юридичної особи 23.4 KB
  У разі реорганізації злиття приєднання розділення виділення перетворення боржника юридичної особи стягнення за виконавчими документами звертається на кошти та інше майно тієї юридичної особи на яку відповідно до закону покладено відповідальність за зобовязаннями боржника юридичної особи. У разі ліквідації боржника юридичної особи у тому числі внаслідок визнання боржника банкрутом виконавчий документ передається до ліквідаційної комісії або арбітражного керуючого для вирішення питання про подальший порядок виконання рішення у...
81353. Порядок звернення стягнення на зарплату та інші доходи боржника - фізичної особи. Розмір відрахувань із зарплати та інших доходів боржника 28.68 KB
  Розмір відрахувань із зарплати та інших доходів боржника Умови звернення стягнення на заробітну плату та інші доходи боржника Стягнення на заробітну плату заробіток пенсію стипендію та інші доходи боржника звертається за відсутності в боржника коштів на рахунках у банках та інших кредитних установах відсутності чи недостатності майна боржника для повного покриття належних до стягнення сум а також при виконанні рішень про стягнення періодичних платежів та стягнень на суму що не перевищує двох мінімальних розмірів заробітної плати. При...
81354. Особливості і виконання рішень про стягнення аліментів 28.71 KB
  У разі неможливості стягнення аліментів із заробітної плати чи інших доходів боржника протягом трьох місяців підряд якщо боржник не працює і не одержує доходів стягнення звертається на майно боржника. Розмір заборгованості з аліментів визначається державним виконавцем за місцем виконання рішення виходячи з фактичного заробітку доходів одержаного боржником за час протягом якого стягнення не провадилося або одержуваного ним на момент визначення заборгованості в твердій грошовій сумі або у відсотковому відношенні. Державний виконавець у...
81355. Виконання рішення про обов’язок боржника вчинити певну дію чи утриматися від її вчинення 23.5 KB
  ісля відкриття виконавчого провадження за виконавчим документом, який зобовязує боржника вчинити певні дії або утриматися від їх учинення, державний виконавець відповідно до статті 24 Закону визначає йому строк добровільного виконання рішення.
81356. Порядок виконання рішення про поновлення на роботі 23.92 KB
  Закону виконавчий документ про поновлення на роботі незаконно звільненого або переведеного працівника виконується негайно ч. Виконання вважається завершеним з моменту фактичного допущення працівника до виконання попередніх обовязків на підставі відповідного наказу органу який прийняв незаконне рішення про звільнення або переведення працівника. У разі невиконання власником підприємства установи організації або уповноваженим ним органом фізичною особою фізичною особою підприємцем рішення про поновлення на роботі незаконно звільненого...
81357. Виконання рішення про відібрання дитини 22.11 KB
  Під час виконання рішень про відібрання дитини державний виконавець провадить виконавчі дії з обовязковою участю особи якій дитина передається на виховання із залученням представників органів опіки і піклування а при потребі представників органів та установ освіти медичних працівників. У разі потреби державний виконавець може звернутися до суду з поданням про вирішення питання про тимчасове влаштування дитини до дитячого чи лікувального закладу...
81358. Особливості виконання рішення про виселення боржника 26.52 KB
  Щодо справ про виселення державний виконавець надає боржнику термін для добровільного виконання до 15 днів. Відсутність боржника повідомленого про день і час виселення не є перешкодою для виконання виконавчого документа. Якщо виконання здійснюється за відсутності осіб що виселяються то державний виконавець зобовязаний провести разом з описом майна його оцінку.