14755

ФИЛЬТРАЦИЯ ИЗОБРАЖЕНИЯ ОТ ИМПУЛЬСНЫХ ПОМЕХ

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

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

Лабораторная лабота №3 фильтрация изображения от импульсных помех Цель работы: фильтрация изображения от импульсных помех. Задание: Составить программу выполняющую фильтрацию изображения от импульсных помех методами функции рассеяния точки H1 – H4 Код про...

Русский

2013-06-09

716.04 KB

5 чел.

Лабораторная лабота №3

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

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

Задание:

Составить программу, выполняющую фильтрацию изображения от импульсных помех методами функции рассеяния точки (H1 – H4)

Код программы: 

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;

using System.IO;

namespace lab3

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       

       public int[,] h1 = new int[,] { { 1, 1, 1 }, { 1, 2, 1 }, { 1, 1, 1 } };

       public int[,] h2 = new int[,] { { 1, 1, 1 }, { 1, 1, 1 }, { 1, 1, 1 } };

       public int[,] h3 = new int[,] { { 1, 2, 1 }, { 2, 4, 2 }, { 1, 2, 1 } };

       public int[,] h4 = new int[,] { { 2, 1, 2 }, { 1, 2, 1 }, { 2, 1, 2 } };

       public int k1 = 10, k2 = 9, k3 = 16, k4 = 14;

       public string path;

       public Bitmap bmpOrig, bmpNoised, bmpH1, bmpH2, bmpH3, bmpH4;

       public Color[,] clr = new Color[3, 3];

       public int r1,r2,r3,r4,g1,g2,g3,g4,b1,b2,b3,b4;

       private void Form1_Load(object sender, EventArgs e)

       {

           

       }

       //

       //

       private void DPF()

       {

           bmpH1 = new Bitmap(bmpNoised);

           bmpH2 = new Bitmap(bmpNoised);

           bmpH3 = new Bitmap(bmpNoised);

           bmpH4 = new Bitmap(bmpNoised);

           for( int x = 1; x < bmpNoised.Width - 1; x++)

               for (int y = 1; y < bmpNoised.Height - 1; y++)

               {

                   clr[0,0] = bmpNoised.GetPixel(x - 1, y - 1);

                   clr[0,1] = bmpNoised.GetPixel(x - 1, y);

                   clr[0,2] = bmpNoised.GetPixel(x - 1, y + 1);

                   clr[1,0] = bmpNoised.GetPixel(x, y - 1);

                   clr[1,1] = bmpNoised.GetPixel(x, y);

                   clr[1,2] = bmpNoised.GetPixel(x, y + 1);

                   clr[2,0] = bmpNoised.GetPixel(x + 1, y - 1);

                   clr[2,1] = bmpNoised.GetPixel(x + 1, y);

                   clr[2,2] = bmpNoised.GetPixel(x + 1, y + 1);

                   r1 = (clr[0, 0].R * h1[0, 0] + clr[0,1].R * h1[0, 1] +

                       clr[0, 2].R * h1[0, 2] + clr[1, 0].R * h1[1, 0]+

                       clr[1, 1].R * h1[1, 1] + clr[1, 2].R * h1[1, 2]+

                       clr[2, 0].R * h1[2, 0] + clr[2, 1].R * h1[2, 1]+

                       clr[2, 2].R * h1[2, 2]) / k1;

                   g1 = (clr[0, 0].G * h1[0, 0] + clr[0, 1].G * h1[0, 1] +

                       clr[0, 2].G * h1[0, 2] + clr[1, 0].G * h1[1, 0] +

                       clr[1, 1].G * h1[1, 1] + clr[1, 2].G * h1[1, 2] +

                       clr[2, 0].G * h1[2, 0] + clr[2, 1].G * h1[2, 1] +

                       clr[2, 2].G * h1[2, 2]) / k1;

                   b1 = (clr[0, 0].B * h1[0, 0] + clr[0, 1].B * h1[0, 1] +

                       clr[0, 2].B * h1[0, 2] + clr[1, 0].B * h1[1, 0] +

                       clr[1, 1].B * h1[1, 1] + clr[1, 2].B * h1[1, 2] +

                       clr[2, 0].B * h1[2, 0] + clr[2, 1].B * h1[2, 1] +

                       clr[2, 2].B * h1[2, 2]) / k1;

                   

                   r2 = (clr[0, 0].R * h2[0, 0] + clr[0, 1].R * h2[0, 1] +

                       clr[0, 2].R * h2[0, 2] + clr[1, 0].R * h2[1, 0] +

                       clr[1, 1].R * h2[1, 1] + clr[1, 2].R * h2[1, 2] +

                       clr[2, 0].R * h2[2, 0] + clr[2, 1].R * h2[2, 1] +

                       clr[2, 2].R * h2[2, 2]) / k2;

                   g2 = (clr[0, 0].G * h2[0, 0] + clr[0, 1].G * h2[0, 1] +

                       clr[0, 2].G * h2[0, 2] + clr[1, 0].G * h2[1, 0] +

                       clr[1, 1].G * h2[1, 1] + clr[1, 2].G * h2[1, 2] +

                       clr[2, 0].G * h2[2, 0] + clr[2, 1].G * h2[2, 1] +

                       clr[2, 2].G * h2[2, 2]) / k2;

                   b2 = (clr[0, 0].B * h2[0, 0] + clr[0, 1].B * h2[0, 1] +

                       clr[0, 2].B * h2[0, 2] + clr[1, 0].B * h2[1, 0] +

                       clr[1, 1].B * h2[1, 1] + clr[1, 2].B * h2[1, 2] +

                       clr[2, 0].B * h2[2, 0] + clr[2, 1].B * h2[2, 1] +

                       clr[2, 2].B * h2[2, 2]) / k2;

                   r3 = (clr[0, 0].R * h3[0, 0] + clr[0, 1].R * h3[0, 1] +

                       clr[0, 2].R * h3[0, 2] + clr[1, 0].R * h3[1, 0] +

                       clr[1, 1].R * h3[1, 1] + clr[1, 2].R * h3[1, 2] +

                       clr[2, 0].R * h3[2, 0] + clr[2, 1].R * h3[2, 1] +

                       clr[2, 2].R * h3[2, 2]) / k3;

                   g3 = (clr[0, 0].G * h3[0, 0] + clr[0, 1].G * h3[0, 1] +

                       clr[0, 2].G * h3[0, 2] + clr[1, 0].G * h3[1, 0] +

                       clr[1, 1].G * h3[1, 1] + clr[1, 2].G * h3[1, 2] +

                       clr[2, 0].G * h3[2, 0] + clr[2, 1].G * h3[2, 1] +

                       clr[2, 2].G * h3[2, 2]) / k3;

                   b3 = (clr[0, 0].B * h3[0, 0] + clr[0, 1].B * h3[0, 1] +

                       clr[0, 2].B * h3[0, 2] + clr[1, 0].B * h3[1, 0] +

                       clr[1, 1].B * h3[1, 1] + clr[1, 2].B * h3[1, 2] +

                       clr[2, 0].B * h3[2, 0] + clr[2, 1].B * h3[2, 1] +

                       clr[2, 2].B * h3[2, 2]) / k3;

                  

                   r4 = (clr[0, 0].R * h4[0, 0] + clr[0, 1].R * h4[0, 1] +

                       clr[0, 2].R * h4[0, 2] + clr[1, 0].R * h4[1, 0] +

                       clr[1, 1].R * h4[1, 1] + clr[1, 2].R * h4[1, 2] +

                       clr[2, 0].R * h4[2, 0] + clr[2, 1].R * h4[2, 1] +

                       clr[2, 2].R * h4[2, 2]) / k4;

                   g4 = (clr[0, 0].G * h4[0, 0] + clr[0, 1].G * h4[0, 1] +

                       clr[0, 2].G * h4[0, 2] + clr[1, 0].G * h4[1, 0] +

                       clr[1, 1].G * h4[1, 1] + clr[1, 2].G * h4[1, 2] +

                       clr[2, 0].G * h4[2, 0] + clr[2, 1].G * h4[2, 1] +

                       clr[2, 2].G * h4[2, 2]) / k4;

                   b4 = (clr[0, 0].B * h4[0, 0] + clr[0, 1].B * h4[0, 1] +

                       clr[0, 2].B * h4[0, 2] + clr[1, 0].B * h4[1, 0] +

                       clr[1, 1].B * h4[1, 1] + clr[1, 2].B * h4[1, 2] +

                       clr[2, 0].B * h4[2, 0] + clr[2, 1].B * h4[2, 1] +

                       clr[2, 2].B * h4[2, 2]) / k4;

                   bmpH1.SetPixel(x, y, Color.FromArgb(r1, g1, b1));

                   bmpH2.SetPixel(x, y, Color.FromArgb(r2, g2, b2));

                   bmpH3.SetPixel(x, y, Color.FromArgb(r3, g3, b3));

                   bmpH4.SetPixel(x, y, Color.FromArgb(r4, g4, b4));

               }

       }

       //

       private void openFileToolStripMenuItem_Click(object sender, EventArgs e)

       {

           OpenFileDialog dialog = new OpenFileDialog();

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

           if (dialog.ShowDialog() == DialogResult.OK)

           {

               this.path = dialog.FileName;

               bmpOrig = new Bitmap(this.path);

               pictureBox1.Image = bmpOrig;

           }

       }

       private void makeSomeNoiseToolStripMenuItem_Click(object sender, EventArgs e)

       {

           Random rand = new Random();

           bmpNoised = new Bitmap(bmpOrig);

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

           {

               int rx = rand.Next(bmpNoised.Width);

               int ry = rand.Next(bmpNoised.Height);

               if ((rx != 0) && (rx != bmpNoised.Width-1) && (ry != 0) && (ry != bmpNoised.Height-1))

                   bmpNoised.SetPixel(rx, ry, Color.White);

               else

                   i--;

           }

           pictureBox2.Image = bmpNoised;

           pictureBox2.Refresh();

       }

       private void filterItToolStripMenuItem_Click(object sender, EventArgs e)

       {

           DPF();

           pictureBox3.Image = bmpH1;

           pictureBox3.Refresh();

           pictureBox4.Image = bmpH2;

           pictureBox4.Refresh();

           pictureBox5.Image = bmpH3;

           pictureBox5.Refresh();

           pictureBox6.Image = bmpH4;

           pictureBox6.Refresh();

       }

   }

}

