Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2017, 23:27   #1
Seferus
Пользователь
 
Регистрация: 18.09.2010
Сообщений: 56
По умолчанию расписать одну строчку на 2 функции свап и сортировка (bublesort):

Помогите расписать одну строчку на 2 функции свап и сортировка (bublesort):
Код:
Array.Sort(new_arr);
Код:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace SolarizeImage
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Image img = Image.FromFile(@"C:\Users\Admin\Desktop\laba_Gamma\pol.jpg", false);
            Bitmap bit_map = new Bitmap(img);
            pic_original.Image = img;

            String user_median = textBox1.Text; // Получение введеного значения в компонент
            double user_median_value = Convert.ToDouble(user_median);

            if (user_median_value > 255) // Защита от дурака
            {
                user_median_value = 0.9;
            }
            else if (user_median_value > 1)
            {
                user_median_value = user_median_value / 255;
            }
            
            else if (user_median_value < 0)
            {
                user_median_value = 0.001;
            }
            
            pic_processed.Image = effect(bit_map, user_median_value);
        }


        private double[] get_values(double[] arr, int size) {

            double[] new_arr = new double[arr.Length];
            Array.Copy(arr, 0, new_arr, 0, arr.Length); // Клонирование массива 

            double[] result = new double[3];
            int median_index = (int)(size / 2); // Получение индекса медианного значения 
            Array.Sort(new_arr);
            result[0] = new_arr[0];  // Lmin
            result[1] = new_arr[median_index];// Median
            result[2] = new_arr[size-1];// Lmax
            return result;

        }


        private double calculate_gamma(double user_median, double image_median, double image_min, double image_max)
        {

            return Math.Log(image_median, ((user_median - image_min) / (image_max - image_min)));// Вычисление гаммы
        }


        private Bitmap effect(Bitmap Image, double user_median)
        {
            int Height = Image.Height;
            int Width = Image.Width;

            Bitmap result = Image;

            double[] pixels_values = new double[Height * Width];
            double[] values = new double[3];
            double min, max, median;

            for (int i = 0; i < Height; i++)
            {
                for (int j = 0; j < Width; j++)
                {
                    Color Pixel = Image.GetPixel(j, i);
                    Byte value = Pixel.R;
                    pixels_values[i * Width + j] = ((((double)(value)))/255); // Нормализация значения пикселя 
                }
            }
            
            values = get_values(pixels_values, Width * Height);
            min = values[0];
            median = values[1];
            max = values[2];
            double gamma = calculate_gamma(user_median, median, min, max);

            for (int i = 0; i < Width * Height; i++)
            {
                pixels_values[i] = (Math.Pow(pixels_values[i], gamma)) * 255; // Расчет результирующего значения пикселей
            }

            for (int i = 0; i < Height; i++)
            {
                for (int j = 0; j < Width; j++)
                {
                    Byte color = (Byte)(pixels_values[i * Width + j]);
                    Color new_pixel = Color.FromArgb(255, color, color, color);
                    result.SetPixel(j, i, new_pixel);
                }

            }

            return result;
        }


        private void Form1_Load(object sender, EventArgs e) //Загрузка изображения в компаненты
        {
            Image img = Image.FromFile(@"C:\Users\Admin\Desktop\laba_Gamma\pol.jpg", false);
            Bitmap bit_map = new Bitmap(img);
            pic_original.Image = img;
            pic_processed.Image = bit_map;
        }
    }
}
Seferus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать одну строчку с Delphi на C# krasav4ik Помощь студентам 2 21.12.2012 18:19
объяснить ОДНУ строчку ZigaZaga Общие вопросы C/C++ 9 29.03.2010 22:12
Спарсить одну строчку AndreyFreeman Работа с сетью в Delphi 8 25.09.2009 17:45
Нужно передалать одну строчку в коде (С++) Olya90 Помощь студентам 4 29.06.2009 21:57