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;

       }

    

   }

}

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

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


 

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

21166. Общие понятия эксплуатации. Техническое обслуживание СВТ 49.5 KB
  Техническое обслуживание СВТ Эксплуатация ЭВМ заключается в использовании машины для выполнения всего комплексах возложенных на нее задач. Для эффективного использования и поддержания ЭВМ в работоспособном состоянии в процессе эксплуатации производится техническое обслуживание ТО. ТО это комплекс организационных мероприятий предназначенных для эксплуатации и ремонта ЭВМ. Существует 3 вида ТО: индивидуальный; групповой; централизованный; При индивидуальном ТО обеспечивается обслуживание одной машины силами и средствами персонала...
21167. ЭЛЕКТРИЧЕСКИЕ СОЕДИНЕНИЯ В КОНСТРУКЦИЯХ СВТ 609 KB
  В зависимости от конструктивных особенностей обратного провода ЛП подразделяют на симметричные состоящие из двух одинаковых изолированных проводов несимметричные с одним общим проводом для многих ЛП и коаксиальные с обратным проводом по оплетке коаксиального кабеля. В поперечном сечении провода бывают круглыми или прямоугольными пленочные и печатные проводники прямоугольными. Провода защищаются изолирующими диэлектрическими оболочками а при необходимости экранами. Линии электропитания представляют собой объемные провода пленочные и...
21168. Микропроцессоры 1970-х – 1990-х годов: архитектура и эволюция 439.5 KB
  Новое поколение микропроцессоров ознаменовалось появлением 32битных процессоров 80386 1985 и 486SX 1989 которые могли адресовать до 4 Гбайт памяти и выполнять несколько задач одновременно. Каждая ячейка хранит часть или все данное или команду и с ней ассоциируется идентификатор называемый адресом памяти или просто адресом. Центральный процессор последовательно вводит или выбирает команды из памяти и выполняет определяемые ими задачи. К середине 1990х годов однако из магнитных устройств внешней памяти остались в использовании...
21169. ПРОМЫШЛЕННЫЕ РОБОТЫ 43.5 KB
  По требованию к точности манипулирования различают роботы нормальной точности с погрешностью позиционирования в зависимости от грузоподъемности 01 5 мм прецизионные роботы с погрешностью 5 мкм и ультрапрецизионные роботы с погрешностью до 003 мкм. Роботы нормальной точности применяют для манипулирования транспортными или технологическими кассетами перекладки полупроводниковых пластин из кассеты в кассету на химических операциях. Прецизионные роботы манипулируют пластинами или кристаллами на операциях посадки кристалла разводки...
21170. РАСЧЕТ ПОТРЕБЛЯЕМОЙ МОЩНОСТИ 185.5 KB
  1 РАСЧЕТ ПОТРЕБЛЯЕМОЙ МОЩНОСТИ Потребляемая мощность всей платы будет зависеть от потребляемой мощности отдельных элементов и количества микросхем.1 Потребляемая мощность микросхем Тип микросхемы Количество корпусов Мощность потребляемая одним корпусом мВт Мощность потребляемая всеми корпусами мВт MAX1106 1 445 445 AD232 1 696 696 где Pпотр потребляемая мощность всей платы P мощность одной микросхемы n количество микросхем. В итоге: Pпотр = 445 696 = 1141 мВт Таким образом потребляемая мощность платы составила всего около 1 Вт...
21171. Расчет надежности 22 KB
  Для выполнения приближенного расчета необходимо знать усредненные значения интенсивностей отказов λi типовых элементов и число Ni элементов определенного типа в каждой группе. В группе объединяются элементы которые имеют примерно одинаковую интенсивность отказов. Для полного расчета надежности необходимо иметь данные о реальных режимах работы элементов устройства и о зависимостях интенсивностей отказов элементов от температурных электрических и других режимов и нагрузок.
21172. ОСНОВЫ ПОСТРОЕНИЯ САПР ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ 52 KB
  Цель САПР это повышение качества проектов снижение материальных затрат сокращение сроков проектирования и ликвидация тенденции к росту числа проектировщиков а также повышение производительности их труда. Для САПР характерно системное использование ЭВМ при рациональном распределении функций между человеком и ЭВМ. Предметом САПР являются формализация проектных процедур структурирование и типизация процессов проектирования постановка модели методы и алгоритмы решения проектных задач способы построения технических средств создания...
21173. Современная память 2.18 MB
  В скором будущем будет также стандартизирована память DDR2800 в связи с чем многие материнские платы уже поддерживают этот тип памяти. Остальные же типы памяти не стандартизированы и не факт что материнская плата способна поддержать эту память на заявленной тактовой частоте. Возникает вопрос: почему же производители памяти соревнуясь друг с другом стараются выпускать все более скоростную память Ответ довольно прост это маркетинговый ход. Но так ли это на самом деле и действительно ли производительность памяти целиком и полностью...