Esempio n. 1
0
        //------------------------------------------------------------------------------------------- Клин
        /// <summary>
        /// Клин от I0 до 255 размер текущий размер
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            k12   = Convert.ToInt32(textBox8.Text);
            gamma = Convert.ToDouble(textBox7.Text);
            nx    = Convert.ToInt32(textBox14.Text);                    // Текущий размер
            ny    = Convert.ToInt32(textBox15.Text);
            dx    = Convert.ToInt32(textBox20.Text);                    // Полосы по краям

            int nu = 255;                                               // Число уровней

            Form1.zArrayDescriptor[k12 - 1] = Model_Sinus.Intensity1(nu, nx, ny, dx, gamma);
            VisualRegImage(k12 - 1);

            // Close();
        }
Esempio n. 2
0
        /// <summary>
        /// Автоматическое определение клина
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button15_Click(object sender, EventArgs e)
        {
            int nx = 3096;
            int ny = 2160;


            int nx1 = nx + dx * 2;                                                  // Размер для изображения с добавленными полосами

            int kv = 16;                                                            //  Число градаций

            Form1.zArrayDescriptor[0] = Model_Sinus.Intensity1(255, nx, ny, dx, 1); // Идеальная интенсивностсть => 1
            VisualRegImage(0);
            TakePhoto12();
            VisualRegImage(1);
            DialogResult dialogResult = MessageBox.Show("Заданы границы X0, X1, X2, X3 ?", "Ограничение по размеру", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.No)
            {
                return;
            }

            Form1.Coords[] X = MainForm.GetCoordinates();

            Form1.zArrayDescriptor[6] = File_Change_Size.Change_rectangle(Form1.zArrayDescriptor[1], X);    // Ограничение по размеру 2 => 7
            Form1.zArrayDescriptor[6] = SumClass.Sum_zArrayY_ALL(Form1.zArrayDescriptor[6]);                // Суммирование по Y      7 => 7
            VisualRegImage(6);
            int nx2    = Form1.zArrayDescriptor[6].width;                                                   // Размер массива после ограничения
            int ny2    = Form1.zArrayDescriptor[6].height;
            int N_Line = ny2 / 2;                                                                           // Линия по центральной строке


            //---------------------------------------------------------------------------------------------- Идеальный клин без ввода с новыми размерами

            Form1.zArrayDescriptor[0] = Model_Sinus.Intensity1(255, nx2, ny2, dx, 1);
            Form1.zArrayDescriptor[1] = Minus100(Form1.zArrayDescriptor[0], 100);
            VisualRegImage(1);
            double[] am_Clin_Ideal = new double[nx2];                                                           // Идеальный клин от 0 до 255
            for (int i = 0; i < nx2; i++)
            {
                am_Clin_Ideal[i] = Form1.zArrayDescriptor[1].array[i, N_Line];
            }

            double[] am_Clin = new double[nx2];                                                                 // Отклик от идеального клина от 0 до 255
            for (int i = 0; i < nx2; i++)
            {
                am_Clin[i] = Form1.zArrayDescriptor[6].array[i, N_Line];
            }



            //---------------------------------------------------------------------------------------------- Черно белые полосы => 0
            Form1.zArrayDescriptor[0] = BW_Line(nx, ny, kv);     // Полосы с kv градациями
            VisualRegImage(0);
            TakePhoto12();                                       //---------------------------- Фото => 1
            MessageBox.Show("Ч/Б полосы введены");

            Form1.zArrayDescriptor[3] = File_Change_Size.Change_rectangle(Form1.zArrayDescriptor[1], X); //----------------- Ограничение по размеру => 2
            VisualRegImage(3);

            Form1.zArrayDescriptor[3] = SumClass.Sum_zArrayY_ALL(Form1.zArrayDescriptor[3]);
            Form1.zArrayDescriptor[4] = BW_Line_255(Form1.zArrayDescriptor[3], 210);                     // --------------Выше порога 255 ниже 0
            VisualRegImage(4);
            double[] am_BW = BW_Num(Form1.zArrayDescriptor[4], N_Line);                                  // размер новый после прямоугольного ограничения

            //----------------------------------------------------------------------------------------------    Определение нового клина

            double[] cl1 = NewClin(am_Clin, am_BW, am_Clin_Ideal);

            //----------------------------------------------------------------------------------------------Отображение нового клина
            ZArrayDescriptor cmpl = new ZArrayDescriptor(nx1, ny);

            double[] am = Clin(cl1, kv, nx);
            for (int i = 0; i < nx; i++)
            {
                for (int j = 0; j < ny; j++)
                {
                    cmpl.array[i + dx, j] = am[i];
                }                                                                                         // ----------------- Клин в рабочий массив
            }
            cmpl = Model_Sinus.Intens(255, 0, dx, cmpl);                                                  // Белая и черная полоса по краям
            Form1.zArrayDescriptor[7] = cmpl;                                                             // новый клин в 7 массив
            VisualRegImage(7);

            for (int i = 0; i < 16; i++)
            {
                cl[i] = cl1[i];
            }
        }