14761

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

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

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

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

Русский

2013-06-09

263.36 KB

8 чел.

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

Задание для второго варианта: написать программу способную производить увеличение/уменьшение исходного изображения в нецелое число раз методом билинейной интерполяции. С помощью программы уменьшить исходное изображение в 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

     }

}

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

Увеличение:


Уменьшение:

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


 

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

74181. Метод комплексного анализа 2.51 KB
  Метод комплексного анализа. В чем его суть Метод комплексного анализа – один из методов определения относительного геологического возраста пород. Метод комплексного анализа заключается в распределении всех окаменелостей в разрезах установлении смены комплексов и прослеживании выделенных комплексов от одного комплекса другому. Данный метод учитывает результаты изучения всех окаменелостей найденных в слое а не отдельных иногда случайно выбранных видов и родов.
74182. НОВЕЙШИЕ ВЕРТИКАЛЬНЫЕ ТЕКТОНИЧЕСКИЕ ДВИЖЕНИЯ И МЕТОДЫ ИХ ИЗУЧЕНИЯ 13.37 KB
  Новейшие тектонические движения происходили с конца палеогена до четвертичного периода. Эти движения создали все формы мега и макрорельефа существующие сейчас в пределах материков и океанов поэтому их изучают в основном геоморфологическими а также биогеографическими методами.
74183. Радиогеохронологические методы 13.6 KB
  Метод определения абсолютного возраста изотопный радиологический метод – метод определения истинной продолжительности отдельных геохронологических единиц в тысячах и миллионах лет. В отличие от методов относительного возраста методы абсолютного возраста дают возможность определить возраст магматических метаморфических и осадочных горных пород...
74186. Метод мощностей (понятие, назначение, применение) 13.99 KB
  Метод мощностей понятие назначение применение Данный метод применяется для изучения древних в меньшей степени новейших нисходящих вертикальных движений. При анализе мощностей необходимо учитывать следующее: Анализ мощностей основывается на изучении таких...
74187. Платформы (понятие, строение: фундамент, осадочный чехол) 11.14 KB
  Платформы понятие строение: фундамент осадочный чехол Платформа – это обширная тектоническая структура обладающая сравнительно малой подвижностью. Платформы образуется на месте складчатой области в результате разрушения и снижения гор...
74188. Object-oriented programming languages and tools 37 KB
  They were working on simultions tht del with exploding ships nd relized they could group the ships into different ctegories. The Smlltlk tem ws inspired by the Simul 67 project but they designed Smlltlk so tht it would be dynmic. The objects could be chnged creted or deleted nd this ws different from the sttic systems tht were commonly used. It is this feture tht llowed Smlltlk to surpss both Simul 67 nd the nlog progrmming systems.
74189. Object-oriented programming languages and tools. Evolution of Smalltalk 41 KB
  The lnguge ws first generlly relesed s Smlltlk80. Smlltlklike lnguges re in continuing ctive development nd hve gthered loyl communities of users round them. NSI Smlltlk ws rtified in 1998 nd represents the stndrd version of Smlltlk.