51220

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

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

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

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

Русский

2014-02-07

287.94 KB

6 чел.

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

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

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

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

Лабораторная работа № 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();

       }

   }

}

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

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


 

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

82186. Государство. Конспект урока по обществознанию (9 класс) 28.08 KB
  План урока: Повторение домашнего задания 6 минут Вводно-мотивационный этап 3 минуты Этап изучения нового материала: государство как сложная политическая система 10 минут Динамическая пауза урока – 2 минута Этап изучения нового материала: государство как основной политический институт власти 12 минут...
82187. Как природа залечивает раны 703.5 KB
  На уроке рассматриваются вопросы: как природа приспособилась восстанавливать вызванные эрозией и другими внешними факторами нарушения экосистем; смена экосистем; правила поведения в природе. На уроке решаются задачи: общеобразовательные: расширение знаний о взаимосвязях в природе, формирование...
82188. Професії. Повторення вивчених лексичних одиниць 196 KB
  Мета: повторити вивчені лексичні одиниці з теми Професії; тренувати учнів у вживанні лексичних одиниць та структур вчити ставити запитання та давати коротку відповідь на нього; розвивати навички усного та писемного мовлення; розвивати фонематичний слух та правильну артикуляцію звуків...
82189. Проектна діяльність. Our Holidays 730 KB
  Мета. Навчати учнів основам соціологічного опитування, навчати використовувати вивчені англійські лексичні одиниці в конкретній ситуації мовлення, активізувати в мовленні структуру «I like doing something», тренувати використання часів Present Simple і Past Simple, розвивати навики проектної діяльності...
82190. Містечко дитячих мрій 41 KB
  Так розпочалося дитинство мого дідуся. Взимку коли за вікном хурделиця і сніг ласкаво проситься до хати в мого дідуся оживають спогади про далеке минуле. Але слухаючи сповідь мого дідуся я поринаю в ті далек незрозумілі для мене часи сповнені дитячого смутку та горя. Так продовжувалося дитинство мого дідуся.
82191. Ми роду козацького діти, землі української цвіт 4.39 MB
  Розширити знання учнів про славне минуле українського народу, ознайоми ти з одним із відомих гетьманів України І.Мазепою, боротьбою українсько го народу за волю, незалежність, віру і щастя, виховувати любов до Украї ни, інтерес до історичного минулого, почуття національної свідомості та громадянської активності.
82192. Алкоголь — ворог №1 24.5 KB
  Ворога потрібно знати в обличчя: а вплив алкоголю на стравохід; б дія алкоголю на шлунок; в вплив алкоголю на кишківник; г вплив алкоголю на печінку; д вплив алкоголю на кров; е вплив алкоголю на серце; є вплив алкоголю на підшлункову залозу; ж вплив алкоголю на мозок.
82193. Сучасні українці — жертви алкогольної реклами 2.99 MB
  Текст вірша: Всі ті, хто за тверезу Україну Підняти хочуть Україну із руїни. Що не дає тобі цвісти, Вкраїно-ненько? Ой, страшний є у мене, лютий вороженько. Найбільша цінність наша — хто? Це наші діти. Їх, молодих, найбільше хоче він споїти. Ой, як голівоньку їм нелюди морочать: Позбавить розуму всю нашу молодь хочуть!
82194. Олимпийский урок 53.5 KB
  Познакомить с историей Олимпийских игр. Чего вы ожидаете от предстоящих зимних Олимпийских игр в России К нам приедет много гостей построят спортивные комплексы. Последние зимние Олимпийские игры прошли в Италии в городе Турине в 2006 г. XXII летние Олимпийские игры состоялись в Москве в1980 г.