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

       }

   }

}

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

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


 

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

856. Себестоимость промышленной продукции 186.5 KB
  Экономическое значение и сущность себестоимости. Классификация затрат, образующих себестоимость. Затраты на топливо и энергию всех видов, приобретаемых со стороны, расходуемых как на технологические цели, так и на обслуживающие производства.
857. Оптимизация, трансформации сельскохозяйственных угодий в СПК Восток 173.5 KB
  Математическое моделирование в сельском хозяйстве и землеустройстве. Переменные величины, ограничения, целевая функция, структурная запись модели. Разработка экономико-математической модели.
858. Внешняя политика США в 1953-1975 годах 198 KB
  Основные черты внешнеполитической стратегии США 1953–1975 годах. Крупнейшие внешнеполитические инциденты 1953–1975 годах. Внешняя политика США в 1953-1975 годах.
859. Основы организации бизнеса 162.5 KB
  Развитие в России всех видов собственности и видов деятельности, современных предприятий и представительств зарубежных стран. Формы собственности и организация управления. Адаптация к рынку. Тенденции организационных изменений при переходе к рынку. Программы государственной поддержки малого бизнеса.
860. Интеграция организаций и ее сфера. Понятие венчурных фондов и организаций 176.5 KB
  Разновидности трестов. Финансово-промышленные группы. Их классификация. Формы финансово-промышленных групп. Преимущества их пред другими субъектами рынка. Направления деятельности ФПГ. Понятие венчурных фондов и организаций. Транснациональные кампании. Их типы и основные характеристики. Международные совместные предприятия.
861. Основы профессиональных информационных технологий 158 KB
  Рассмотреть основные понятия, термины и определения информатики и информационных технологий. Информация и ее свойства. Информационные технологии в профессиональной деятельности. Цель и задачи изучения учебного курса Информатика и информационные технологии в профессиональной деятельности.
862. Детские церебральные параличи 164 KB
  Заболевание центральной нервной системы. Глубокая недоношенность и гидроцефалия. Травматическое повреждение головного и спинного мозга. Атонически-астатическая форма. Реабилитационные мероприятия при ДЦП. Клинико-педагогическая характеристика речевых нарушений при ДЦП.
863. Самоорганизация в живой и неживой природе 136.5 KB
  Порядок и беспорядок в природе. Особенности эволюционных процессов. Синергетический подход в естествознании. Общие свойства систем, способных к самоорганизации. Качественное описание процесса самоорганизации. Синергетика и самоорганизация.
864. Виды производства молока 33.5 KB
  Промышленность выпускает большой разнообразный ассортимент молочных продуктов. Блочное молоко долго хранится и применяется для изготовления шоколада и шоколадных конфет.