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;

           }

       }

   }

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

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

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

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

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


 

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

54323. МЕТОД ПРОЕКТІВ ЯК ТЕХНОЛОГІЯ НАВЧАННЯ 257.5 KB
  Метод проектів це метод в основі якого лежить розвиток пізнавальних творчих навичок студентів умінь самостійно конструювати свої знання орієнтуватися в інформаційному просторі критично мислити. Мета застосування методу полягає у формуванні навичок ефективного використання різних джерел інформації при навчанні студентів за допомогою інноваційних педагогічних технологій якими передбачається самостійна індивідуальна чи групова дослідницькопошукова та творча діяльність студентів підвищення рівня комунікабельності. Завдання методу...
54324. З’єднання болтом і шпилькою 496 KB
  Оформлення завдання Завдання виконується на креслярському папері в олівці у відповідність з правилами ЕСКД. Креслення повинне мати основний напис. Діаметри крізних отворів
54325. МЕТОДИЧНІ РЕКОМЕНДАЦІЇ ДО СТВОРЕННЯ НАВЧАЛЬНОГО ПРОЕКТУ 146.5 KB
  АНАТОМІЯ НАВЧАЛЬНОГО ПРОЕКТУ. Планування реалізації проекту. Методика управління для неосяжної кількості найрізноманітніших проектів має єдину структуру у якій можна виділити такі групи процесів: ініціації прийняття рішення щодо запуску проекту зазвичай завершується складанням і затвердженням уставу проекту із визначенням його мети терміну виконання критеріїв успіху призначенням та чітким окресленням повноважень керівника проекту; планування безперервне визначення кращих...
54326. Особливості використання кейс-методу при викладанні інженерної графік 704.5 KB
  Наявність головної умови використання кейс-методу при викладанні будь–якої дисципліни – наявність протиріч, на основі яких формуються і формулюються проблемні ситуації, задачі, практичні завдання для обговорення та знаходження оптимального розвязання учнями або студентами.
54327. Методичні рекомендації щодо формування комунікативно-мовленнєвих умінь в учнів початкових класів на уроках української мови в російськомовних класах 367.5 KB
  Діти що приходять у 1 клас особливо російськомовні мають обмежений словниковий запас для спілкування українською мовою. Наприклад: ТВАРИНИ Ведмідь –медведь Лисиця – лисица Вовк – волк Заєць – заяц Білка – белка Їжак – ежик Мавпа – обезьяна Пташка – птичка Жаба – лягушка Ящірка ящерица Бобер бобёр Кажан – летучая мышь Паралельно з цією карткою діти працюють з карткою з малюнками на якій намальовані ті предмети які були записані в картці словами. Скажіть діти кого із названих членів сім'ї ви вдома називаєте не так Пропоную з...
54328. Метод проектів як основа творчого розвитку особистості 170.5 KB
  Практична теоретична пізнавальна значимість передбачуваних результатів наприклад доповідь у відповідні служби про демографічний стан даного регіону фактори що впливають на цей стан тенденції що просліджуються в розвитку даної проблеми; спільний з партнером по проекту випуск газети альманаху з репортажами з місця подій; охорона лісу в різних місцевостях план заходів і т. Структурування змістовної частини проекту із указівкою поетапних результатів. Але незалежно від типу проекту всі вони в означеній мірі неповторні та унікальні;...
54329. Групування, формули, адресація, імена комірок, авто заповнення в Microsoft Excel (MICROSOFT OFFICE 2010) 429 KB
  Мета: Навчитися обєднувати дані за природними групами, користуватися документом, в якому є групування, створювати в комірках формули для обчислення нових даних, копіювати дані та формули, призначати імена коміркам, користуватися автозаповненням.
54330. ПРОЕКТНА ДІЯЛЬНІСТЬ НА УРОКАХ ІНФОРМАТИКИ 239.5 KB
  Це з одного боку сукупність прийомів операцій оволодіння певною областю практичного або теоретичного знання тієї чи іншої діяльності. Цей результат можна побачити осмислити застосувати в реальній практичній діяльності. Саме тому на уроках інформатики корисно вводити елементи проектної діяльності. Провідні принципи такої діяльності: Основні вимоги до проекту Необхідно наявність соціально значущої задачі проблеми дослідної інформаційної практичної.
54331. Застосування методу проектів на уроках світової літератури 797.5 KB
  У сучасній школі можна виділити чотири основні напрями при яких ефективно застосовувати методи проектів: 1 проект як метод навчання на уроці; 2 проектні технології дистанційного навчання; 3 для формування дослідницьких навичок школярів у позаурочній роботі;4 як метод організації дослідницької діяльності вчителів. Метод проектів знаходить все більше поширення у системі освіти різних країн світу. Із історії виникнення методу проектів Метод проектів не є принципово новим у світовій педагогіці. Метод проектів – ефективна технологія навчання...