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

       }

   }

}

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

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


 

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

8223. Педагогические возможности общения и различных видов деятельности 18.19 KB
  Педагогические возможности общения и различных видов деятельности. ПЕДАГОГИЧЕСКОЕ ОБЩЕНИЕ - общение между педагогом и учащимся, в ходе которого педагог решает учебные, воспитательные и личностно- развивающиеся задачи психологическое пространство, в...
8224. Основные направления развития и модернизации образования в России на современном этапе 15.77 KB
  Основные направления развития и модернизации образования в России на современном этапе. Необходимость:1) диктуется устаревшим и перегруженным содержанием школьного образования. 2) Не отвечает требованиям времени. 3) Неготовность ученика найти для се...
8225. Педагогический процесс: сущность, закономерности и принципы 24.99 KB
  Педагогический процесс: сущность, закономерности и принципы Процесс обучения - это движение по пути познания, от незнания к знанию, от неполного и неточного знания к более полному и точному. В процессе обучения накапливаются знания, формируются...
8226. Характеристика современного процесса обучения: сущность, противоречия, закономерности 15.66 KB
  Характеристика современного процесса обучения: сущность, противоречия, закономерности. Обучение - это совокупность последовательных и взаимосвязанных действий учителя и учащегося, направленных на сознательное и прочное усвоение системы знаний, ...
8227. Характеристика принципов обучения, их реализация на уроках 15.43 KB
  Характеристика принципов обучения, их реализация на уроках. Обучение - это общение, в процессе которого происходит усвоение общественно-исторического опыта, освоение деятельностью, лежащей в основе формирования личности. Принцип - исходное...
8228. Государственный образовательный стандарт: базовая, вариативная, дополнительная составляющие 17.47 KB
  Государственный образовательный стандарт: базовая, вариативная, дополнительная составляющие Содержание образования отвечает на вопрос чему учить. это знание основ наук, умение применять их на практике, навыки, опыт творческой деятельности...
8229. Содержание образования в современной школе 19.16 KB
  Содержание образования в современной школе Обучение - процесс социально обусловленный, выраженный необходимостью воспроизводства человека как субъекта общественных отношений. Отсюда важнейшая социальная функция обучения заключается в формирован...
8230. Характеристика современного урока 16.57 KB
  Характеристика современного урока. Современный урок это неотъемлемая часть всей жизнедеятельности школьников, так как именно на уроке ученик больше всего познает, на уроке происходит его воспитание, развитие, раскрывается его ...
8231. Межпредметные связи в обучении, значение, виды, пути осуществления на уроках(на примере уроков географии) 15.65 KB
  Межпредметные связи в обучении, значение, виды, пути осуществления на уроках(на примере уроков географии) Межпредметные связи согласованное изучение разных учебных предметов. Они позволяют отразить в школьном обучении процесс интеграции раз...