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

11 чел.

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

           }

       }

   }

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

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

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

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

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


 

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

1985. Управление культурными процессами на кавказских минеральных водах в XIX начале XX веках 1.14 MB
  СТАНОВЛЕНИЕ РЕГИОНАЛЬНОЙ КУЛЬТУРНОЙ ПОЛИТИКИ НА КАВКАЗСКИХ МИНЕРАЛЬНЫХ ВОДАХ В ПЕРВОЙ ПОЛОВИНЕ XIX ВЕКА. ФОРМИРОВАНИЕ ОСНОВНЫХ НАПРАВЛЕНИЙ КУЛЬТУРНОЙ ПОЛИТИКИ НА КАВКАЗСКИХ МИНЕРАЛЬНЫХ ВОДАХ В ПЕРВОЙ ПОЛОВИНЕ XIX ВЕКА. РОЛЬ ОБЩЕСТВЕННЫХ ОРГАНИЗАЦИЙ КАК НОВЫХ СУБЪЕКТОВ КУЛЬТУРНОЙ ПОЛИТИКИ.
1986. Разработка биотехнологии вакцины чумной живой сухой со сниженным количеством человеко-доз в производственной упаковке (ампуле) 1.14 MB
  Современное состояние и перспективы совершенствования эффективности чумных вакцин. Пути совершенствования биологических показателей вакцины чумной живой на этапах сведения, разлива и лиофилизации бактериальной суспензии. Смыв бактериальной массы с поверхности агара с последующим приготовлением необходимой концентрации микробных клеток, разлив, лиофилизация вакцины. Изучение реактогенности различных образцов вакцины чумной живой сухой.
1987. Политический терроризм: детерминация и формы проявления 1.13 MB
  Политический терроризм: категориальный анализ. Политический терроризм и другие виды политического насилия: грани соотношения. Политический терроризм как форма этнического экстремизма. Основные направления преодоления политического терроризма.
1988. Жанр письмо вождю в тоталитарную эпоху 1.13 MB
  Письмо вождю в русле мировой и русской эпистолярной традиции. Жанровая специфика. Причины актуализации. Письмо вождю: жанровые разновидности. Образ адресанта.
1989. Миграционные процессы на Ставрополье во второй половине ХХ века: историко-культурный аспект. 1.11 MB
  Миграция как социально-демографический процесс. Теоретические аспекты миграционных процессов. Исторические традиции и новации в миграционных процессах на Ставрополье во второй половине ХХ века. Проблемы социокультурной жизни Ставрополья через призму миграций. Национально-культурное взаимодействие мигрантов с местным населением.
1990. Разраничение полномочий между органами государственной власти Российской Федерации и ее субъектов по предметам совместного ведения 1.12 MB
  Теоретические основы разграничения полномочий между органами государственной власти Российской Федерации и ее субъектов по предметам совместного ведения. Совершенствование конституционно-правовых основ разграничения полномочий между органами государственной власти Российской Федерации и ее субъектов по предметам совместного ведения.
1991. Эффективная работа SolidWorks 2005 36.34 MB
  Построение эскизов твердотельных моделей, добавление на эскиз геометрических взаимосвязей. Альтернативные методики простановки размеров и параметров элементов. Профессиональные инструменты моделирования.
1992. Русско-Французский билингвизм российского дворянства первой половины XIX века 1.13 MB
  Билингвизм как культурный феномен. Коммуникативные ситуации и речевой этикет в условиях русско-французского билингвизма русский дворян начала XIX века. Дворянское эпистолярное наследие первой половины XIX века с точки зрения билингвизма.
1993. Принципы доступности и коммуникативной направленности обучения студентов в условиях применения инфокоммуникационных технологий 1.13 MB
  Принципы как методологическая основа обучения студентов и педагогическая проблема. Создание и реализация дидактических информационных сред и технологических структур как условие доступности и коммуникативной направленности студентов.