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;

           }

       }

   }

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

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

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

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

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


 

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

42375. Адміністрування безпеки операційної системи WINDOWS 2k 479 KB
  С помощью утилиты NET. Выполнить исследование локальной сети с помощью утилиты NBTSTT программы PWLTOOLS. С помощью утилит User2sid и Sid2user определить перечень логинов пользователей на том же удаленном компьютере что и в пункте 4.] Выполнить тестирование компьютера указанного в пункте 4 с помощью программы DDoSPing.
42376. Програмні засоби для шифрування та приховування інформації 1.79 MB
  С помощью программы PGP выполните обмен зашифрованной информацией. Для этого необходимо: а с помощью утилиты PGPkeys создать ключевую пару подчиняясь следующему порядку: выполнить запуск Strt Пуск Progrms Программы PGP PGPkeys необходимо указать собственное имя Full nme и адрес электронной почты Emil ddress не забывая что именно эти данные будут ассоциированы программой с вашими ключами выбор типа ключа Key Pir Type: ключ RS действительно архаичнее и медленнее своего ретивого молодого собрата DiffieHellmn DSS однако...
42377. Використання M.EXCEL в розвязанні матричних ігор 437.5 KB
  Планується до випуску Кі варіанти конструкції нового товару. Виготовлення їх можливо за допомогою одного з альтернативних технологічних процесів Тj . Експерти оцінили споживчі властивості конструкції Кі , виготовленої за допомогою технологічного процесу Тj за десятибальною шкалою в аij балів. Конструкція, яка має більший бал якості, має також і більшу собівартість. Ресурси обмежені, тому менеджерам необхідно прийняти компромісне рішення. Обґрунтувати прийняте рішення.
42378. Работа с пакетом Microsoft Office (Word, Excel, Access, PowerPoint) 699.5 KB
  Для таких целей следует использовать команду меню Формат Абзац и в диалоговом окне установить необходимые отступы и интервалы. Установка первых строк производится с помощью команды меню Формат – Абзац или масштабной линейки. Изучите пункты меню панели инструментов и элементы окна. Рисунок 1 Рабочее окно программы Word Установите поля: левое – 25 см правое – 15 см верхнее и нижнее 2 см через меню Файл команду Параметры страницы.
42379. Текстовый процессор Word «Приемы и средства автоматизации разработки текстовых документов» 63 KB
  Формула задается как выражение в котором использованы: абсолютные ссылки на ячейки таблицы в виде списка 1; B5; E10 или блока 1:F10; ключевые слова для ссылки на блок ячеек: LEFT – ссылка на ячейки расположенные в строке левее ячейки с формулой; RIGHT – ссылка на ячейки расположенные в строке правее ячейки с формулой; BOVE – ссылка на ячейки расположенные в столбце выше ячейки с формулой; BELOW – ссылка на ячейки расположенные в столбце ниже ячейки с формулой; константычисла текст в двойных кавычках; закладки...
42380. Операционная система Windows XP: настройка операционной системы Windows, оформление Рабочего стола, настройка Проводника 148.5 KB
  Работа с архиватором WinZip: создание самораспаковывающегося и защищенного архива извлечение файлов из ZIPархива. Что такое многотомный архив Как добавить файл в архив Какие вы знаете архиваторы Их особенности для различных видов информации. ПРИЛОЖЕНИЕ В Работа с архиватором WinZip Запустите WinZip 8. Дайте команду File New rchive Файл Создать архив.
42381. Приемы и средства автоматизации разработки текстовых документов в Excel 62 KB
  Изучите основные понятия: Относительная ссылка указывает на ячейку основываясь на ее положении относительно ячейки в которой находится формула например на две строки выше. Относительная ссылка это изменяющийся при копировании и перемещении формулы адрес ячейки содержащий исходное данное. Абсолютная ссылка – это не изменяющийся при копировании и перемещении формулы адрес ячейки содержащих исходное данное. Заполните таблицу: При заполнении таблицы используйте: Выделите А1:Е1 выберите Формат Ячейки Выравнивание Объединение ячеек...
42382. Построение диаграмм с помощью мастера диаграмм 221 KB
  Требования к изученному материалу: уметь строить графики математических функций; строить диаграммы по экономическим задачам; уметь изменять тип параметры построенных диаграмм; уметь добавлять диапазон данных к построенной диаграмме; уметь добавлять легенды. В Excel существуют стандартные и нестандартные диаграммы. В следующем окне рисунок 2 появляется образец диаграммы. Далее подписать заголовки: название диаграммы – График квадратной функции; Ось Х – Х; Ось У – У; убрать линии сетки и подписи.
42383. Текстовый процессор Word «Шаблоны. Создание шаблона» 36.5 KB
  Создание шаблона Цель этой практической работы создать шаблон доверенности и затем оформить доверенность на основе созданного шаблона. Доверенность это документ выдаваемый организациейдоверителем физическому лицу поверенному на право выполнения от имени организациидоверителя указанных в доверенности действий. Формуляр доверенности включает в себя следующие реквизиты: наименование вида документа и его порядковый номер дата составления документа место составления документа текст подпись руководителя организациидоверителя В тексте...