Работа программы:

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


 

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

46619. Общие требования к уроку изобразительного искусства. Традиционный урок его структура и особенности 22.37 KB
  опыт; развивающий характер занятий; реализация дидактических принципов в оптимальных соотнощениях; обеспечение надлежащих условий для продуктивнопознавательной деятти с учетом особенностей интересов; установление межпредметных связей; связь с ранее изученным преемственность; активизация познавательных процессов мотивации; логичность и эмоциональность педагогического процесса; эффективное использование педагогических средств; связь с жизнью; формирование ЗУНОВ;формирование умения учиться; ориентировка на зону ближайшего...
46620. Удельная государственно-политическая система (на примере Владимиро-Суздальского и Галицко-Волынского княжеств). Русское право периода раздробленности. Дворцово-вотчинная система управления 22.38 KB
  Период феодальной раздробленности характерен бесконечными войнами распрями междоусобицами разорявшими крестьянство города ослаблявшими военную мощь Руси. Под властью Владимирского князя оказалась огромная территория северовосточной Руси. Как утверждают историки это было сильное и жизнеспособное политическое образование которое могло претендовать не только на самсютоятельность но и на центральное положение во всей Руси. киевский митрополит Максим не терпя насилия татарского оставил Киев и переехал во ВладимирСуздальский что...
