51220

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

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

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

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

Русский

2014-02-07

287.94 KB

8 чел.

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

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

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

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

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

       }

   }

}

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

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


 

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

11107. Повышение устойчивости работы объектов на ЧС 42.56 KB
  Повышение устойчивости работы объектов на ЧС ПРЕДУПРЕЖДЕНИЕ ЧРЕЗВЫЧАЙНЫХ СИТУАЦИЙ И ПОВЫШЕНИЕ УСТОЙЧИВОСТИ ФУНКЦИОНИРОВАНИЯ ОРГАНИЗАЦИЙ Введение Как гласит Федеральный закон О защите населения и территорий от чрезвычайных ситуаций природного и техног...
11108. Локализация и ликвидация последствий ЧС 22.07 KB
  Локализация и ликвидация последствий ЧС Ликвидация последствий ЧС. Ликвидация ЧС ситуации осуществляется силами и средствами предприятий учреждений и организаций независимо от их организационно правовой формы органов местного самоуправления органов исполнител...
11109. Дознание в уголовном процессе 44.5 KB
  РЕФЕРАТ по уголовному процессу на тему: Дознание в уголовном процессе Дознание один из видов предварительного расследования о...
11110. Представительство. Доверенность 158 KB
  Курсовая работа по гражданскому праву На тему: Представительство. Доверенность Оглавление [1] Глава 1 понятие значение института представительства...
11111. Рентные договоры: понятие, правовая природа, виды 176 KB
  История, правовая природа и понятие рентных договоров. Правовая природа рентных договоров. Понятие, предмет и форма заключения договора ренты. Противоречивость конструкции договора ренты. Исполнение обязанности по передаче имущества
11112. Граждане как субъекты гражданского права 184 KB
  По дисциплине: Гражданское право На тему: Граждане как субъекты гражданского права Оглавление [1] По дисциплине: Гражданское право [2] Оглавление [3] Глава 1 Понятие...
11113. Ответственность за нарушение налогового законодательства. Виды налоговых правонарушений, влекущих ответственность 217 KB
  Меняются ставки налогов, объекты налогообложения, отменяются одни льготы и вводятся новые, уточняются источники уплаты налогов. Но проблема правонарушений в области уплаты налогов и сборов всегда останется актуальной. С этой проблемой не справились даже развитые цивилизованные государства.
11114. Сроки в гражданском праве 166 KB
  Курсовая работа по дисциплине: гражданское право тема: Сроки в гражданском праве Введение. Актуальность избранной темы обуславливается тем что своевременное осуществление и защита нарушенных прав способствует достижению той цели которую субъекты пресл...
11115. Прекращение жилищных правоотношений. Выселение 91.5 KB
  РЕФЕРАТ по дисциплине: жилищное право на тему: Прекращение жилищных правоотношений. Выселение Введение. Конституция Российской Федерации ст. 40 провозгласила в числе основных прав и свобод человека и гражданина право на жилище....