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

12 чел.

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

           }

       }

   }

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

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

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

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

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


 

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

85559. «Наши корни» (с использованием миниатюр В.Сухомлинского) 149.5 KB
  У кого-то дерево с глубокими корнями в этих семьях хранится память не только о бабушках и дедушках но и о прабабушках и прадедушках. Мама папа бабушка дедушка. В соседней комнате на диване сидят дедушка и бабушка. Маленькая Аленка играет на полу плюшевым медвежонком и смотрит как папа мама дедушка...
85560. Шевченко великий співець України 96.5 KB
  Шевченка записи пісень на твори поета. Шевченка На дошці запис Нам стануть у пригоді: діти зачитують ваші попередні знання; повідомлення наших Шевченкознавців ; торбинка запитань; безсмертні Шевченкові вірші твори та малюнки; знання вчителя; пісні на слова Т. Шевченка. Тоді темної ночі перед світанком у селі Моринцях на Звенигородщині у хаті Григорія Шевченка кріпака пана Енгельгарда блиснув єдиний на...
85561. ЦІКАВА КНИГА ПРИРОДИ В.СУХОМЛИНСЬКИЙ «СЕРГІЙКОВА КВІТКА» 46.5 KB
  Вчити дітей бачити і розкривати красу природи. Заохочувати дітей до творчості. Розвивати мовлення, мислення дітей. Сприяти розвитку мовного апарату, пам’яті, вміння концентрувати увагу, володіти голосом. Виховувати любов і шанобливе ставлення до природи рідного краю.
85562. Урок з позакласного читання «Усний журнал» 563 KB
  Розширювати уявлення про красу рідної природи; удосконалювати навички виразного читання; розвивати уяву, пам’ять, образне мислення, уміння узагальнювати, аналізувати прочитане; формувати вміння простежувати взаємозв’язок людини з природою; виховувати інтерес і бережливе ставлення до природи.
85563. Автоматизация системы управления запасами на шахте “Самсоновская-Западная” 784.5 KB
  Применение современных персональных микроЭВМ в качестве технического средства АРМ управленческого работника приводит одновременно с организацией децентрализованной системы обработки данных к интеграции информационной базы данных учета.
85564. Экономические и правовые аспекты страхования ЗАО «Страховая компания «Инкомстрах» 394.5 KB
  Страховая компания Инкомстрах есть страхование и перестрахование имущественных интересов физических и или юридических лиц резидентов и или нерезидентов Украины которые не противоречат действующему законодательству Украины связанных: со здоровьем трудоспособностью и дополнительной пенсией...
85565. РЕАЛИЗАЦИЯ ИНФОРМАЦИОННОЙ МОДЕЛИ БАЗЫ ДАННЫХ В СИСТЕМЕ СОЦИАЛЬНОЙ ЗАЩИТЫ ГОСУДАРСТВА 472 KB
  Финансовый контроль по своей экономической сути это функция управления которая включает совокупность наблюдений проверок по деятельности объекта управления с целью оценки обоснованности и эффективности принятия решений и результатов их выполнение.
85566. Создание программного обеспечения для автоматизации ассортимента продукции на МЧП «Инвикта» 1.5 MB
  Ассортимент является важным элементом деятельности предприятия. Создание информационной системы для определения оптимального ассортимента товаров позволит постоянно отслеживать ситуацию на рынке, оценить факторы, обеспечивающие успех фирмы, сделать максимально эффективными продажи товара.
85567. МЕТОДЫ ПЛАНИРОВАНИЯ ХОЗЯЙСТВЕННОЙ ДЕЯТЕЛЬНОСТИ ОАО «ТРЕСТ КРАСНОДОНШАХТОСТРОЙ» 698 KB
  Первый состоит в минимизации затрат при достижении заданного результата; второй заключается в максимизации результатов при заданных затратах ресурсах. Расчетноаналитические нормы разрабатываются на основе анализа техники технологии и организации производства в заданных или запроектированных условиях. Опытноэкспериментальные нормы устанавливаются на основе опытных или экспериментальных данных полученных в реально существующих условиях производства. Интегрированная автоматизированная система Современные персональные компьютеры...