14761

Увеличение и уменьшение цифровых изображений

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

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

Цель работы: Изучить методы увеличения и уменьшения цифровых изображений и применить полученные знания на практике. Задание для второго варианта: написать программу способную производить увеличение/уменьшение исходного изображения в нецелое число раз методом билин...

Русский

2013-06-09

263.36 KB

9 чел.

Цель работы: Изучить методы увеличения и уменьшения цифровых изображений и применить полученные знания на практике.

Задание для второго варианта: написать программу способную производить увеличение/уменьшение исходного изображения в нецелое число раз методом билинейной интерполяции. С помощью программы уменьшить исходное изображение в 1,2; 3; 7; 21 раз. Полученные изображения затем восстановить до исходного размера и сравнить результаты с исходным изображением.

Код программы: 

using System;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Windows.Forms;

namespace ZOS_LAB1_UNIVER

{

   public partial class Form1 : Form

   {

       public double koef = 1;

       public int w1, h1,w_temp,h_temp;

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           openFileDialog1.Filter = "BMP Picture |*.bmp";

           openFileDialog1.ShowDialog();

           pictureBox1.Hide();

           pictureBox2.Hide();

           

           pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);

           pictureBox1.Refresh();

           Image img2 = new Bitmap(openFileDialog1.FileName);

           pictureBox2.Image = img2;

           

           w_temp = img2.Width;

           h_temp = img2.Height;

       }

       private void pictureBox1_Paint(object sender, PaintEventArgs e)

       {

           Image img = new Bitmap(openFileDialog1.FileName);

           int width = img.Width;

           int height = img.Height;

           

           

           e.Graphics.InterpolationMode = InterpolationMode.Bilinear;

           e.Graphics.DrawImage(img, new Rectangle(0, 0, w1, h1), 0, 0, width, height, GraphicsUnit.Pixel);

           

       }

       private void Form1_Load(object sender, EventArgs e)

       {

       }

       private void button2_Click(object sender, EventArgs e)

       {

           pictureBox2.Show();

           pictureBox1.Hide();  

          

       }

       private void button3_Click(object sender, EventArgs e)

       {

           pictureBox1.Show();

           pictureBox2.Hide();

          

       }

#region koef

       private void button4_Click(object sender, EventArgs e)

       {

           koef = 1.2;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

       }

       private void button5_Click(object sender, EventArgs e)

       {

           koef = 3;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

          

       }

       private void button6_Click(object sender, EventArgs e)

       {

           koef = 7;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

           

       }

       private void button7_Click(object sender, EventArgs e)

       {

           koef = 21;

           w1 = w_temp * Convert.ToInt16(koef);

           h1 = h_temp * Convert.ToInt16(koef);

         

       }

       private void button8_Click(object sender, EventArgs e)

       {

           koef = 1.2;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button9_Click(object sender, EventArgs e)

       {

           koef = 3;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button10_Click(object sender, EventArgs e)

       {

           koef = 7;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

       private void button11_Click(object sender, EventArgs e)

       {

           koef = 21;

           w1 = w_temp / Convert.ToInt16(koef);

           h1 = h_temp / Convert.ToInt16(koef);

       }

#endregion

     }

}

Скриншоты работы:

Увеличение:


Уменьшение:

Вывод: в ходе работы изучили методы увеличения и уменьшения цветных изображений.


 

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

17785. Применение Excel для обработки данных 48 KB
  Лабораторная работа № 1 Применение Excel для обработки данных Зависимость представлена квадратической параболой .1 Самостоятельно сформировать тестовый пример задав коэффициенты для уравнения 1 в виде произвольных констант. Заполнить след...
17786. Координатна вісь, або одновимірний простір 2.03 MB
  ЛЕКЦІЯ 1 Координатна вісь або одновимірний простір Візьмемо пряму лінію і задамо на ній додатний напрям звичайно його показують стрілкою. Тоді протилежний напрям буде від'ємним. Напрямлена пряма називається віссю. Якщо на осі вибрати довільну точку обліку О і масшт...
17787. Визначник і мінори матриці 78.8 KB
  Визначник і мінори матриці Розглянемо квадратну матрицю А = Квадратній матриц і можна поставити у відповідність певне число яке називається детермінантом або визначником матриці. Детермінант матриці позначається так: det A= Детермінант так само як і матриці має ...
17788. Символы и строки в ANSI C 531.4 KB
  Целью данной лабораторной работы является изучение на практике строк языка ANSI C, операции над строками, функций стандартной библиотеки по работе со строками.
17789. Лінійний простір 5.92 MB
  Лекція 2. Лінійний простір Векторний простір називається лінійним якщо у ньому визначено операції над векторами додавання і множення на число. Проте лінійний простір може бути утворений обєктами будьякої природи. Нехай Е дана множина і x y z її елементи; К мно
17790. Скалярний добуток двох векторів 332.87 KB
  Лекція 4. Скалярний добуток двох векторів Добуток двох векторів може бути як числом так і вектором. Для наочних просторів скалярним добутком двох векторів і називається число що дорівнює добутку їхніх довжин на косинус кута між ними: У nвимірному просторі ск
17791. Векторний добуток двох векторів 2.87 MB
  Лекція 5. Векторний добуток двох векторів Векторним добутком двох векторів і називається вектор такий що: а де; 2.60 б і ; в якщо то вектори утворюють праву трійку. Упорядкована трійка некомпланарних векторів називається правою якщо з кін
17792. СИСТЕМИ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ 71.09 KB
  Лекція 6. СИСТЕМИ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ Лінійні алгебраїчні рівняння. Теорема Кронекера Капеллі Нехай задано систему лінійних рівнянь в якій коефіцієнти і вільні члени відомі а невідомі. Розвязати систему це означає знайти впорядкован
17793. Дробово-лінійна функція і її геометричний зміст 59.31 KB
  Лекція 8. Дробоволінійна функція і її геометричний зміст. Дробоволінійною називається функція Якщо с = 0 і d 0 то дробоволінійна функція називається цілою лінійною функцією. При adbc= 0 дробоволінійна функція є сталою величиною. Доведемо що при с0 і аd bс0 графіком др...