51220

Выделение контурных признаков изображения

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

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

Цель работы: Изучить методы выделения контурных признаков изображения и применить полученные знания на практике. Задание: Cоставить программу, выполняющую выделение контурных признаков изображения.

Русский

2014-02-07

287.94 KB

9 чел.

Министерство образования Республики Беларусь

Учреждение образования

Брестский государственный технический университет

Кафедра  ЭВМ и С

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

«Выделение контурных признаков изображения»

Выполнил:

студент гр. Э-41 ФЭИС

Якубчик А.Н.

Проверил:

Кузьмицкий Н.Н.

Брест 2013

Цель работы: Изучить методы выделения контурных признаков изображения и применить полученные знания на практике.

Задание: Cоставить программу, выполняющую выделение контурных признаков изображения. 

  1.  Необходимые характеристики:
  2.  изображение хранится во внешнем файле;
  3.  программа должна выводить исходное и результирующее изображения;
  4.  возможность выбора уровня порогового ограничения;
  5.  перед выделением контура происходит фильтрация изображения любым фильтром.
  6.  возможность изменения порога при роботе с контурным препаратом.

Тип фильтра: 

  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 COS4

{

   public partial class Form1 : Form

   {

       Bitmap image1 = null;

       Bitmap image_2 = null;

       int width = 0;

       int height = 0;

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           openFileDialog1.ShowDialog();

           Bitmap image = new Bitmap(openFileDialog1.FileName);

           width = image.Width;

           height = image.Height;

           image1 = image;

           pictureBox1.Image = image;

           pictureBox1.Show();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           Bitmap image2 = new Bitmap(width, height);

           pictureBox1.Image = image2;

           image_2 = image2;

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

           {

               for (int j = 0; j < width; j++)

               {

                   Color c = image1.GetPixel(j, i);

                   Double RED = Convert.ToDouble(c.R * 0.2989);

                   Double GREEN = Convert.ToDouble(c.G * 0.587);

                   Double BLUE = Convert.ToDouble(c.B * 0.114);

                   int GREY = Convert.ToInt32(RED + GREEN + BLUE);

                   image2.SetPixel(j, i, Color.FromArgb(c.R, c.G, c.B));

                   image2.SetPixel(j,i,Color.FromArgb(GREY,GREY,GREY));

               }

           }

           pictureBox1.Refresh();

       }

       private void button3_Click(object sender, EventArgs e)

       {

           string input = textBox1.Text;

           double k = Convert.ToDouble(input);

           Bitmap image3 = new Bitmap(width, height);

           pictureBox2.Image = image3;

           double G = 0;

           int[,] maska = new int[3, 3];

           for (int i = 1; i < height - 1; i++)

           {

               for (int j = 1; j < width - 1; j++)

               {

                   for (int county = 0; county < 3; county++)

                   {

                       for (int countx = 0; countx < 3; countx++)

                       {

                           maska[county, countx] = image_2.GetPixel(j + countx - 1, i + county - 1).R;

                       }

                   }

                   if (radioButton1.Checked == true)

                   {

                       G = (maska[0, 0] + maska[0, 1] + maska[0, 2] + maska[1, 0] - 2 * maska[1, 1] + maska[1, 2] - maska[2, 0] - maska[2, 1] - maska[2, 2]);

                   }

                   if (radioButton2.Checked == true)

                   {

                       G = (maska[2, 0] + maska[2, 1] + maska[2, 2] + maska[1, 0] - 2 * maska[1, 1] + maska[1, 2] - maska[0, 0] - maska[0, 1] - maska[0, 2]);

                   }

                   if (radioButton3.Checked == true)

                   {

                       G = (maska[2, 0] + maska[2, 1] - maska[2, 2] + maska[1, 0] - 2 * maska[1, 1] - maska[1, 2] + maska[0, 0] + maska[0, 1] - maska[0, 2]);

                   }

                   if (radioButton4.Checked == true)

                   {

                       G = (maska[2, 1] - maska[2, 0] + maska[2, 2] - maska[1, 0] - 2 * maska[1, 1] + maska[1, 2] - maska[0, 0] + maska[0, 1] + maska[0, 2]);

                   }

                   if (radioButton5.Checked == true)

                   {

                       G = (maska[0, 0] + maska[0, 1] + maska[0, 2] + maska[1, 0] - 2 * maska[1, 1] - maska[1, 2] + maska[2, 0] - maska[2, 1] - maska[2, 2]);

                   }

                   if (radioButton6.Checked == true)

                   {

                       G = (maska[0, 0] + maska[0, 1] + maska[0, 2] - maska[1, 0] - 2 * maska[1, 1] + maska[1, 2] - maska[2, 0] - maska[2, 1] + maska[2, 2]);

                   }

                   if (radioButton7.Checked == true)

                   {

                       G = (maska[2, 0] + maska[2, 1] + maska[2, 2] + maska[1, 0] - 2 * maska[1, 1] - maska[1, 2] + maska[0, 0] - maska[0, 1] - maska[0, 2]);

                   }

                   if (radioButton8.Checked == true)

                   {

                       G = (maska[2, 1] + maska[2, 0] + maska[2, 2] - maska[1, 0] - 2 * maska[1, 1] + maska[1, 2] - maska[0, 0] - maska[0, 1] + maska[0, 2]);

                   }

                   if (G > k)

                   {

                       image3.SetPixel(j, i, Color.White);

                   }

                   else

                   {

                       image3.SetPixel(j,i,Color.Black);

                   }

               }

           }

           pictureBox2.Show();

       }

   }

}

Пример работы программы:

Вывод: в ходе работы изучили методы выделения контурных признаков изображения.


 

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

63223. Галицько-Волинська держава за наступників Данила Романовича 85.5 KB
  Мета: характеризувати соціально-економічне та політичне становище Галицько-Волинської держави за наступників Данила Галицького; зясувати, яким було становище Галицько-Волинської держави за наступників Данила Романовича...
63224. Права неповнолітніх у трудових відносинах 25.4 KB
  Мета: ознайомити учнів з трудовими правами неповнолітніх; навчити складати резюме заяву про прийом і звільнення з роботи; навчити аналізувати та застосовувати на практиці законодавство про працю неповнолітніх...
63225. Урок узагальнення з теми «Давні Індія та Китай» 23.61 KB
  Мета: систематизувати та узагальнити знання учнів із теми; простежити взаємозвязок між господарським і духовним розвитком Давніх Індії та Китаю; розширити світогляд школярів; показати внесок культури Давніх Індії та Китаю в розвиток людської цивілізації.
63227. Адміністративне право. Адміністративні правовідносини 21.79 KB
  Сформувати поняття про відносини регульовані адміністративним правом; охарактеризувати напрямки та методи державного управління; розвивати вміння працювати з нормативноправовими документами розвязувати ситуації юридичного характеру.
63229. Адміністративне правопорушення. Адміністративна відповідальність 27.16 KB
  Мета: розкрити зміст понять адміністративне правопорушення адміністративна відповідальність; навчити розрізняти адміністративний проступок і злочин; визначити особливості адміністративної відповідальності неповнолітніх...
63230. Кримінальна відповідальність 21.88 KB
  Мета: ознайомити учнів з поняттями кримінальна відповідальність покарання; розкрити особливості кримінальної відповідальності неповнолітніх; розвивати вміння працювати з нормативноправовими документами...
63231. Правоохоронні органи України. Права неповнолітньої особи при затриманні, арешті, допиті 29.43 KB
  Правовий статус міліції. Правовий статус міліції Міліція це система державних органів виконавчої влади що покликані захищати життя здоровя права і свободи громадян власність природне середовище та інтереси...