14757

МАСШТАБИРОВАНИЕ ИЗОБРАЖЕНИЙ

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

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

Лабораторная лабота №2 Масштабирование изображений Цель: произвести уменьшение и увеличение изображения методами ближайшего соседа и билинейной интерполяцией. Текст программы: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; ...

Русский

2013-06-09

683.18 KB

10 чел.

Лабораторная лабота №2

"Масштабирование изображений"

Цель: произвести уменьшение и увеличение изображения методами ближайшего соседа и билинейной интерполяцией.

Текст программы:

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;

using System.IO;

namespace mashtabirovanie

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       public byte[] ar;

       private void button1_Click(object sender, EventArgs e)

       {

           Zoom(2, true);   //увеличить

       }

       private void button2_Click(object sender, EventArgs e)

       {

           Zoom(2, false); // уменьшить

       }

       private void Zoom(double d, bool Zoom)

       {

           d = (Zoom == true ? d : (1 / d));

           Bitmap ZoomImg = new Bitmap((int)(pictureBox1.Image.Width * d),

               (int)(pictureBox1.Image.Height * d)); //полученный битмап

           Bitmap tmp = new Bitmap(pictureBox1.Image);

           if (!checkBox1.Checked)

           {

               progressBar1.Value = 0;

               progressBar1.Maximum = ZoomImg.Height + 1;

               for (int i = 0; i < ZoomImg.Height; i++)

               {

                   for (int j = 0; j < ZoomImg.Width; j++)

                   {

                       ZoomImg.SetPixel(j, i, tmp.GetPixel((int)(j / d), (int)(i / d)));

                   }

                   progressBar1.Value++;

                                  }

           }

           else

           {

               double nX = (double)tmp.Width / (double)ZoomImg.Width;

               double nY = (double)tmp.Height / (double)ZoomImg.Height;

               double fraction_x, fraction_y, one_minus_x, one_minus_y;

               int ceil_x, ceil_y, floor_x, floor_y;

               Color c1 = new Color();

               Color c2 = new Color();

               Color c3 = new Color();

               Color c4 = new Color();

               byte red, green, blue;

               byte b1, b2;

               progressBar1.Value = 0;

               progressBar1.Maximum = ZoomImg.Width + 1;

               for (int x = 0; x < ZoomImg.Width; ++x)

               {

                   for (int y = 0; y < ZoomImg.Height; ++y)

                   {

                      

                       floor_x = (int)Math.Floor(x * nX);

                       floor_y = (int)Math.Floor(y * nY);

                       ceil_x = floor_x + 1;

                       if (ceil_x >= tmp.Width) ceil_x = floor_x;

                       ceil_y = floor_y + 1;

                       if (ceil_y >= tmp.Height) ceil_y = floor_y;

                       fraction_x = x * nX - floor_x;

                       fraction_y = y * nY - floor_y;

                       one_minus_x = 1.0 - fraction_x;

                       one_minus_y = 1.0 - fraction_y;

                       c1 = tmp.GetPixel(floor_x, floor_y);

                       c2 = tmp.GetPixel(ceil_x, floor_y);

                       c3 = tmp.GetPixel(floor_x, ceil_y);

                       c4 = tmp.GetPixel(ceil_x, ceil_y);

                       // Blue

                       b1 = (byte)(one_minus_x * c1.B + fraction_x * c2.B);

                       b2 = (byte)(one_minus_x * c3.B + fraction_x * c4.B);

                       blue = (byte)(one_minus_y * (double)(b1) + fraction_y * (double)(b2));

                       // Green

                       b1 = (byte)(one_minus_x * c1.G + fraction_x * c2.G);

                       b2 = (byte)(one_minus_x * c3.G + fraction_x * c4.G);

                       green = (byte)(one_minus_y * (double)(b1) + fraction_y * (double)(b2));

                       // Red

                       b1 = (byte)(one_minus_x * c1.R + fraction_x * c2.R);

                       b2 = (byte)(one_minus_x * c3.R + fraction_x * c4.R);

                       red = (byte)(one_minus_y * (double)(b1) + fraction_y * (double)(b2));

                       ZoomImg.SetPixel(x, y, System.Drawing.Color.FromArgb(255, red, green, blue));

                   }

                   progressBar1.Value++;

                   Application.DoEvents();

               }

           }

           pictureBox1.Width = ZoomImg.Width;

           pictureBox1.Height = ZoomImg.Height;

           pictureBox1.Image = ZoomImg;

       }

       private void button3_Click(object sender, EventArgs e)

       {

           OpenFileDialog open_dialog = new OpenFileDialog();

           if (open_dialog.ShowDialog() == DialogResult.OK)

           {

               Bitmap tek_bmp = (Bitmap)Image.FromFile(open_dialog.FileName);

               pictureBox1.Image = tek_bmp;

           }

       }

   }

