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

       }

   }

}

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

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


 

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

73916. Економічна глобалізація 54.5 KB
  Ініціали інституціоналізацію про формування системи глобального регулювання яка буде наділеною відповідним обсягом повноважень та легітимністю. Другий шлях глобальне співробітництво за якого розв‘язання глобальних проблем буде виконуватися не шляхом нав‘язування окремими акторами підходів а шляхом конструктивного і втілюваного в життя діалогу всіх зацікавлених сил. Далі буде логічно виведено розмірковування і про інші проекти. Але зрозуміло що таким чином будуть зачіплятися інтереси якоїсь із національних держав світу адже така...
73917. Феномен глобалізації та процеси глобальних політичних змін: основні концепції та методологічні підходи 44 KB
  Блінова частина якої до якої і пишеться коментар має назву Феномен глобалізації та процеси глобальних політичних змін: основні концепції та методологічні підходи. Фактично прочитавши більшість джерел до семінару №2 у мене склалися деякі погляди на розглядувані речі звісно пов‘язані із процесом глобалізації чи то антиглобалізації які вмістити до якогось конкретного джерела виявилося дуже складним. З одного боку наявність численної кількості визначень може йти на користь вивченню глобалізації адже ця численність є прямим фактом...
73918. Кінець світу, який ми знаємо 98 KB
  Вотерса Кінець світу який ми знаємо. Від цього залежить і мислення людей яке радше ґрунтуватиметься на припущенні гетерогенності світу сильної несхожості усіх його частин а не на припущенні про одну світову сім‘ю. Останнє матиме вплив і на дії людей в усіх кінцях світу які ряснітимуть розмаїтістю. Країни обиралися за таким критеріями: Британія як дуже впливовий член ЄС і як одна з передових країн світу; Україна порівняння світової ситуації із справа в нашому суспільстві; США одна з провідних і найвпливовіших країн світу; Індія ...
73920. Підприємець – не обов’язково лідер 196.5 KB
  Вже минуло більш як два з половиною століття з тих часів, як економісти та соціологи почали систематично розглядати діяльність підприємців, але й досі не існує єдиного загальноприйнятого визначення підприємця. Тож чи дивно, що науковці не накреслили і загальноприйнятого образу підприємця.
73921. Гроші – це лише символ, реальна вартість полягає у виробленому товарі 60 KB
  Вартість грошей як товару. Відносна вартість трансакційних грошей. Вартість грошей що нагромаджуються. Подруге критично проанілізувати в чому полягає реальна вартість грошей і якщо у виробленому товарі то чому саме так.
73923. The critique of modern democracy. Alternatives: participatory approach 44 KB
  In modern world we can often here such an expression as “democratical processes”. In general it is used with undoubted positive illumination, promoted like panacea in the field of political organization of the society.
73924. Вартість та оптимізація структури капіталу 111.5 KB
  Капітал є однією з фундаментальних економічних категорій, сутність якої наукова думка досліджує протягом багатьох століть. Серед основних харектеристик, які формують економічну сутність капіталу, слід виділити...