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

       }

   }

}

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

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


 

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

64429. Покращення діяльності підприємств автосервісу на основі оптимізації виробничих процесів 157.5 KB
  Необхідність філософського аналізу ціннісних установок особистості в освітньому процесі полягає не тільки в тому аби втілити до досліджень філософії новий аспект а й тому що такий аналіз освіти перебуває...
64430. ЗАБЕЗПЕЧЕННЯ КОНКУРЕНТОСПРОМОЖНОСТІ ПРОДУКЦІЇ АПК УКРАЇНИ НА ЗОВНІШНІХ РИНКАХ 303 KB
  В сучасних умовах посилення глобалізації світових господарських звязків питання забезпечення конкурентоспроможності продукції АПК у сфері зовнішньої торгівлі належить до пріоритетних завдань національного економічного розвитку.
64431. НАУКОВЕ ОБҐРУНТУВАННЯ МЕТОДОЛОГIÏ ФОРМУВАННЯ ТА КОНТРОЛЮ ЯКОСТI ДИСПЕРСНИХ СИСТЕМ ПРОДУКТIВ ПЕРЕРОБЛЕННЯ ПЛОДIВ ТА ОВОЧIВ 372 KB
  Окисленi форми речовин редокссистеми морквяного соку Вiдновленi форми речовин редокссистеми морквяного соку Окисленi форми речовин редокссистеми капустяного соку Вiдновленi форми речовин редокссистеми капустяного соку...
64432. ПРАВОВИЙ СТАТУС СУБ’ЄКТІВ АДМІНІСТРАТИВНОГО СУДОЧИНСТВА 134 KB
  Теорія та практика адміністративного судочинства надають особливого значення важливому елементу структури адміністративнопроцесуальних відносин субєктам які згідно із Законом мають статус учасників судового процесу.
64433. УДОСКОНАЛЕННЯ ТЕХНОЛОГІЇ МІКРОДУГОВОГО ОКСИДУВАННЯ СПЛАВІВ АЛЮМІНІЮ У ЛУЖНИХ СЕРЕДОВИЩАХ 549 KB
  Поширене застосування алюмінію і його сплавів як сучасних конструкційних матеріалів та носіїв для активних систем різноманітного призначення обумовлено особливостями їх фізикомеханічних та хімічних властивостей.
64434. СТАНОВЛЕННЯ БІПОЛЯРНОСТІ СВІТОВОГО ВАЛЮТНОГО РИНКУ ЯК ФАКТОР ВАЛЮТНОЇ ПОЛІТИКИ УКРАЇНИ 260 KB
  Зі створенням валютної системи в рамках Європейського Союзу та введенням в обіг спільної грошової одиниці в межах світової економіки виникає принципово нова система валютних відносин що базується на функціональній взаємодії двох основних...
64435. АВТОМАТИЗАЦІЯ СИНТЕЗУ СХЕМНИХ МАКРОМОДЕЛЕЙ КОМПОНЕНТІВ, ЩО ОПИСУЮТЬСЯ СИСТЕМАМИ ДИФЕРЕНЦІАЛЬНИХ РІВНЯНЬ 868 KB
  Для досягнення поставленої мети було необхідно розвязати такі задачі: проаналізувати існуючі методи та засоби моделювання систем з компонентами різної фізичної природи; розробити методи побудови схемних макромоделей компонентів що описуються системами диференціальних рівнянь різних типів...
64436. ФІНАНСОВЕ ЗАБЕЗПЕЧЕННЯ ДІЯЛЬНОСТІ ВИЩОГО НАВЧАЛЬНОГО ЗАКЛАДУ 322.5 KB
  Основою ефективної діяльності вищого навчального закладу що функціонує на ринку освітніх послуг є достатнє та стабільне фінансове забезпечення. Вирішення цієї проблеми на мікрорівні стає можливим за умов ефективного управління фінансовим...
64437. ОБҐРУНТУВАННЯ ПАРАМЕТРІВ РОБОЧИХ ОРГАНІВ МАШИН ДЛЯ ПОВЕРХНЕВОГО ВНЕСЕННЯ САПРОПЕЛІВ 264.5 KB
  Тому одним із актуальних завдань сільськогосподарського виробництва є покращення родючості ґрунтів за рахунок якісного поверхневого внесення сапропелів як органічних добрив що потребує обґрунтування конструктивних технологічних і кінематичних параметрів робочих органів...