Результаты выполнения работы:

Увеличение методом ближайшего соседа:

Уменьшение методом ближайшего соседа:

Билинейная интерполяция:

Вывод: провели масштабирование изображений различными методами.


 

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

18152. Интегральные оптические схемы (ИОС) первого уровня интеграции 220.84 KB
  Лекция 19. Интегральные оптические схемы ИОС первого уровня интеграции К этому классу относятся ИОС способные выполнять оптические магнитооптические электрооптические и некоторые другие функции. Конструктивно ИОС состоят из нескольких структурных элементов.
18153. Интегральные оптические системы (ИОС) второго уровня интеграции 290.6 KB
  Лекция 20. Интегральные оптические системы ИОС второго уровня интеграции Такие схемы являются совокупностью двух или более ИОС первого уровня интеграции. Они как правило представляют собой трехмерное волноводное оптическое образование в единой оптической монолит
18154. Подготовка световодных систем к контролю 187.22 KB
  Лекция 21. Подготовка световодных систем к контролю. Контроль геометрических параметров. В световодных системах необходимо контролировать следующие параметры: геометрические параметры: средний диаметр оболочки и сердцевины световода; некоаксиальность...
18155. Метод контроля затухания и широкополосности 97.85 KB
  Лекция 22. Метод контроля затухания и широкополосности. Контроль затуханий осуществляется с использованием следующих методов: двухточечного; замещения; обратного релеевского рассеяния во временной области. Двухточечный метод реализуется по следующ...
18156. ЕКОНОМІЧНЕ СТИМУЛЮВАННЯ РАЦІОНАЛЬНОГО ВИКОРИСТАННЯ ТА ОХОРОНИ ЗЕМЕЛЬ 26.66 KB
  Лекція 18 ЕКОНОМІЧНЕ СТИМУЛЮВАННЯ РАЦІОНАЛЬНОГО ВИКОРИСТАННЯ ТА ОХОРОНИ ЗЕМЕЛЬ План: Надання податкових та кредитних пільг Виділення коштів бюджету для відновлення попереднього стану земель Звільнення від плати за земельні ділянки у стадії сільськогос...
18157. ВИДИ ФІНАНСОВИХ ПОТОКІВ У СФЕРІ ЗЕМЕЛЬНИХ ВІДНОСИН 26.49 KB
  Лекція 19 ВИДИ ФІНАНСОВИХ ПОТОКІВ У СФЕРІ ЗЕМЕЛЬНИХ ВІДНОСИН План: Відшкодування втрат сільськогосподарського та лісогосподарського виробництва Платні управлінські адміністративні послуги у сфері земельних відносин Фінансування заходів з проведення з
18158. ПРАВОВА ОХОРОНА ЗЕМЕЛЬ 30.68 KB
  Лекція 20 ПРАВОВА ОХОРОНА ЗЕМЕЛЬ План: Поняття правової охорони земель Зміст правової охорони земель. Захист сільськогосподарських та лісогосподарських угідь від необгрунтованого їх вилучення для інших потреб Захист земель від неспр...
18159. ЗЕМЕЛЬНЕ ПРАВО ЯК ГАЛУЗЬ ПРАВА 87.5 KB
  Лекція 1. ЗЕМЕЛЬНЕ ПРАВО ЯК ГАЛУЗЬ ПРАВА План: 1. Предмет земельного права. 2.Поняття земля земельна ділянка. 3. Методи і поняття земельного права. 4. Система земельного права. 5. Принципи земельного права. 6. Джерела земельного права. Питання для самоконтро
18160. РОЗВИТОК ЗЕМЕЛЬНО – ПРАВОВОГО РЕГУЛЮВАННЯ В УКРАЇНІ 82 KB
  Лекція 2. РОЗВИТОК ЗЕМЕЛЬНО – ПРАВОВОГО РЕГУЛЮВАННЯ В УКРАЇНІ План: 1.Часи аграрної реформи в Російській імперії середини XIX сторіччя. 2. Пореформений період другої половини XIX початку XX сторіччя. 3. Столипінська аграрна реформа в Росії. 4. Розвиток земельно