46621. Анализ программы «Изобразительное искусство» под ред. В.С.Кузина (1-7 класс) 22.42 KB
  3 В основе программы лежат принципы:1 тематический принцип планирования учебного материала; 2принцип воспитывающего обучения; 3научность обучения; 4доступность обучения; 5систематичность и последовательность бучения; 6сознательность и активность в обучении; 7принцип межпредметных связей; 8преемственности; 9прочности усвоения матла; 10проблемности. Сущность процесса обучения. Процесс обучения – это целенапр. науки и процесс обучения дидактич.
46622. Внеклассная и внешкольная работа по изобразительному искусству (кружок, конкурс рисунков, экскурсия, поисковая работа) 22.53 KB
  Работы и их классифик; 3особенти методики организации кружка конкурса рисунков эскурсии поисковой работы. 2К Основ формам внеклас и внешк работы относятя: кружок кл. Кружок по Изонаиболее распростр вид внеклас работы в школе. Организация работы кружка включает разработку содержания занятий с учетом склонностей интересов учся разного возраста.
46623. Эмиль Антуан Бурдель 22.67 KB
  С их подчас неистовой экспрессией Памятник павшим в Монтобане бронза 1893 1902 отмечены дробностью ритмов объёмов усложнённостью общего построения. отличаются единством конструктивности и динамики контрастностью света и тени грубоватоэнергичной обработкой утрированнокрупных плотных форм активностью пространственного построения Геракл стреляющий из лука 1909 Пенелопа 1909 12 Сафо 1924 25 все бронза. Роден бронза 1909; А. Франс бронза 1919 Б.
46624. Методика знакомства с архитектурой как искусством на уроках изобразительного искусства 22.78 KB
  Учебная мотивация – частный вид мотивации включенный в учебную деятельность и определяющий потребность учащегося в получении знаний. Выделяют такие типы мотивации связанной с результатами учения как: мотивация которая условно может быть названа отрицательной. Косвенно об учебной мотивации свидетельствует уровень реальной успешности учебной деятельности. Зная тип мотивации учитель может создать условия для подкрепления соответствующей положительной мотивации.
46626. Основные понятия терминов «Энергосбережение», «энергосберегающая политика государства», «энергоэффективность» 22.93 KB
  Энергоэффективность – это количественная характеристика показатель предполагающий максимальное использование способности энергии совершать работу. Понятие энергии. Энергетические ресурсы – это материальные объекты в которых сосредоточен тот или иной вид энергии пригодной к экономически обоснованной для практического использования на данном этапе развития науки и техники. Топливноэнергетический комплекс Республики Беларусь включает системы добычи транспорта хранения производства и распределения основных видов энергоносителей: природного...
46627. Издательские портфели 23 KB
  не по заказу издательства но которые могут быть приняты к изданию. Состоит из произведений находящихся на разных стадиях производственного процесса до сдачи тиража в книготорговую сеть или поступления его на склад издательства. Портфельный запас обеспечивает нормальную работу издательства и планомерный выпуск книг. Портфельный запас обеспечивающий нормальную работу издательства и планомерный выпуск книг нормативный портфельный запас определяется путем умножения среднего объема однодневного выпуска в целом по издательству или по разделам...